【求助】为什么我用多线程反而速度变慢了
c语言吧
全部回复
仅看楼主
level 9
jxdz232601 楼主
要实现功能:读取24个文件里面的内容,存入一个hash表中。
一开始使用单线程方式,实现功能用了3秒。
后来我用多线程模式,创建了24个线程,存入的代码用了互斥锁,最后用了pthread_join()等待24个线程结束,结果实现功能用了9秒!!!!
我的电脑的CPU是多核的,理论上应该速度至少快1倍才对吧。
2016年07月06日 08点07分 1
level 14
规模太小了,线程切换比处理用的时间都多[汗]
2016年07月06日 09点07分 2
也就说,假如我只用2-3个线程,说不定速度反而更快?
2016年07月06日 09点07分
level 10
4核的话4个线程最快,然而并不会快上4倍什么的,线程同步要时间,访问存储器要时间,反正多线程不一定是好事
2016年07月06日 09点07分 3
我测试了一下,时间都消耗在互斥锁上了,在我这个使用场景下,即便是开2个线程,也比单线程慢。
2016年07月06日 10点07分
level 14
[阴险]文件数量加100倍再看看呢。
2016年07月06日 11点07分 4
level 11
互斥锁耗时
2016年07月07日 00点07分 5
level 1
显然这个任务是IO密集型的
2016年07月07日 13点07分 7
level 11
哪里有这种乱用的哦?你居然开24个线程,这不是找死吗?一般处理器核心数个线程或者*2就够了。你这个就是太多了![冷]
2016年07月07日 14点07分 8
1