求问本地异步读文件的效率问题?
发布于 10 年前 作者 ycczkl 4801 次浏览 最后一次编辑是 8 年前 来自 问答

当用ajax发送多个post请求时,总时间取决于最慢的那个请求。 但当在本地异步读多个文件的时候,总时间还是取决于最慢的那个吗? 我在想在底层异步读多个文件会导致时间增长,并不会比并行读文件效率高多少,不知道实际情况应该怎么分析?

15 回复

本地异步读多个文件, 应该是用parallel同时读取多个文件吧。那还是最慢的那个返回,才能进行下面的。

@leapon 和并行读多个文件那个效率高呢

@ycczkl 咱们说的是一个事。都是并行读。

@leapon 说错了。。和同步读比较呢?

@ycczkl 同步读的话,读一个文件的时候不能读另一个文件。多个文件是顺序读的,那就比异步平行读慢多了。

@leapon 我懂,但是从底层来讲同时读多个文件,总速度会变慢的,因为i/o吞吐量是一定的。

@ycczkl 读取文件要考虑磁盘 IOPS 限制的时候,你应该在读取相对较大的文件。这种情况同步读或许会比异步读快一点,但用户体验会很差。同步读的时候,node就不能响应web request,用户感觉是web server freezes。异步读大文件,node可以返回文件处理的进度,用户感觉web server还是在响应的。

@leapon 恩对,谢啦

@ycczkl 要读大文件的是个什么场景呢?

读大文件用流来处理?

@songqinghehe 对,用流处理。 我的意思是在本地异步同时读多个大文件速度不会比同步读快。

@alsotang bigdata课上要读bloomberg上的交易数据然后进行分析,每个文件2个G。 我用node搞的,突然想到了这个问题。我知道其实node干这种活儿不是最适合的~

异步或者同步都是上层的,底层调用都是open read,我认为不存在哪个速度快慢的问题

@dayuoba 恩对 谢谢

@dayuoba 这个该如何理解?异步和同步在读取文件时就没区别了?

回到顶部