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

嗷嗷叫的老马 CSDN会员 嗷嗷叫的老马 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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
...全文

相关推荐

多线程提高穷举速度,使用单元线程,VB6中微软官方多线程方案

就是ActiveX EXE工程里"工程属性"中的"每对象对应一个线程"那种模式. 稳定性肯定没问题,只是会有使用上的限制,比如某些非线程安全的控件无法使用,以及全局变量无法使用等. 代码中是使用两个线程执行大循环,使用时间是单线程时的一半.

嗷嗷叫的老马

用VB打造中国象棋AI:从棋盘建模到Alpha-Beta剪枝的完整实践

桌面应用开发中,博弈类程序一直是算法与工程结合的经典案例。中国象棋作为规则复杂的棋类,其AI实现涉及状态表示、搜索策略与局面评估等核心概念。VB(Visual Basic)虽然常被视为入门级语言,但其事件驱动模型与Windows API支持能力,足以搭建一套完整的象棋对弈系统。通过棋盘数组建模、着法生成器、极小极大搜索配合Alpha-Beta剪枝,以及子力与位置评估函数,开发者可以在普通硬件上实现数层搜索深度。利用迭代加深、历史启发式排序和开局库,能显著提升落子质量与响应速度。这类项目不仅适用于棋软开发,其

weixin_34236869

vb6多线程 可编译成本机代码 不使用activex EXE

vb6多线程 可编译成本机代码 不使用activex EXE

yk84

VB6 多线程案例,测试可用。

案例用的是2个网址通过XMLHTTP的方式同时下载获取源代码。

cityhl

VB6.0 多线程 实验成功

VB6.0 多线程 实验成功 VB6.0 多线程 实验成功 VB6.0 多线程 实验成功VB6.0 多线程 实验成功

dfhjc
评论 105
收藏 已收藏
分享
返回顶部
嗷嗷叫的老马 CSDN会员
API 1,488 成员 23,270 内容