我想将 2TB 数据写入一个文件,将来可能会是 PB。
数据由所有'1'
。例如,2TB 数据包括"1111111111111......11111"
(每个字节用“1”表示)。
以下是我的方法:
File.open("data",File::RDWR||File::CREAT) do |file|
2*1024*1024*1024*1024.times do
file.write('1')
end
end
这意味着,File.write
称为2TB倍。从Ruby的角度来看,有没有更好的实现方法呢?
你有几个问题:
File::RDWR||File::CREAT
总是评估为File::RDWR
。你的意思是File::RDWR|File::CREAT
(|
而不是||
).
2*1024*1024*1024*1024.times do
运行循环 1024 次,然后将循环结果乘以左侧的内容。你的意思是(2*1024*1024*1024*1024).times do
.
关于你的问题,我得到重要的通过一次写入 1024 字节来加速:
File.open("data",File::RDWR|File::CREAT) do |file|
buf = "1" * 1024
(2*1024*1024*1024).times do
file.write(buf)
end
end
您可能会尝试并找到比 1024 更好的缓冲区大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)