gpt4 book ai didi

ruby - 创建大文件的最快方法?

转载 作者:数据小太阳 更新时间:2023-10-29 08:18:47 24 4
gpt4 key购买 nike

我需要创建一个包含任何内容的巨大文件。我正在这样做,但需要很长时间:

exit 1 unless ARGV.length > 0
File.open("file-#{ARGV[0]}M.txt", 'w') do |f|
(ARGV[0].to_i*1048576).times {f.write(1) }
end

这样做的最佳方式是什么(以独立于平台的方式?)

最佳答案

在 *nix 中, 使用 dd:

system("dd if=/dev/zero of=" + f + " bs=1 count=0 seek=" + ARGV[0] + "M");

如果你想要文件中的一些内容(而不是零),使用

/dev/random

对于 if 而不是 /dev/zero

如果你想要一个非稀疏文件,使用

bs=#{ARGV[0]}M

并省略seek


通用方法:

#Create a 1M fill buffer
fills = '1'*1048576
File.open("file-#{ARGV[0]}M.txt", 'w') do |f|
(ARGV[0].to_i).times {f.write(fills) }
end

和你的差不多,但是一次写入1M。您一次写入 1 个字节,这会给硬盘搜索和写入带来大量开销。一次写1M会快很多。如果您有更快的硬盘驱动器(例如 16M/s),您可以尝试将 1M 增加到 16M。

关于ruby - 创建大文件的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com