bat性能效率受啥影响


  代码效率的提升往往由算法决定,曾发过专贴(浅谈提高代码效率的编写习惯:http://tieba.baidu.com/p/1187281687),但是以实例为主,并没有太多的文字说明,现在归纳一下:
影响代码效率的主要有几点:

1.1 外部命令、goto、call 的调用次数
  这是众所周知的,这里只列个提纲,就不详加说明了
1.1.1 外部命令启动慢、运行快,所以不宜频繁启动
1.1.2 goto、call、exit 都是比较耗时的(相对于 for 构建的循环)
1.1.3 管道至少开启两个新进程(内部命令或语块将启用 cmd 解析执行),不解释
1.1.4 for /f 从命令获取输入时必然启用 cmd 进程,不解释

1.2 变量尽量少
  批处理中的变量是以变量表的形式存储,每次读取时从头读到符合条件的变量位置,所以我们所设定的变量越多、在表中位置越靠后,效率越低。
  值得注意的是,变量不仅仅受 set 影响,setlocal 的本质也是开辟一个新的变量表作为本地化操作下的临时变量环境,所以每次使用 setlocal 都会增加将当前的变量表所占用的空间,但因为旧的变量表处于“隐藏”状态,所以对效率没有明显的影响

1.3 算法思想(重点)

1.4 影响环境的操作尽量少
  包括变量写入、句柄的重定向、除 nul 之外所有设备的输出(文件是 file 设备)等等都是比较耗时的,这个也在旧帖中亦有较详细的论述,在此略过不谈。

posted @ 2017-11-22 23:19  dzqabc  阅读(557)  评论(0编辑  收藏  举报