有编译VBScript的经验吗?
我有一个自定义的2000行VBScript脚本,随着我添加的每个其他代码,它逐渐变得越来越慢。它是作为私人调试工具创建的,现在已经变得非常有用。我想打磨它并与我们的产品一起发货。
我以为可以通过编译并使其成为EXE来加快速度。此外,我想为我的工具提供一个用户界面,一旦我使用了编译平台可能会给我的额外库,便可以使用该界面。我还考虑通过调用Win32函数来扩展脚本,以获取所需的所有缺少的功能。
我有VB 6.0,也可以购买外部编译器。但是我还需要创建的程序(而不是编译器本身)才能在Windows Vista中正常运行。我最好的选择是什么?
解决方案
我建议下载Visual Basic Express Edition(http://www.microsoft.com/express/vb/),然后将工具移植到VB.Net。但是,这种方法有一个缺点,程序将依赖于.Net。在大多数情况下,这应该不是一个大问题,因为到目前为止,大多数计算机都应具有.Net 2.0,但最好还是记住它。
我会远离VB6.0;但是,除了VB.Net,我不知道我们可以使用其他任何好的Basic编译器。
缓慢的原因可能不仅仅是解释事实。我们可以对它进行各种优化以使其更快。尝试查找代码的哪些部分会使速度最慢,然后尝试加快速度。
根据代码的不同,VB6可能很好。如果要处理自然的文本/文件名,那么最好使用VB.net,因为VB6不能很好地支持Unicode。
但是我觉得即使在编译之后,它仍然可能会很慢,因为编译只会使其运行得更快,而效率却更高。
如果不知道程序在做什么或者正在处理多少数据,很难说。
我同意Franci VB6已不再销售或者受支持,因此VB.Net将成为编译代码的方式。 (Express是免费的。)VBScript与VB.Net不太相似,因此,除非全部是WMI或者LDAP查询或者类似的东西,否则可能要移植很多工作。
我会开始计时,以查看瓶颈在哪里。除非我们要进行大量的循环和多级函数调用,否则我们可能会停留在外部调用上。
wscript.echo "Begin: " & Time tStartTime = Timer '... do stuff ... tStopTime = Timer wscript.echo "Elapsed time: " & tStopTime - tStartTime
干杯
好吧……那里有许多"好的" BASIC编译器:
- BCX
- xbLite
是那些立即浮现在脑海中的人。在mindteq网站上列出了很多。 (Jabaco是用Java重新表达的VB6特别有趣。我已经弄弄了它,它看起来非常有前途!)
但是回到VBScript编译器,它们确实存在。他们所做的是将代码标记化,并在它们周围放置某种包装器。他们是否运行得更快是没有意义的。
- VBS2EXE
- VBScript2Exe
- 脚本