前面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
复制代码 执行结果- 20:58:43.03
- 20:59:04.87
- 20:59:09.26
- 请按任意键继续. . .
复制代码
|