异步文件IO方法如何用于Node.js中的本地文件?

时间:2013-06-12 07:22:59

标签: javascript node.js libevent reactor

Node的所有文件系统IO操作都有异步/同步版本,但我想知道:Node.js中的异步文件IO如何在本地文件上进行操作?我本人正在使用libevent,它使用反应器模式,比如Node,但是我读了using evented IO on local files is pointless,因为它们总是是可读写的,因此它们将被操作瞬间。

如果是这样,这些方法之间有什么区别,至少对于本地文件?

1 个答案:

答案 0 :(得分:2)

请查看“understanding node.js io loop”文章中的“I / O费用”表。本地文件IO 即时。在内部,它使用阻塞文件操作和libuv线程池在异步文件api不可用的系统(Linux)上实现,并在可用时使用内核级异步调用(例如,Windows上为IOCP)。

我还没有在不同的系统上看到同步vs异步文件io的基准测试,但是值得知道线程池调度does add some penalty和通常的池大小对应于CPU的数量,这对于cpu绑定的异步任务有好处但是对于异步文件IO仿真可能不是最佳的。

我的猜测是,与同步版本相比,平均即使基于线程池的异步FS也会导致更好的服务器延迟/响应能力,尤其是在大文件上。