|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
从24楼开始,有对编译器性能的简单分析和重要结论。见附件2
这里只贴我的结论,详情自己看后帖吧 哪怕是 j = j + 1 这么简单的事情,C++不一定比VB快,汇编语句不一定比C++语句快
这几天闲着无聊,试用了一下Ruby脚本语言,发现它的.sort方法速度很快,嗯,比我写过最快的VBA排序代码都要快
心中不服,觉得编译好的方法 跟 VBA 这种解释型语言比速度不公平
于是直接把自己的VBA代码在VB2010编译出来,结果就比Ruby的.sort方法快一倍以上了,哈哈哈!!!
四种排序方法的速度对比,测试数据是104万个四字符长度的字符串
Excel排序直接用 range.sort方法,耗时大约 18秒
VBA排序用我自己写的快速排序,耗时大约7.5秒
Ruby语言直接用 .sort 方法,耗时大约4.4秒
VB用同样的VBA代码,编译成DOS窗口运行的.exe,耗时大约2.0秒,打开所有优化选项之后,1.6秒
也就是说,光是把VBA代码编译出来,速度就快了4到5倍了,看来某些运行时间长的程序,还是考虑一下编译出来运行为好,反正VisualStudio Express又不要钱。
编译器免费版的下载地址
http://www.microsoft.com/express/Downloads/
附件是编译好的程序和源代码,VB程序DOS窗口直接运行,Ruby脚本则需要安装Ruby语言,编辑 rubysort.rb 即可找到下载地址
VB, Ruby 都是读取 tosort.txt ,然后把排序结果放在 sorted.txt
btw:这个链接有如何在VB编译一个类库,VBA可以引用这个DLL的方法。
http://club.excelhome.net/thread-740159-1-1.html
[ 本帖最后由 灰袍法师 于 2011-7-10 23:21 编辑 ] |
评分
-
2
查看全部评分
-
|