6

本当にランダムで非圧縮のダミーファイルを生成するランダムファイルジェネレータが必要です。

私はこのデルファイコードに行き着きました。それは動作しますが、それは痛々しいほど遅いです

 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バイトのページサイズまたは複数のページサイズのバッファを使用します。一度に1つの整数を書き込むのは遅くなります。

于 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 に答える