有编译VBScript的经验吗?

时间:2020-03-06 14:50:23  来源:igfitidea点击:

我有一个自定义的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
  • 脚本