ホームページ >バックエンド開発 >PHPチュートリアル >メモリがファイル サイズより小さい場合、大きなファイル内の行をすばやく検索して見つけます。
メモリ内の大きなファイル
たとえば、次のファイルがあります 意味がわかりませんか?
ファイルを開いて特定の行をすばやく見つけたい場合は、vi 以降を使用してファイルを開くことができます。
その後、次のように入力します。 Enter を押すだけです
fopen を押してから fscanf を押します。
一度に 1 行ずつ読んでください。メモリが制限要因になることはありません。
誰か知っていますか?
一行ずつ読むと効率が悪いです。
もっと早い方法はありますか?
私のアイデアは、ハッシュ テーブルを構築し、ハッシュ アルゴリズムに基づいてハッシュ衝突原理を使用して重複を排除することです。
良い意見があるかどうかわかりません
ハッシュテーブルを構築したい場合、最初にファイルの内容をハッシュする必要はありませんか?
必ずしもアルゴリズムを使用する必要はなく、他のツールで処理することもできます。
たとえば、awk:
awk '/ABCt56/{print NR}' file
は、一致する行の行番号を取得できます。
銀行番号を知りたいだけなら、解決策はたくさんあります。具体的なニーズを教えてください。
しかし、他のニーズがある場合、awk のようなことを行うのは最良の解決策ではない可能性があります。
誰か知っていますか?
一行ずつ読むと効率が悪いです。
もっと早い方法はありますか?
私のアイデアは、ハッシュ テーブルを構築し、ハッシュ アルゴリズムに基づいてハッシュ衝突原理を使用して重複を排除することです。
良い意見があるかどうかわかりませんが、まず一行ずつ読んでからハッシュする必要はありませんか?
1行ずつ読むのは遅すぎると思う場合は、少しずつ読むこともできます
誰か知っていますか?
一行ずつ読むと効率が悪いです。
もっと早い方法はありますか?
私のアイデアは、ハッシュ テーブルを構築し、ハッシュ アルゴリズムに基づいてハッシュ衝突原理を使用して重複を排除することです。
良い意見があるかどうかわかりませんが、それを一行ずつ読んでからハッシュする必要はありませんか?
一行ずつ読むのが遅すぎると感じる場合は、ブロックごとに読むこともできます
はい、ブロックで読む方がニーズに適しています
元の投稿者は次を参照できます:
http://www. fantxi.com/blog/archives/php-read-large -file/
http://sjolzy.cn/php-large-file-read-operation.html
ハッシュテーブルを構築するなら、最初にファイルの内容をハッシュする必要がありますか?
必ずしもアルゴリズムを使用する必要はなく、他のツールで処理することもできます。
たとえば、awk:
awk '/ABCt56/{print NR}' file
は、一致する行の行番号を取得できます。
銀行番号を知りたいだけなら、解決策はたくさんあります。具体的なニーズを教えてください。
しかし、他のニーズがある場合、awk のようなことを行うのは最良の解決策ではない可能性があります。
必要なのは、それを素早く見つける方法ですか?例えば、ABCの後の数字やDEFの後の数字が知りたいのですが…
知っている人はいますか?
一行ずつ読むと効率が悪いです。
もっと早い方法はありますか?
私のアイデアは、ハッシュ テーブルを構築し、ハッシュ アルゴリズムに基づいてハッシュ衝突原理を使用して重複を排除することです。
良い意見があるかどうかわかりませんが、まず一行ずつ読んでからハッシュする必要はありませんか?
一行ずつ読むのは遅すぎると思う場合は、少しずつ読んでも構いません
記憶を少しずつ読むにはどうすればよいですか?例を挙げていただけますか?