C#I / O与C I / O.

时间:2015-03-20 20:18:52

标签: c# c++ c io

我有一个C#程序需要从平面文本文件中读取数十亿到数亿条记录。将ap / invoke调用用于处理单独线程上的所有文件输入的非托管C / C ++ dll,或者它在性能上的收益是微不足道的,这样才能获得显着的性能提升,这样才能更好地处理我在C#中的文件IO?

2 个答案:

答案 0 :(得分:1)

使用C / C ++ dll可能没有显着的性能提升。 C#在具有高效JIT编译器的环境中运行,因此我的猜测是代码性能受到大约100 MB / s的硬盘读取速度的限制。当然,如果您有SSD,您的里程可能会有所不同。

请注意,如果一条记录是1000字节,你正在读取1亿条记录,这意味着100千兆字节。由于硬盘驱动器的速度很慢,读取需要1000秒,即超过15分钟。

答案 1 :(得分:1)

因为CPU绑定代码和IO绑定请求之间的差异程度,所以通过在本机C中编写代码来节省的时间将是收益的百分之几。

您唯一能看到具有单独的本机功能的好处是当执行的实际指令是瓶颈时。例如,在RAM中处理大量数字或计算3D图形的像素。

在使用IO时,不值得花时间尝试它。