VB6里面使用多线程提高穷举速度(VB6代码)

【分享】VB6里面使用多线程提高穷举速度(VB6代码)
VB6里面使用多线程提高穷举速度

  刚刚几个我论坛里的小同学在群里讨论已知位数密码穷举提速的方案,我也参与了一下.

我想了想,最简单的提速,就是真正的并行执行,即物理多线程,这需要至少两个CPU的硬件支持.

而我正好是双核CPU,于是就做了这个简单的例子(代码在后面下载).

  代码没有多少,但却花了点时间调试.

  对于多线程的调试技术,我还非常生疏,而且经常遇到IDE与编译后结果不一致的情况,很是烦人.

  不过呢,终于是整好了.

  程序要解决的一个假设题是从1开始,一个一个地跑到40000000(4千万),如何提高速度.

  我的做法是,简单地将目标拆分为两部分,分别扔给两个线程去执行,这样速度当然就是一倍啦!

  实际测试结果也确实是这样,双线程约8秒,单线程约16秒.而将代码放到虚拟机里测试的结果,却是双

线程慢于单线程(18.X秒与17.X秒,虚拟机中是单核).看来,在只能执行一个物理线程的硬件系统中,这种

穷举使用多线程,在CPU进行逻辑线程调度时消耗的时间那还真的不少.

  由于手里没有支持超线程的CPU,所以没办法测试超线程功能是啥情况.不过从超线程原理来看,貌似

只是把线程的调度从软件上改成了硬件上,本质上还是只能同时执行一个物理线程,估计也差不多....有

支持超线程CPU的朋友帮忙测试一下吧:)

  扯点题外话,其实物理并行处理,我觉得并不是CPU的强项....去年在软件开发大会上看到了NVIDIA的

CUDA技术演示,那才叫牛B,由于GPU本身物理结构上的优势,它可以轻松拥有上百个物理线程并行处理的能

力....可惜NVIDIA送的那套光碟放在陈辉家里忘带走了,还有****的那个包包...呃,对,那个包包已经是

莫依的了...

  不过呢......我的本本是INTEL的GMA3100.....与CUDA是无缘的了- -!

  扯远了.....还是把代码先发上来吧,不然还没等到各位看完,我脑袋上估计都堆了很多块砖了= =|||

  源代码在此下载:

  点击下载此文件

  BY 嗷嗷叫的老马

  紫水晶工作室
  http://www.m5home.com/
  2009-07-04

------解决方案--------------------
先顶下小马.....
------解决方案--------------------
学习并接分
------解决方案--------------------
我也来顶一下小马哥....
------解决方案--------------------
试试,貌似我的电脑比搂主的高点,双线程约7秒,单线程越为14秒
------解决方案--------------------
给老马捧场!
------解决方案--------------------
Mark
------解决方案--------------------
给小马捧场
------解决方案--------------------
这个多线程的,我一定要弄明白,我实验室正好有一台双至强的超线程机器,上班了测试一下

突然觉得我以后要学习多线程编程了,因为我的计算量实在太大了。
------解决方案--------------------
捧场 & 学习~~
------解决方案--------------------
1 多核编程需要有多核并行算法
2 需要亲自动手进行调试
------解决方案--------------------
伪多线程吧......
VB的多线程!!!哎...失望....

------解决方案--------------------
探讨
给老马捧场!

------解决方案--------------------
老马,当版主了还郁闷啥呢~~~~~~~~

------解决方案--------------------
给老马捧场!
------解决方案--------------------
收藏了.
------解决方案--------------------
好东西。
------解决方案--------------------
刚才测试了十次,平均双6.5秒单13.8秒!
我打开任务管理器的时候看了一下(选择显示“线程数”的列)
双线程执行完毕后,线程并没有关闭!
------解决方案--------------------
老马当版主了,散分吧
------解决方案--------------------
别用来做病毒软件啊
------解决方案--------------------
henhao ......
------解决方案--------------------