是时候彻底放弃rem了!
bat吧
全部回复
仅看楼主
level 13
众所周知,批处理中常见的三种注释方法有三种:
1.remXXX:注释的最正确方式;
2.::XXX:实质上是无意义的label,":"后面接";"、"#"还是别的什么都可以。比rem省1字节,但在复合语句中会出错;
3.%=XXX=%:实质上是错误的变量。利用了变量名不能包含等号这一特点,便可以在其中自由输入任意字符(%除外)。这个方法比"::"要多2字节,但是可以随意放在代码的任何地方,非常方便。
一直以来,我都错误的认为,rem的速度应该是最快的,其次才是"::"和"%==%",毕竟rem才是官方正统的注释命令。有一天,我突然想测试一下rem到底比其它两种注释快多少。正所谓“实践是检验真理的唯一标准。”本着吃扒皮没事干的精神,我开始了实验。结果,令人大跌眼镜。
2018年05月27日 08点05分 1
level 13
实验采用了4台不同的设备,分别运行4个bat文件进行对照实验。这四个文件分别是:
0.无注释情况下goto loop1000次;
1.只包含rem,loop1000次;
2.只包含::,loop1000次;
3.只包含%==%,loop1000次。
每个bat文件都运行10次,然后求平均值,再将123组的数据减去0组的数据即可得到对应注释运行1000次所需的时间。
实验所用文件在此获取:[无效] https://pan.baidu.com/s/1LPj1-18qbcIpB0QSli8ogQ
2018年05月27日 09点05分 2
level 13
那么上数据:
第一组:(单位:ms/千次)
rem:46.4
:::11.9
%==%:12.7
第二组:
rem:11
:::1.6
%==%:1.8
第三组:
rem:12.7
:::2.1
%==%:3.1
第四组:
rem:5.7
:::3.2
%==%:3.4
2018年05月27日 09点05分 3
level 13
结语:
由上面的数据我们可以得知,rem的速度远远差于::和%==%。虽然每千次也只有几毫秒的差异,但累积起来也非常可怕。更何况rem本身既没有::简洁好看,又不如%==%使用方便,可以说是完全没有优点可言了。
官方指定的注释命令居然不如民间靠bug鼓捣出来的注释方法,这背后究竟有何原因,这就不得而知了。
2018年05月27日 09点05分 4
level 13
对了,再补充一个多行注释的方法:
goto 注释
XXX
XXX
XXX
:注释
这个注释的速度就等同于goto的速度了
2018年05月27日 09点05分 5
没看懂,能不能解释一下这个的意思?摸不着头脑..
2019年11月24日 16点11分
@万圣节海鲜面 GOTO ABC echo 1 echo 2 echo 3 :ABC echo 1234 当批处理运行到 goto abc时,就直接跳转到标签:abc所在了,goto 和 :abc之间的行就不会执行,也就相当于被注释掉了
2019年11月27日 21点11分
@Devi0s 哦哦,原来如此..直接跳过啊,看起来和那个::有点像
2019年11月28日 01点11分
level 12
围观
2018年05月27日 09点05分 6
level 14
围观
2018年05月27日 09点05分 8
level 10
这个可以用,时间未测试过。
@echo off
for /l %%i in (1,1,10) do (
if "1"=="0" (
注释 111
注释 222
注释 333
注释 444
注释 555
注释 666
)
echo;运行数:%%i
)
pause
2018年05月27日 10点05分 9
level 14
vsc语法高亮会把::视为注释,貌似算官方?
2018年05月30日 08点05分 10
@皇叔有异议 当然是因为他实用咯,不管黑猫还是白毛,能抓到老鼠的猫就是好猫。
2018年07月15日 01点07分
是的,notepad也会把它识别为注释,就很神奇。
2018年05月30日 08点05分
level 11
[滑稽]
2018年05月30日 23点05分 11
level 8
[滑稽]
2018年07月24日 09点07分 12
level 3
dalao
2019年03月23日 12点03分 13
level 5
以前看过一个这种测试注释解析时间的。
还有过一个测试【echo】后面的字符的解析时间。
echo ***
echo,***
echo.***
echo/***
echo\***
echo:***
echo;***
echo[***
echo]***
2019年03月28日 09点03分 15
这..echo不能乱接东西吧,涉及变量可能会影响一些东西
2019年11月24日 16点11分
1