批處理程序中存在某些構造會減慢執行速度。唯一對此有重大影響的結構是通過GOTO
組裝一個循環,而不是任何類型的FOR
命令。如果用FOR
命令重寫包含許多GOTO
的大型程序,則可以節省大量時間。影響這一點的另一個方面是程序所具有的命令/行的數量,也就是說,得到的結果比具有較少行的另一個結果的程序運行得更快。用較少的命令實現相同的事情的方法是充分利用批處理文件功能。
例如,下面的代碼:
set /A b=a+8
set /A c=b*2
set /A d=c+e
...跑的比這個要慢:
set /A b=a+8, c=b*2, d=c+e
此代碼:比這
command-that-return-errorlevel
if %errorlevel% equ 1 goto label-1
if %errorlevel% equ 2 goto label-2
if %errorlevel% equ 3 goto label-3
...運行速度較慢一個:
command-that-return-errorlevel
for %%e in (1 2 3) do if %errorlevel% equ %%e goto label-%%e
......和以前比這個慢一個運行:
command-that-return-errorlevel
goto label-%errorlevel%
縮短變量名在執行速度非常小的影響。
這樣,最好的選擇是從一開始就使用這些技術編寫批處理文件。有沒有簡單的方法來開發一個程序,讀取批處理文件並執行以前的更改,即用FOR
替換GOTO
,並將少數幾行中的數行「壓縮」。
如果你克服了你會遇到的問題,它會把一個寫得很好的批處理文件變成一段難以閱讀的代碼,沒有任何好處。如果將批處理文件大小減少2 KB,那麼硬盤驅動器上的簇大小通常會超過8 KB,而且此類批處理文件的運行速度不會超過任何合理的基準。這將是一個有趣的(也可能令人沮喪的)練習。 :) – foxidrive