use*_*763 0 unix linux string text large-files
我们需要构建一个大小约为1MB的大型文本文件.我们尝试使用Echo的shell脚本使用do循环创建文件.建立需要很长时间.
我想在unix/Linux中构建一个文件1行/记录.它可能是一个大小为1MB的大字符串.
内容可能如下所示,但整个兆字节:
XXXXXXXXX............................................XXXX
Run Code Online (Sandbox Code Playgroud)
如果我逐个字符地构建,则需要更长的时间.
我想将此扩展到10MB,20MB ......后来的60MB.
shell脚本是最好的选择,还是有更快的选择?
unix dd命令完全是为了这个目的.
http://en.wikipedia.org/wiki/Dd_%28Unix%29
您可以编写一个小程序,X在没有换行符的情况下将所需的填充字符(在您的示例中)连续打印到STDOUT.将结果传递到dd并指定bs和count参数,以便获得完全正确的文件大小.
然后,您可以调整bs和count参数以查找最大吞吐量.
编辑:示例:
yes X | awk '{ printf("%s", $0)}' | dd of=out.txt bs=1024 count=1024 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
你可以看到它很快:
time yes X | awk '{ printf("%s", $0)}' | dd of=out.txt bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.123118 s, 8.5 MB/s
real 0m0.127s
user 0m0.144s
sys 0m0.004s
Run Code Online (Sandbox Code Playgroud)
time通过管道的不同部分移动指示我dd正在采取你给它的任何东西,但生产者不是很快.(也许是yes和awk不是最好的组合).
如果你需要比这更快,也许你需要考虑其他接口,例如mmap.
| 归档时间: |
|
| 查看次数: |
2073 次 |
| 最近记录: |