飞镖性能:数千种低级IO操作的最佳方法

时间:2020-09-16 20:44:54

标签: performance dart async-await io

我有一个关于Dart性能设计/架构的问题,我意识到可能没有明确的答案。

我正在Dart中实现一个Git实现,它需要快速(低延迟,高吞吐量),因为我将使用它来查询具有成千上万条记录的Git Pack(Pack =内部git将文件存储为其他文件的增量文件并经过zlib压缩的文件。

  • 大部分IO负载将是对一个或多个此类打包文件进行的数千次小型读取操作。

  • CPU负载将包括对数据进行解压缩,并将小块连接到较大的UInt8Lists中(大多数仍小于1KByte)

  • 其中一些操作可以并行化(解压缩,不相关对象的处理)。 等待IO时可能会发生一些处理。

我的困境如下。 我应该使用异步/等待来实现“所有”(包括所有低级别的IO操作和cpu受限操作)吗? 这会提高性能还是使将来的并行处理变得更容易? 还是会产生大量的间接费用,我是否应该使大多数低层操作同步,并在可能的情况下与Isolate进行高水平并行化?

我注意到有很多人指出“异步”具有传染性,并且现在我所有的函数名称中都慢慢带有“异步”,因此稍后使所有内容再次同步会非常昂贵。 这就是为什么我现在要做出明智的决定。

有什么想法吗?

0 个答案:

没有答案