原帖由 阿摩 于 2008-12-29 14:01 发表
没有IO操作的纯计算算法,线程数量和核心数相同效率比较高吧,如果线程间没有锁,cpu利用率应该是100%,而且线程之间的上下文切换开销也会比1.5倍线程数方式的少.
原帖由 lionking80 于 2008-12-29 21:01 发表
xeon 3350 oc 3.6G 904
PD820 默认2.8G 171
PhenomX4 9750 默认2.4G 455
测试了7种U{lol:]
原帖由 japhsoncross 于 2008-12-29 14:29 发表
上下文切换的开销确实存在,在单核CPU的时候尤其明显。
在开发的时候我考虑了两种多线程的方式,在程序中可以看成有0-255个数据段,第一次采用的方法是如果是双核,则两个线程分头执行一个从0开始递增,一个从1 ...
原帖由 阿摩 于 2008-12-29 21:23 发表
你的程序试了一下.
选不同的线程数,计算的总数据量是否相同?
线程数为1时,这时是否没有用于发射的线程?
发现一个问题,当设置线程数量等于cpu核心数时,得分很低,而这时cpu的利用率是满载,最后计算完成时,cpu ...
原帖由 japhsoncross 于 2008-12-29 21:38 发表
呵呵, 你看的很仔细哦, 在线程数量为1的时候, 就只有一个线程, 早期的版本并没有使用这个办法, 导致在单核CPU上成绩特别差.
运算量完全没有变化.
其实Windows看到CPU占用率, 应该是从系统的CPU时间统计的, 和物 ...
原帖由 阿摩 于 2008-12-29 21:52 发表
如果4核设2线程占75%,那说明程序的发射线程可以优化.我不清楚你的发射线程的同步机制是怎么样的,根据我的经验,一般情况下,加个sleep(1),该线程的CPU占用率一般都可以降到接近0%.
原帖由 japhsoncross 于 2008-12-29 22:12 发表
刚刚测试了一下, 用Sleep(1)确实将发射线程的占用率降低到接近0%, 很感谢哦:)
不过这里还有一个问题, 因为Sleep(1)就意味着需要等待1毫秒才能重新检查当前线程的情况.
那么从目前的情况看, 现在的CPU当然都不足 ...
原帖由 japhsoncross 于 2008-12-29 22:51 发表
嗯, 有道理, 可以用事件的方式来做. 不过这样改动会比较大, 我来试试看.
这个程序共有256个任务, 负荷的差别最大达到10倍以上.
原帖由 reveangel 于 2008-12-30 21:32 发表
file://///tsclient/C/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/%E6%9C%AA%E6%A0%87%E9%A2%98-1.jpg
IBM 3850M2 4UX4core 2072 频率忘了 明天补上
原帖由 reveangel 于 2008-12-30 21:32 发表
file://///tsclient/C/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/%E6%9C%AA%E6%A0%87%E9%A2%98-1.jpg
IBM 3850M2 4UX4core 2072 频率忘了 明天补上
| 欢迎光临 POPPUR爱换 (https://we.poppur.com/) | Powered by Discuz! X3.4 |