我有一个 C# 程序,需要从平面文本文件中读取数千万到数亿条记录。使用对非托管 C/C++ dll 的 p/invoke 调用来处理单独线程上的所有文件输入是否会带来显着的性能增益,或者性能增益是否微不足道,因此最好只处理我的文件 IO 在 C# 中?
最佳答案
使用 C/C++ dll 可能不会显着提高性能。 C# 运行在具有相当高效的 JIT 编译器的环境中,因此我的猜测是代码性能受到大约 100 MB/s 的硬盘读取速度的限制。当然,如果您有 SSD,您的情况可能会有所不同。
请注意,如果一条记录是例如1000 字节,您正在读取 1 亿条记录,这意味着 100 GB。由于硬盘速度较慢,读取需要1000秒,即超过15分钟。
关于C# I/O 与 C I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29175156/