ランダムなテキストを含むファイルを作成するのがゼロを含むファイルを作成するよりも時間がかかるのはなぜですか?

ランダムなテキストを含むファイルを作成するのがゼロを含むファイルを作成するよりも時間がかかるのはなぜですか?

私は最近logrotateで遊びたくてテストファイルを作成しました。任意のサイズのファイルを生成するソリューションを探しています。私はこれが私の解決策であることがわかりました。

dd if=/dev/zero of=/path bs=1M count=30 status=progress 

私もこれを見つけました:

dd if=/dev/urandom of=/path bs=1M count=30 status=progress

最初の例では0を含むファイルを作成し、2番目の例ではランダムなテキストを含むファイルを作成します。両方のファイルのサイズは30Mと同じです。

0よりもランダムなテキストでこのファイルを作成するのに時間がかかる理由を説明できる人はいますか?データサイズが同じなので..

よろしくお願いします:)

ここに画像の説明を入力してください。

ここに画像の説明を入力してください。

ベストアンサー1

出力からわかるように、どちらの方法も非常に高速です。しかし、データソース間には明らかな違いがあります。

  • /dev/zeroダミーファイルなので、ゼロストリームを生成します。これは非常に簡単な作業です。
  • /dev/urandom実際、カーネルのエントロピープールにアクセスして乱数を生成するので、単に同じ固定値を生成するよりも高速です/dev/zero

/dev/urandomこれがで読むことがで読むのと同じくらい速くない理由です/dev/zero。興味があれば、に関するウィキペディア記事/dev/random追加の読書のための出発点として使用できます。

おすすめ記事