私が知っているように、ストリーミングI / Oをサポートするプログラムは、メモリサイズよりも大きいファイルを処理できます。そうですか?
ストリーミングI / Oをサポートするプログラムを知る方法はありますか?
答え1
プログラムがストリーミングI / Oをサポートしている場合は、メモリサイズより大きいファイルを処理できますか?
一般的にそうです。しかし、必ずしもそうではありません。uniq
入力内の各固有行の発生回数を計算するのに似ていますが、より複雑なプログラムを想像してみてください。これとは異なり、uniq
これまでに発生したイベントの総数を出力します。したがって、入力を受けながら徐々に出力を生成するため、ストリーミングと見なされます。ただし、入力内のすべての行が一意またはそれに近い場合は、実行回数を維持するためにデータ構造内の他のすべての行を覚えておく必要があり、メモリよりも大きなファイルを実際に処理することはできません。
どのプログラムがストリーミングI / Oをサポートしているかを知る方法はありますか?
文書化されていない場合、または直接確認できない場合は、いいえ。なぜなら、プログラムが何をしているのかによって異なります。
ただし、近い操作を実行できます。つまり、プログラムに検索可能な入力ファイルが必要かどうかをテストできます。一部のプログラムは、パイプや通常のファイル(またはソケットや他のファイル)を入力として受け入れます。他の人は通常のファイルだけを受け入れることができます。プログラムが通常の検索可能なファイルを使用する必要がある場合、どのようなストリーミングも実行しない可能性があります。パイプを入力として受け入れると、そうする可能性が高くなります。しかし例外があります。たとえば、sort
パイプは入力として受け入れられますが、ストリーミングされません。入力終了後は何も出力しません。