config.yml let you tune the trade-off between smoothness and tick time:
/nme reload, no restart needed.
activation-range
The big one. An NPC with no player within this many blocks of its home is skipped entirely, at the cost of a single distance check. Measured from the home rather than the NPC itself, so it stays correct while a wandering NPC roams. Set it comfortably above the furthest an NPC needs to notice you: following reaches 16 blocks, and wandering or chasing NPCs also range out to their own radius.0 turns the optimisation off and ticks every NPC.
behaviour-interval
How often an NPC re-decides where to walk, in ticks. The walking itself stays smooth between decisions, so raising this reduces decisions per second, not the smoothness of the movement.look-interval
How often heads turn, in ticks.1 is every tick and smoothest; 2 is usually indistinguishable and halves the work. Above about 4, head turns start to look steppy.
What it’s worth
Measured with 300 wandering, look-enabled NPCs in loaded chunks (Paper 26.2, server tick time, lower is better; about 0.9 ms of each figure is the NPC entities’ own vanilla cost, which no plugin can remove):
NPCs nobody is near cost roughly nothing. Even with all 300 active at once, the load stays modest.

