VBScript與JScript誰怕誰(5)
發(fā)表時間:2023-07-31 來源:明輝站整理相關軟件相關文章人氣:
[摘要]轉自: 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的一個地方,所以這一組的測試結果并不令人奇怪。這里的測試結果證實了上一組的測試結果,但差異程度有所放大。