此示例code在四核处理器上比较串行方法和线程方法。代码只使用GetPixel()来读取4个图像中的所有像素。 我发现速度提高了大约65%,为什么它不等于75%,因为我有4个核心并且所有这些都被充分利用了?
P.S:
您是否可以检查代码,因为我没有执行任何I / O,并且机器上没有其他进程正常工作(正常的Windows进程)
答案 0 :(得分:4)
它可以是任何数量的东西。想到一对夫妇
答案 1 :(得分:4)
答案 2 :(得分:2)
很可能它必须与某些数据结构或文件中的其他线程竞争,这样就不会100%并行执行。
例如,如果您要在四核上以4路并行方式运行从网站下载网页类型的操作,并且服务器一次只允许从同一IP地址进行1次并发下载,你根本不会获得任何加速。
此外,还有一些与启动线程并维护它们相关的开销,因此当你开始并行时你不会得到完整的核心用法,尽管在这种情况下它很可能不是一个重要的因素。
答案 3 :(得分:2)
线程有开销,并不是所有东西都可以并行运行。
答案 4 :(得分:1)
因为还有其他因素需要考虑。像内存和I / O带宽/争用,线程上下文切换开销等。
答案 5 :(得分:1)
总的来说,从我的并行编程经验来看,如果你的经过时间少了65%,那就非常好了。