注册
登录
论坛
搜索
帮助
导航
私人消息 (0)
公共消息 (0)
论坛任务 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
批处理之家
»
BAT求助&讨论
» 讨论:批处理中for /f 解析命令输出的效率
[新手上路]
批处理新手入门导读
[视频教程]
批处理基础视频教程
[视频教程]
VBS基础视频教程
[批处理精品]
批处理版照片整理器
[批处理精品]
纯批处理备份&还原驱动
[批处理精品]
CMD命令50条不能说的秘密
[在线下载]
第三方命令行工具
[在线帮助]
VBScript / JScript 在线参考
返回列表
发帖
zqz0012005
发短消息
加为好友
zqz0012005
(smile)
当前离线
假装是个高手
UID
2560
帖子
1069
精华
1
积分
12123
PB
11999
技术
38
捐助
0
阅读权限
254
来自
湖北省黄冈市
在线时间
956 小时
注册时间
2008-5-10
最后登录
2014-7-7
荣誉版主
帖子
1069
积分
12123
技术
38
捐助
0
注册时间
2008-5-10
1
楼
跳转到
»
发表于 2009-3-5 11:48
|
显示全部帖子
标题有点不恰当,应该叫“for /f 解析命令输出的效率”,哈哈。
for /f + 命令 命令所得到的结果是通过管道传递给for的
这个倒不一定。
for /?
...可以用 FOR /F 命令来分析命令的输出。方法是,将
括号之间的 filenameset 变成一个反括字符串。该字符串会
被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进
内存,并被当作文件分析。...
对于 for /f in ('command') 其中command的运行方式是 cmd /c "command"
启动CMD要消耗时间(启动一个外部命令可能耗时都差不多吧,7ms,看机器配置。运行时间则看具体命令了)
但主要的耗时可能花在“输出会被抓进内存,并被当作文件分析。”
同时也说明,输出应该不是通过管道传递给for的。
当然管道也是有一定耗时的,这要从管道的运行机制说起(在verybat上也讨论过,参与的人不多,只得出了粗略的结果)
管道前后的命令,有的要通过CMD启动,所以管道的耗时也大致等于启动CMD等外部命令的时间,管道的传递耗时可能很少。
比如一个1万行的文本,我的CPU 3.00G,内存1G做如下测试:
findstr .* a.txt 用时12ms
type a.txt|findstr .* 用时16ms
命令行参考:
hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!
TOP
zqz0012005
发短消息
加为好友
zqz0012005
(smile)
当前离线
假装是个高手
UID
2560
帖子
1069
精华
1
积分
12123
PB
11999
技术
38
捐助
0
阅读权限
254
来自
湖北省黄冈市
在线时间
956 小时
注册时间
2008-5-10
最后登录
2014-7-7
荣誉版主
帖子
1069
积分
12123
技术
38
捐助
0
注册时间
2008-5-10
2
楼
发表于 2009-3-7 14:08
|
显示全部帖子
for /f 解析命令输出,的确是输出越多,速度越慢。
“输出会被抓进内存,并被当作文件分析”,这个的具体机制还不清楚。
for /f 如果直接解析文本,虽然是一次性全部读入到内存中,但速度影响不大。
猜想一下:
直接解析文本时是根据文件大小申请内存一次;但解析命令输出时,由于无法预期输出的大小,可能是边输出边申请内存,类似于动态数组。
[
本帖最后由 zqz0012005 于 2009-3-7 14:09 编辑
]
命令行参考:
hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!
TOP
返回列表
BAT教程&资料
VBS原创&转载
版主申请
UNIX/Linux Shell
第三方命令行
BAT原创&转载
VBS求助&讨论
出题挑战
新手练功
意见反馈
批处理专区: BAT CMD DOS
BAT求助&讨论
BAT教程&资料
BAT原创&转载
BAT新大陆
BAT转载代码
新手练功
出题挑战
有偿求助
第三方命令行
开源原创工具
iBAT
Take Command
其他脚本区
PowerShell求助&讨论
PowerShell教程&资料
PowerShell原创&转载
VBS求助&讨论
JS / JScript / JavaScript
VBS教程&资料
VBS原创&转载
UNIX/Linux Shell
Python
Perl
网络资源区
电脑技术研讨
精品软件交流
论坛事务区
站务交流
意见反馈
论坛公告
版主申请
交换链接
建站杂谈
活动专区
论坛总版规
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]