四,for 嵌套中,越稳定的循环应该越少参与递归
1,参数固定的 for 应位于最外层 | for /l %%a in (1 1 1000) do ( | | for /f "tokens=2" %%b in ("abc test 123") do echo %%a%%b | | )COPY |
| for /f "tokens=2" %%a in ("abc test 123") do ( | | for /l %%b in (1 1 1000) do echo %%a%%b | | )COPY |
rem 同样的代码仅仅是次序不同,实现同样的效果的用时却是后者更快,因为那句 for /f 的结果是恒定的,所以前者产生了 999 次多余的循环
2,越小的循环越靠外 | for /l %%a in (1 1 1000) do ( | | for /l %%b in (1 1 10) do title %%a%%b | | )COPY |
| for /l %%a in (1 1 10) do ( | | for /l %%b in (1 1 1000) do title %%a%%b | | )COPY |
rem 这两段中的 for 循环的参数同样都是“不稳定的”,但是后者就是比前者快上一筹
3,越核心的递归层,命令最好越少 | for /l %%a in (1 1 100) do ( | | for /l %%b in (1 1 100) do ( | | set /a n=%%b*2 | | echo %%a,!n! | | ) | | )COPY |
| for /l %%a in (1 1 100) do ( | | set /a n=%%a*2 | | for /l %%b in (1 1 100) do echo !n!,%%b | | )COPY |
rem 前后代码的输出量是相同的,但是因为后者内层的循环中命令很少,所以效率就高了很多 |