
批處理變量表機制的猜測及測試前面ZM兄談到變量越多,批執行效率越低的問題。我做了如下代碼測試:一、環境中只有1個變量時,速度非常快,一萬次調用,耗時不到1秒。二、生成一萬個變量_1到_10000作為測試環境,測試都執行一萬次,現象如下:1:調用_1,用時5.5秒。2:調用_1000,用時5.5秒。3:調用_9999,用時25-27秒。4:調用_9,用時25-27秒。5:調用_1 To _10000各一次,總共也是一萬次,耗時16秒。6:調用_5000以及_5,_50,三者用時都在15秒左右。7:調用字符變量_x,用時25-27秒。都是從一萬個變量中讀取其中一個,_1與_9999的速度差距巨大!!直觀的可以看20樓的圖。測試結論(猜測)::
批處理遍歷了一個變量(名)表,排在前列的讀取速度快,排在后面的讀取速度慢,而且從表開始到結束,讀取耗時是勻速增加的。表的內容是經過排序的,與set _的輸出一致。測試代碼:
- @echo off&setlocal enabledelayedexpansion
- for /l %%a in (1,1,10000) do set _%%a=1
- echo %time%
- for /l %%a in (1 1 10000)do set/a _9+=2
- echo %time%
- for /l %%a in (1 1 10000)do set/a _10000+=2
- echo %time%
- pause
nclick="copycode($('code0'));">復制代碼
執行結果
- 20:58:43.03
- 20:59:04.87
- 20:59:09.26
- 請按任意鍵繼續. . .
nclick="copycode($('code1'));">復制代碼