1

我有一個家紡2000行VBScript腳本,隨着我添加的每個額外的代碼已經變得越來越慢。它被創建爲一個私人調試助手,現在它變得非常有用。我想打磨它,並將其與我們的產品一起運送。任何編譯VBScript的經驗?

我想我可以通過編譯它並將它加速到EXE來加速它。此外,我希望爲我的工具提供一個用戶界面,一旦我使用編譯平臺可能爲我提供的額外庫,這可能是可能的。我還在考慮通過調用Win32函數來擴展腳本,以滿足我需要的任何缺失功能。

我有VB 6.0或我可以購買外部編譯器。但我也需要創建的程序(而不是編譯器本身)在Windows Vista中正常運行。我最好的選擇是什麼?

回答

4

我會推薦下載Visual Basic速成版(http://www.microsoft.com/express/vb/)並將您的工具移植到VB.Net。但是,這種方法有一個缺點 - 你的程序將依賴於.Net。在大多數情況下,這應該不是什麼大問題,因爲現在大多數機器都應該有.Net 2.0,但最好記住它。

我會遠離VB6.0;然而,除了VB.Net我不知道你可以使用任何其他好的基本編譯器。

4

有可能更多的慢,而不僅僅是它被解釋的事實。你可以通過各種優化來加快速度。試着找出哪些代碼部分最慢,並儘量加快速度。

取決於VB6的代碼可以很好。如果它會處理自然文本/文件名,那麼使用VB.net會更好,因爲VB6不支持Unicode。

但是我感覺即使在編譯之後,它仍然可能會很慢,因爲編譯只會讓它運行得更快,但不會更有效。

0

如果不知道更多的程序在做什麼或者處理了多少數據,這很難說。

我同意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 

乾杯

3

嗯...有一些 「好」 BASIC編譯器在那裏:

是那些馬上想到。在mindteq網站上列出了很多。 (Jabaco特別有趣 - VB6用Java重新表達,我已經擺弄它了,它看起來非常有前途!)

但回到VBScript編譯器,他們確實存在..排序。他們所做的是對代碼進行標記並在其周圍放置一些包裝。他們是否跑得更快是沒有意義的。

+0

BCX會讓您嵌入一定的VBScript命令,然後就可以編譯。 – bgmCoder 2012-04-29 04:17:57