明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

VBScript與JScript誰怕誰(5)

[摘要]轉自: ChinaByte   第一組測試的結果如下表所示。表中的數(shù)值是在不同方案下1000次ASP頁面調用的平均執(zhí)行時間,以秒計(每次執(zhí)行ASP頁面時測試例程執(zhí)行一次)。 方案 語言*** 字...
轉自: ChinaByte


   第一組測試的結果如下表所示。表中的數(shù)值是在不同方案下1000次ASP頁面調用的平均執(zhí)行時間,以秒計(每次執(zhí)行ASP頁面時測試例程執(zhí)行一次)。 方案  
語言***  字符串翻轉*  字符串查找**  正則表達式模式匹配*  位移操作*  簡單數(shù)學計算*  復雜數(shù)學計算**  
VB - VB  2.245  2.038  4.452  2.200  2.173  2.151  
JS - JS  2.690  2.214  2.635  2.166  2.288  2.313  
VB - JS  3.522  -  3.430  3.035  -  3.178  
JS - VB  3.185  -  5.368  3.103  -  3.004  
*運行96次,其中:24次是VBScript測試工具頁面、IIS默認腳本語言VBScript;24次是JScript測試工具頁面、IIS默認腳本語言VBScript;24次是VBScript測試工具頁面、IIS默認腳本語言JScript;還有24次是JScript測試工具頁面、IIS默認腳本語言JScript。為了減小次序帶來的影響,第一、三、四、六測試例程的方案所運行的次序每次都經(jīng)過改變。上表所顯示的時間是96次運行的平均時間。所有細節(jié)數(shù)據(jù)都可以在下載包的data.xls文件內(nèi)找到。

**使用VBScript測試工具頁面運行24次,IIS腳本語言設置成VBScript(沒有運行其他的測試工具頁面和默認腳本語言的組合,因為在最初的運行中它們沒有顯示出任何次序或時間差異上的影響)。

***VB代表VBScript,JS代表JScript。兩種語言中的前一種是頁面的基本語言,第二種是內(nèi)嵌代碼所用的語言。內(nèi)嵌代碼不用于不需要使用它的場合。



   大多數(shù)測試結果的含義都非常明顯,但應注意兩個可能令人驚奇的結果。我們知道,JScript通過String對象的方法處理正則表達式,具有更好的靈活性,而VBScript需要實例化RegExp對象的開銷。但令人驚奇的是,完全用VBScript編寫的代碼比以VBScript為基本語言、用內(nèi)嵌JScript函數(shù)完成模式匹配操作的代碼要慢。顯然,實例化VBScript的RegExp對象需要非?捎^的時間開銷。

   第二個令人驚奇的地方是,雖然事實證明JScript的位操作總是要比VBScirpt的快,但在這些測試中兩者的時間差異非常小。

   第二組測試的結果如下表所示。表中的數(shù)值表示不同方案下單個ASP頁面的平均執(zhí)行時間,以秒計(每執(zhí)行一次ASP頁面,測試例程運行多次)。 方案  
語言**  字符串翻轉(1)  字符串搜索(3)  正則表達式模式匹配(2)  位移操作(3)  簡單數(shù)學計算(1)  復雜數(shù)學計算(3)  數(shù)組初始化(1)  記錄集遍歷(4)  
VB - VB  0.120  0.346  2.250  0.200  0.287  0.328  2.182  0.524  
JS - JS  2.589  0.998  0.138  0.036  0.426  0.499  9.120  0.641  
VB - JS  3.066  -  0.221  0.890  -  1.310  -  -  
JS - VB  0.472  -  2.363  0.769  -  0.671  -  -  
*每種情形用VBScript測試工具頁面運行24次,IIS的默認腳本語言是VBScript(沒有運行其他的測試工具頁面和IIS默認腳本語言組合,因為在最初的運行中它們沒有顯示出任何次序或時間差異上的影響)。為了減小次序帶來的影響,第一、三、四、六測試例程的方案所運行的次序每次都經(jīng)過改變。上表所顯示的是24次運行的平均時間,所有細節(jié)數(shù)據(jù)都可以在下載包的data.xls內(nèi)找到。

**VB代表VBScript,JS代表JScript。兩種語言中的前一種是頁面的基本語言,第二種是內(nèi)嵌代碼所用的語言。內(nèi)嵌代碼不用于不需要使用它的場合。

100,000 次迭代
1,000次迭代
10,000次迭代
830個記錄的外部循環(huán),14個字段的內(nèi)部循環(huán)(總共11,620次迭代)



   這些測試結果更清楚地證實了兩種語言的區(qū)別所在。從數(shù)學計算的結果可以看出,VBScript在這方面要比JScript快——除了位移操作之外(JScript本身支持位移操作,而VBScript不支持)。

   兩種語言最顯著的區(qū)別在于字符串翻轉、字符串搜索和數(shù)組初始化,所有這些測試項目中VBScript都占優(yōu)勢。

   字符串翻轉操作是VBScript本身所支持的,在該項測試中兩者差別尤其明顯。在這個測試中,兩者的差異之大使得采用內(nèi)嵌VBScript StrReverse()函數(shù)也要比用JScript編寫該函數(shù)快。

   在那些數(shù)據(jù)改動非常頻繁使得手工構造數(shù)據(jù)失去現(xiàn)實意義的應用中,數(shù)據(jù)庫記錄集遍歷是一種相當常見操作,因此,上述測試結果中VBScript和JScript在記錄集遍歷上的差異可能會給那些認為JScript優(yōu)于VBScript的人一些警示。然而,這種執(zhí)行時間上的差異也可以用如下事實來辯解,即我們?yōu)橛涗浖械拿總記錄分別實例化了一個Enumerator對象(總共達到了830次!)。

   從第一組測試的結果中已經(jīng)可以看出,正則表達式模式匹配是JScript絕對優(yōu)于VBScript的一個地方,所以這一組的測試結果并不令人奇怪。這里的測試結果證實了上一組的測試結果,但差異程度有所放大。