- 帖子
- 643
- 积分
- 2335
- 技术
- 50
- 捐助
- 0
- 注册时间
- 2009-12-2
|
6楼
发表于 2011-4-22 18:00
| 只看该作者
其实我不是想只说明变量越多,速度越慢的问题,这个经常写bat的一般都有了解。
我希望大家谈谈对“变量的存储、读取” 方面猜测理解。
环境:
先设置1万个变量,从_1到_10000。
测试1:调用“_9999”这个变量1万次,再 调用“_1”这个变量1万次,耗时比 27:6 。
测试2:调用_1,_1000,_10000这3个变量执行1万次计算,3者耗时相差仿佛。调用 _99,_999,_9999,以及唯一的一个字符变量"_x",4者调用耗时也相差仿佛。
测试3:将_1--_10000这一万个变量都调用一次 ≈ 调用 _5 | _5000 这些变量一万次。
从上面测试结果来看:
1. "变量增多,耗时越多"的原因,跟内存的关系不大!!因为1万个小变量不会导致内存不够,其它程序语言变量没有多到阀值,多少也不会有明显影响。
2. 变慢的原因可能跟批处理在预处理变量时,进行变量名查找匹配的速度有关。
3. 批处理内应该有一张表,按照排序好的顺序,存储着变量名(也可能含有以字符类型存储的变量值,或者内存指针)。
4. 批处理在预处理变量时,遍历变量表,取出匹配的变量名,再取得该变量的值。
5. 批处理在读取变量表时,很可能有一个复制(或者别的)操作(这可能是变量越多越慢的另一个原因)。 因为从一万个元素的Array(10000)数组中读取Array[0] 的速度,绝对不会比从Array(1)中读取Array[0]的速度慢太多。而这在批处理中的差距是几千倍。
大家有什么看法?? |
|