多线程程序的效率问题! 本人最近做了一个数据处理的多线程程序,即用同一段处理代码处理不同的数据(SIMD),数据处理代码写成了一个线程函数,用这个线程函数启动了若个个处理线程,主要的运算量都在数据处理部分,为了提高程序运行效率,按照单线程程序的优化思路对数据处理部分的代码进行了优化(理论上的乘法、加法数量有了大幅减少),但放到多线程架构中去时执行速度反而变慢了!请各位帮忙分析一下原因吧!万分感谢中! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只要你的任务没有那种可以被非CPU处理的任务,你放多线程中必然会减速。多线程之所以高效是因为一部分操作在处理时不需要CPU,因此CPU可以做别的事情。如果你的操作都在做CPU操作(也就是数据处理),放在多线程不会任何加分,只会增加CPU在不同线程间切换的开销 线程的数量越多,不一定速度越快。首先线程直接的轮转,需要占用cpu的资源,和恢复线程的数据栈内容。多线程建议在同一时刻,需要有多种数据展现形式的时候使用,如果只是单一的数据,单一的展现形式,建议只在主线程当中处理 如果数据之间没有相关性,在多核的情况下可以考虑用多线程处理,可以参考一下OpenMP的实现方法;如果是单核就没有必要了,反而会弄巧成拙的 CreateFile打开文件之后,如何得到当前文件写位置!没有GetFilePointer函数啊! 不同DLL/EXE之间内存分配与释放的问题 问一个屏幕截图的问题 怎么保存一个TXT文件?? 那位大侠能告诉我ActiveSkin与ADO怎么一块用? 请问IE浏览器里的文本字段读取问题。。 如何得到硬盘出厂时的序列号? W32下创建窗口失败求原因 MFC 贪吃蛇(有源码) 软件即将发布,欢迎取分! 请教一个Image2Lcd问题 动态链接库dll都能被加载吗?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货