6

我非常需要一个随机文件生成器来生成真正随机的、不可压缩的虚拟文件。

我最终得到了这个德尔福代码。它有效,但它的痛苦sloooow

 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 代码和/或命令行工具都是可以接受的:

  1. 我可以在 Windows 上运行它而无需手动干预(我的测试需要这个,不允许干预)
  2. 很快
  3. 生成的文件是不可压缩的(即压缩生成的文件不会节省空间)

编辑对于那些感兴趣的人,我应用了我在这里收到的建议并制作了这个功能,它足够快并且 7zip 很难压缩生成的数据。

4

2 回答 2

9

使用 4096 字节的页面大小或多个页面大小的缓冲区。一次写入一个整数会很慢。

于 2012-04-18T20:02:44.297 回答
1

您可以使用我用来在我的项目中生成测试数据的generate_random_file.py脚本 (Python 3)。

  • 它适用于 Linux 和 Windows。
  • 它非常快,因为它用于os.urandom()生成 256 KiB 的随机数据块,而不是单独生成和写入每个字节。
于 2013-02-05T14:20:11.990 回答