设定
set loop=10000
set "pre1=_" :: 垃圾变量前缀
set "pre2=_" :: 待赋值变量前缀
set "med=set/a" :: 赋值方式- @echo off&setlocal EnableDelayedExpansion
- :: loop值也是垃圾变量的数量,不能过小,便于比较出差异
- set/a loop=10000
- 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
复制代码
- 待测试变量数占垃圾变量数(10000个)的比:1/500
- “垃圾变量名”中【含有】待赋值变量的测试
- ====================================
- 执行10000次set _1=1耗时:328,阶差:328 // 注释,第一个阶差不做参考
- 执行10000次set _2=1耗时:359,阶差:31
- 执行10000次set _3=1耗时:432,阶差:73
- 执行10000次set _4=1耗时:491,阶差:59
- 执行10000次set _5=1耗时:550,阶差:59
- 执行10000次set _6=1耗时:603,阶差:53
- 执行10000次set _7=1耗时:653,阶差:50
- 执行10000次set _8=1耗时:717,阶差:64
- 执行10000次set _9=1耗时:775,阶差:58
- 执行10000次set _10=1耗时:342,阶差:-433 // 注意垃圾变量数的千分之一
- 执行10000次set _11=1耗时:339,阶差:-3
- 执行10000次set _12=1耗时:323,阶差:-16
- 执行10000次set _13=1耗时:330,阶差:7
- 执行10000次set _14=1耗时:348,阶差:18
- 执行10000次set _15=1耗时:346,阶差:-2
- 执行10000次set _16=1耗时:348,阶差:2
- 执行10000次set _17=1耗时:380,阶差:32
- 执行10000次set _18=1耗时:384,阶差:4
- 执行10000次set _19=1耗时:400,阶差:16
- 执行10000次set _20=1耗时:384,阶差:-16
- 请按任意键继续. . .
复制代码
|