设定
set loop=6000
set "pre1=_" :: 垃圾变量前缀
set "pre2=_" :: 待赋值变量前缀
set "med=set " :: 赋值方式- @echo off&setlocal EnableDelayedExpansion
- :: loop值也是垃圾变量的数量,不能过小,便于比较出差异
- set/a loop=6000
- set/a p=500
- set/a num=loop/p
-
- set "pre1=_" :: 垃圾变量前缀
- set "pre2=_" :: 待赋值变量前缀
- set "med=set " :: 赋值方式
- ======================%测试开始%=========================
- echo 待测试变量数占垃圾变量数(%loop%个)的比:1/%p%
- if "%pre1%"=="%pre2%" (
- echo “垃圾变量名”中【含有】待赋值变量的测试
- ) else (
- echo “垃圾变量名”中【不含有】待赋值变量的测试
- )
- echo ====================================
- :: 生成“垃圾变量”
- for /l %%a in (1,1,%loop%) do set %pre1%%%a=1
-
- :: 测试赋值耗时变化
- for /l %%z in (1 1 %num%)do (set/a tp=tt,tt=0
- set t1=!time!
- for /l %%a in (1 1 %loop%)do %med% %pre2%%%z=1
- set t2=!time!
- set/a tt=1!t2:~-5,2!!t2:~-2!-1!t1:~-5,2!!t1:~-2!,tt+="-6000*(tt>>31)"
- set /a cc=tt-tp
- echo 执行%loop%次%med% %pre2%%%z=1耗时:!tt!,阶差:!cc!
- )
- pause
复制代码 输出:- 待测试变量数占垃圾变量数(6000个)的比:1/500
- “垃圾变量名”中【含有】待赋值变量的测试
- =====================================
- 执行6000次set _1=1耗时:116,阶差:116
- 执行6000次set _2=1耗时:152,阶差:36
- 执行6000次set _3=1耗时:185,阶差:33
- 执行6000次set _4=1耗时:221,阶差:36
- 执行6000次set _5=1耗时:250,阶差:29
- 执行6000次set _6=1耗时:286,阶差:36
- 执行6000次set _7=1耗时:289,阶差:3
- 执行6000次set _8=1耗时:294,阶差:5
- 执行6000次set _9=1耗时:299,阶差:5
- 执行6000次set _10=1耗时:117,阶差:-182
- 执行6000次set _11=1耗时:118,阶差:1
- 执行6000次set _12=1耗时:122,阶差:4
复制代码
|