[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] 讨论:批处理运行效率浅谈

批处理运行效率浅谈
  大家在写批处理时,除了要考虑代码的通用性,易读性,及简洁以外,效率也是一个应该要考虑的问题。
那么批处理在什么情况下会影响效率呢?
以下是自己写代码的一些经验,欢迎大家跟帖讨论,发表自己的看法。。。
1、call 命令  若在代码使用次数超过50次左右,(大概)会影响效率
2、goto 命令  若在代码使用次数超过50次左右,(大概)会影响效率
3、findstr find dir 这几个命令,若是在一个代码中使用5次,有时甚至是2次,都会明显拖慢速度。
所以在写代码时,应尽量避开这样的用法。
call
  1. ::假设a.txt内容有50行。测试以下两个代码的速度
  2. @echo off
  3. for /f %%a in (a.txt) do (
  4.    set var=%%a
  5.    set /a n=2
  6.    call echo %%var:~!n!,1%%
  7. )
  8. pause
复制代码
  1. ::假设a.txt内容有50行。
  2. @echo off
  3. for /f %%a in (a.txt) do (
  4.    set var=%%a
  5.    set /a n=2
  6.    echo !var:~2,1!
  7. )
  8. pause
复制代码
findstr
  1. ::假设a.txt内容有50行。测试以下两个代码的速度
  2. @echo off
  3. for /f %%a in (a.txt) do (
  4.    echo %%a|findstr a
  5. )
  6. pause
复制代码
  1. ::假设a.txt内容有50行
  2. @echo off
  3. for /f %%a in ('findstr "a" a.txt') do echo %%a
  4. pause
复制代码
dir
  1. @echo off
  2. ::假设当前目录文件比较多。
  3. for /f "delims=" %%a in ('dir/b/s/a-d') do (
  4.    for /f "delims=" %%i in ('dir/b "%%a"') do (
  5.       echo %%i
  6. ))
  7. pause
复制代码
技术问题请到论坛发帖求助!

原帖由 namejm 于 2008-10-7 14:24 发表
  真正影响这段代码执行效率的,是管道符号|,大量的输入输出操作才是系统执行效率的瓶颈所在 ...

管道符号也许也是一个问题,(本人暂时还没遇到过这方面的问题)也许是我顶楼的例子不恰当。
但频繁使用 findstr 应该绝对是影响效率的原因。
请分别测试以下两句代码便知。
  1. @echo off
  2. for /l %%a in (1 1 30) do findstr . a.txt
  3. for /l %%a in (1 1 30) do type a.txt
  4. pause
复制代码
技术问题请到论坛发帖求助!

TOP

返回列表