【分享】VB6里面使用多线程提高穷举速度(VB6代码)
VB6里面使用多线程提高穷举速度
刚刚几个我论坛里的小同学在群里讨论已知位数密码穷举提速的方案,我也参与了一下.
我想了想,最简单的提速,就是真正的并行执行,即物理多线程,这需要至少两个CPU的硬件支持.
而我正好是双核CPU,于是就做了这个简单的例子(代码在后面下载).
代码没有多少,但却花了点时间调试.
对于多线程的调试技术,我还非常生疏,而且经常遇到IDE与编译后结果不一致的情况,很是烦人.
不过呢,终于是整好了.
程序要解决的一个假设题是从1开始,一个一个地跑到40000000(4千万),如何提高速度.
我的做法是,简单地将目标拆分为两部分,分别扔给两个线程去执行,这样速度当然就是一倍啦!
实际测试结果也确实是这样,双线程约8秒,单线程约16秒.而将代码放到虚拟机里测试的结果,却是双
线程慢于单线程(18.X秒与17.X秒,虚拟机中是单核).看来,在只能执行一个物理线程的硬件系统中,这种
穷举使用多线程,在CPU进行逻辑线程调度时消耗的时间那还真的不少.
由于手里没有支持超线程的CPU,所以没办法测试超线程功能是啥情况.不过从超线程原理来看,貌似
只是把线程的调度从软件上改成了硬件上,本质上还是只能同时执行一个物理线程,估计也差不多....有
支持超线程CPU的朋友帮忙测试一下吧:)
扯点题外话,其实物理并行处理,我觉得并不是CPU的强项....去年在软件开发大会上看到了NVIDIA的
CUDA技术演示,那才叫牛B,由于GPU本身物理结构上的优势,它可以轻松拥有上百个物理线程并行处理的能
力....可惜NVIDIA送的那套光碟放在陈辉家里忘带走了,还有CSDN的那个包包...呃,对,那个包包已经是
莫依的了...
不过呢......我的本本是INTEL的GMA3100.....与CUDA是无缘的了- -!
扯远了.....还是把代码先发上来吧,不然还没等到各位看完,我脑袋上估计都堆了很多块砖了= =|||
源代码在此下载:
点击下载此文件
BY 嗷嗷叫的老马
紫水晶工作室
http://www.m5home.com/
2009-07-04
刚刚几个我论坛里的小同学在群里讨论已知位数密码穷举提速的方案,我也参与了一下.
我想了想,最简单的提速,就是真正的并行执行,即物理多线程,这需要至少两个CPU的硬件支持.
而我正好是双核CPU,于是就做了这个简单的例子(代码在后面下载).
代码没有多少,但却花了点时间调试.
对于多线程的调试技术,我还非常生疏,而且经常遇到IDE与编译后结果不一致的情况,很是烦人.
不过呢,终于是整好了.
程序要解决的一个假设题是从1开始,一个一个地跑到40000000(4千万),如何提高速度.
我的做法是,简单地将目标拆分为两部分,分别扔给两个线程去执行,这样速度当然就是一倍啦!
实际测试结果也确实是这样,双线程约8秒,单线程约16秒.而将代码放到虚拟机里测试的结果,却是双
线程慢于单线程(18.X秒与17.X秒,虚拟机中是单核).看来,在只能执行一个物理线程的硬件系统中,这种
穷举使用多线程,在CPU进行逻辑线程调度时消耗的时间那还真的不少.
由于手里没有支持超线程的CPU,所以没办法测试超线程功能是啥情况.不过从超线程原理来看,貌似
只是把线程的调度从软件上改成了硬件上,本质上还是只能同时执行一个物理线程,估计也差不多....有
支持超线程CPU的朋友帮忙测试一下吧:)
扯点题外话,其实物理并行处理,我觉得并不是CPU的强项....去年在软件开发大会上看到了NVIDIA的
CUDA技术演示,那才叫牛B,由于GPU本身物理结构上的优势,它可以轻松拥有上百个物理线程并行处理的能
力....可惜NVIDIA送的那套光碟放在陈辉家里忘带走了,还有CSDN的那个包包...呃,对,那个包包已经是
莫依的了...
不过呢......我的本本是INTEL的GMA3100.....与CUDA是无缘的了- -!
扯远了.....还是把代码先发上来吧,不然还没等到各位看完,我脑袋上估计都堆了很多块砖了= =|||
源代码在此下载:
点击下载此文件
BY 嗷嗷叫的老马
紫水晶工作室
http://www.m5home.com/
2009-07-04
...全文
相关推荐
多线程提高穷举速度,使用单元线程,VB6中微软官方多线程方案
就是ActiveX EXE工程里"工程属性"中的"每对象对应一个线程"那种模式. 稳定性肯定没问题,只是会有使用上的限制,比如某些非线程安全的控件无法使用,以及全局变量无法使用等. 代码中是使用两个线程执行大循环,使用时间是单线程时的一半.
用VB打造中国象棋AI:从棋盘建模到Alpha-Beta剪枝的完整实践
桌面应用开发中,博弈类程序一直是算法与工程结合的经典案例。中国象棋作为规则复杂的棋类,其AI实现涉及状态表示、搜索策略与局面评估等核心概念。VB(Visual Basic)虽然常被视为入门级语言,但其事件驱动模型与Windows API支持能力,足以搭建一套完整的象棋对弈系统。通过棋盘数组建模、着法生成器、极小极大搜索配合Alpha-Beta剪枝,以及子力与位置评估函数,开发者可以在普通硬件上实现数层搜索深度。利用迭代加深、历史启发式排序和开局库,能显著提升落子质量与响应速度。这类项目不仅适用于棋软开发,其
vb6多线程 可编译成本机代码 不使用activex EXE
vb6多线程 可编译成本机代码 不使用activex EXE
VB6 多线程案例,测试可用。
案例用的是2个网址通过XMLHTTP的方式同时下载获取源代码。
VB6.0 多线程 实验成功
VB6.0 多线程 实验成功 VB6.0 多线程 实验成功 VB6.0 多线程 实验成功VB6.0 多线程 实验成功


API
