我编写了一个程序,它读取 WAV 文件并收集各种数据,然后进行某些计算并输出我需要的任何有用信息(终点是语音鉴别器)。对于单独的类对象中的每个文件,这一切都是单独发生的,每个文件只需要一个不同的输入字符串,所以我想我可以很容易地线程化应用程序,我可以让它运行速度快四倍左右。
我已经这样做了,它似乎工作得很好。但是,当我开始计算应用程序(线程与非线程)时,我在一分钟内只获得了大约 3 秒的时间来处理约 3600 个文件。我对此的最佳猜测是文件 I/O,我会看到所有测试的实现都有更大的改进,但这不是我特别感兴趣的。
在 Win7 上打开任务管理器后,两个版本的应用程序在我的 i3 机器上的所有四个(虚拟)内核上都显示出类似的活动,然后在完成时全部降至最低。
所以我的问题是:c# 编译器,尤其是 Visual Studio,是否已经针对多核进行了优化?如果没有,我是否错过了一些基本的东西?