那快测试一下吧,想知道超线程与真正的物理多线程到底有多大差别:)现在就是对于多线程程序的调试经验一点都没有,整得头晕呀......多线程逻辑与单线程逻辑很多地方都有区别,还极不习惯,要好好研究一下....什么是真多线程?我确实还不知道有"伪多线程"与"真多线程"这种东西存在,麻烦扫个盲吧... 不过,据我所知,这种线程叫单元模型线程,又不是VB6的,是COM的标准之一,VB6支持而已,又关VB6啥事了.....我晕.把那两个对象Set XX = Nothing后单元线程才会释放....你可以写在计算完成的判断里,就可以看见线程数减少了.//多谢大家捧场.不过............我靠了,好象没有一个人比我的机器慢啊,我郁闷!!!另外,那个"版主修改",应该是错别字,楼主修改才对吧.
好像用Private Declare Function SetProcessAffinityMask Lib "kernel32.dll" (ByVal hProcess As Long, ByVal dwProcessAffinityMask As Long) As Long函数吧.
把 Process 换成 Thread
计算机:Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz 2.33 GHz 双线程:4266 ms 单线程:8344 ms
不过,据我所知,这种线程叫单元模型线程,又不是VB6的,是COM的标准之一,VB6支持而已,又关VB6啥事了.....我晕.把那两个对象Set XX = Nothing后单元线程才会释放....你可以写在计算完成的判断里,就可以看见线程数减少了.//多谢大家捧场.不过............我靠了,好象没有一个人比我的机器慢啊,我郁闷!!!另外,那个"版主修改",应该是错别字,楼主修改才对吧.
把 Process 换成 Thread
双线程:4266 ms
单线程:8344 ms
双线程:4016
单线程:8234
老马什么时候当版主了?恭喜恭喜
否则影响生产!还有,之前不是曾听说过你是 API 的版主吗?
6672
11360老马多进程测试结果
5734
11796老马牛X
2 Visual Basic 6 的运行效率非常低下。我写过一个算圆周率的程序,简单用VB.NET升级向导编译了下,速度比VB6快了6倍多。所以在性能优先的场合,使用更快速并且支持MT的VB.NET才是最佳选择。最后我在我的双PIII 550上测试了下lz的程序。双线程平均CPU占用在75%左右,我觉得可能是同步的开销太大了,损失了不少效率。
在我的机器上测试的结果:
机器配置:
'------------------------------
项目 数据
操作系统 Microsoft Windows XP Professional
操作系统版本升级(SP) Service Pack 3
日期/时间 2009-07-11 / 15:53
CPU 类型 DualCore Intel Core 2 Duo E8200, 2666 MHz (8 x 333)
主板名称 Dell OptiPlex 755
主板芯片组 Intel Bearlake Q35
系统内存 2016 MB (DDR2-667 DDR2 SDRAM)
DMI 系统产品 OptiPlex 755
DMI 主板制造商 Dell Inc.
'------------------------------------
单线程:6500ms
双线程:3312ms
MSDN上说:
通过对每个单元进行属性和方法调用的序列化,自动化可以防止重入,除非代码自己放弃了对处理器的控制。可导致放弃对处理器的控制的代码有:
1 调用 DoEvents。
2 调用其它线程的对象的方法或属性,或另一个进程的对象的属性或方法。
3 产生需要由另一个线程或另一个进程处理的事件。
4 从一个方法内调用一个交叉线程或交叉进程方法。
5 显示窗体。 如果希望两个成员函数能够安全地同时执行,除非在编写对象的代码时必须进行特殊的处理,否则在代码中不要放弃对处理器的控制权。
多线程:5020
不过,单线程时CPU占用接近50%,多线程时CPU占用接近100%了……
单线程平均 10.7秒,cpu占有率52%左右
哪里有多进程?
不过即使如此,也有不少的损失,比如,ActiveX EXE里面无法使用MDI窗体,而且不少控件并非线程安全,不能在多线程工程里工作等..........但是这些可以利用标准EXE来协助解决,而ActiveX EXE在MSDN里貌似就是作为组件服务器来使用的,这样的话就会有两个进程;一般来说不是我这种带界面的用法.当然,除非是受到"绿色软件"严重影响或是不写商业软件的人,才会非常在意"是否一个单一文件"或"是否单一进程"之类的事....我的客户还好对这些没有特殊的要求,他们只要求实现功能,然后我只要求收到钱就OK了:)
学习
双核 T5500 1.6G HP
xp sp3双线程:第一次 5900 第二次 6409 第三次 6334
单线程:12438ms我试一下你说的方法,绑定到指定的核