在Node.js中pipe理时间的最佳方式是什么?

哪个是pipe理时间和实时事件的最佳方式?

我正在用Node.js实现一个小型的多人RPG游戏。 我有很多NPC,每3或4秒移动一次,所以我需要更新它们。

解决schemeA:每个NPC使用一个setTimeout 。 如果我有数百个NPC,我会创build定时器。 它更简单,但效率不是很低?

解决schemeB:对所有NPC使用一个setTimeout 。 每次我们通过计算NPC移动之前剩余的最小时间来调用下一次超时。 所以我们必须使用更复杂的代码,但是我们只有一个setTimeout

有更好的方法吗?

正如相关的问题所说, setTimeout是便宜的。 但是,这不是免费的。

你可以像memcached一样使用一个setTimeout 。 它有一个单一的大阵。 每秒钟,它检查这个数组的第一个项目(或最后一个),看看是否有需要完成的事情。 如果有,就这样做。 然后,删除该项目。 冲洗并重复。

这是实施背后的基本思想。 通过思考空桶或类似的东西,你可能会获得更好的性能,但是一个简单的实现应该是相当高性能的。