单核下,多线程搜索文件比单线程真的好吗?? 单核下,多线程搜索文件比单线程真的好吗???一个cpu,一个线程情况下一个个的搜索文件一个cpu, 多线程情况下来回切换,也是搜索文件,比单线程好像没什么优势,还要拉回切换等代价是吗??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然多线程要好。因为CPU常常在空闲,经常等这个等那个,多线程正好可以填饱这个空闲。比如读文件--->内存时,CPU就是空闲的,这时候可以处理已经读进内存的数据。 搜索文件,应该用一个线程搜索就好了。Windows自己的文件搜索,就是这么做的。(Linux应该也是这么做的)用多线程,简直就是在开玩笑(也可能是为了想练习写多线程的程序吧)个人看法,仅供参考!(任何后果,请自负) 这个有道理。另外:线程切换开销是肯定存在的,但那个是在你“搜索过程”中,所有调度单元参与切换的开销。所以如果要说,自己的进程多开几个线程,被CPU调度的概率就会大些(在一定范围内,分子分母增加相同值,分值增大)。 不要以为单核的cpu就没有并行的单元了,事实上单核的cpu里面还是有很多并行的地方的,可以参考一下学校学的计算机体系结构,但是针对楼主的问题,我不敢说到底是多线程好,还是单线程好,这肯定中间有一个临界点,楼主可以考虑两种解决方案,看一下具体的测试效果如何。。 补充一点。这个还是说的比较有道理的,内存读写的时候,可能还有其他单独的处理器比如说DMA啊等等,这些东西是不需要CPU的。 没必要用递归。一个线程的搜索,可以用非递归先序遍历搜索,也可以用层次遍历(队列的容易些)。Windows应该是用非递归先序遍历搜索(反正不是网上那种用栈的非递归,那种效率太差,可能还不如递归) 多线程可以获得更多的CPU时间片 不好说,搜索文件费时的并不是CPU,而是磁盘操作,CPU就算有并行能力又怎么样,磁盘操作的有并行能力吗?我觉得就搜索文件这个应用而言,多线程应该不会比单线程快。 在单CPU的情况下使用多线程系统开销会更大.最好用单线程. 应该多线程快。设计到I/O操作 磁盘读写 等慢操作的时候,CPU会休息下来。如果计算 for(int i=0;i!=1000000;++i);这样的纯CPU运算 肯定单线程快 不想工作了,想好好休息休息,正在犹豫中 bmp中提取字符串 请问大侠们LLDP在哪个RFC里定义的? 高分求基于snort网络入侵检测源码 Lib库引用问题 请教各位大侠,哪里有Windows API 使用的详细说明的电子书供下载或纸张书呢? 有关ClistView 如何提高VS2010编译的非托管C++应用程序的运行速度 怎样得到控件相对位置? MFC DLL 如何在DLL中响应主框架菜单消息 请问怎么判断一个点是否在一个三角形的外接圆内 一段代码,看不懂,麻烦高手给解释解释
因为CPU常常在空闲,经常等这个等那个,多线程正好可以填饱这个空闲。比如读文件--->内存时,CPU就是空闲的,这时候可以处理已经读进内存的数据。
(任何后果,请自负)
这个有道理。
另外:线程切换开销是肯定存在的,但那个是在你“搜索过程”中,所有调度单元参与切换的开销。所以如果要说,自己的进程多开几个线程,被CPU调度的概率就会大些(在一定范围内,分子分母增加相同值,分值增大)。
这个还是说的比较有道理的,内存读写的时候,可能还有其他单独的处理器比如说DMA啊等等,这些东西是不需要CPU的。
设计到I/O操作 磁盘读写 等慢操作的时候,CPU会休息下来。
如果计算 for(int i=0;i!=1000000;++i);这样的纯CPU运算 肯定单线程快