【发布时间】:2012-04-30 06:31:27
【问题描述】:
我非常需要一个随机文件生成器来生成真正随机的、不可压缩的虚拟文件。
我最终得到了这个 delphi 代码。它有效,但它非常缓慢
var
Buf : Integer;
TheFile : TFileStream;
begin
TheFile := TFileStream.Create(FileName, fmCreate OR fmOpenReadWrite);
with TheFile do
begin
for i := 0 to FileSize do // Iterate
begin
Buf := Random(999999) * i;
WriteBuffer(Buf, SizeOf(Buf));
end; // for
end; // with
end,
我的问题是:有没有我可以使用的快速随机文件生成器? Delphi 代码和/或命令行工具都可以接受,只要:
- 我可以在 Windows 上运行它无需手动干预(我的测试需要这个,不允许干预)
- 快
- 生成的文件不可压缩(即压缩生成的文件不会节省空间)
编辑对于那些感兴趣的人,我应用了我在这里收到的建议和made this function,它足够快而且 7zip 很难压缩生成的数据。
【问题讨论】:
-
他最好使用 CryptoAPI 填充用于写入文件的缓冲区。有一些 C 代码 - msdn.microsoft.com/en-us/library/aa382048.aspx 这是一个很好的起点
-
@Gdhami - 填满页面大小的缓冲区,然后写入。一次写一个int会很慢,使用:Buf:array [0..2047] of integer;
-
分配一大块内存。用随机数填充它。然后把它写成一个整体。
-
如果您需要一次编写小块并且速度仍然很快,您可以使用此处的代码:stackoverflow.com/questions/5639531/…
-
@TheDude 您应该提供your code 作为您问题的答案! (我差点错过了 ;-)
标签: windows delphi random test-data