web-dev-qa-db-ja.com

ワードパッドが大きなファイルをメモ帳よりもはるかに速く開くのはなぜですか?

最もシンプルなテキストリーダーであるメモ帳も最速だと思いましたが、非常に大きなテキストファイルを開こうとすると、ワードパッドがはるかに速く開くことがわかりました。

これの理由は何でしょうか?

1
yoyo_fun

シンプル≠高速

Notepadのような単純な基本的なエディターは、簡単な使用例にのみ使用されるため、複雑な状況に対処する機能がないほど単純な場合があります。

smartエディターは、どの戦略を使用するのが最適かを決定するための多くの要因を決定します。たとえば、ファイルを読み取る代わりにline-by-lineまたはbyte-by-byte愚かなエディターのように後で高速に読み取るために、大きなバッファにロードします。または、 ファイルをメモリにマップする にすることもできます。しかし、バッファまたはマップ領域はどのくらいの大きさにする必要がありますか?それはそれぞれの特定のケースに依存し、編集者もそれを説明する必要があります。スマートエディタは、数GBのファイル全体をメモリにロードして、それが単に収まらないためにスタックするのではなく、ファイルサイズをチェックし、現在表示されている部分のみをロードして、必要に応じて後でシークします。

そのソースコードは10年間あまり変更されていないため、これらすべてには、メモ帳には存在しない多くのロジックを使用した、より注意深い設計が必要です。

Vimが他のテキストエディタよりも大きなファイルを速く開くことができるのはなぜですか? を参照してください。

更新

Windows 10ビルド17713では、メモ帳に多くの変更が加えられました。そのうちの1つは、大きなファイルでのメモ帳の動作を改善します。

  • メモ帳で大きなファイルを開くときのパフォーマンスが向上しました。
  • メモ帳がサポートするようになりました Ctrl+Backspace 前のWordを削除します。
  • 矢印キーは、最初にテキストの選択を正しく解除してから、カーソルを移動するようになりました。
  • メモ帳でファイルを保存するときに、行番号と列番号が1にリセットされなくなりました。
  • メモ帳で、画面に完全に収まらない線が正しく表示されるようになりました。

現在、Unixの行末サポート、テキストズーム機能、ワードラップモードのステータスバーもあります。

Windows 10 Insider Previewビルド17713の発表

メモ帳はメモリマップトファイルを使用します であることも確認されていますが、それは最初の部分です。難しいのは、行を解析して行の折り返しを行うことです。 Notepad ++でさえ、超巨大なファイルを開くときは最悪です。 大きな.txtでパフォーマンスが低下する を参照してください

8
phuclv

メモ帳は、WindowsEditコントロールの周りのシェルにすぎません。少量のテキストを編集するために設計され、そのために最適化されました。初期のバージョンは、これらの最適化が重要である非常に限られたリソースを持つシステムで実行する必要がありました。 Windows95の公式要件はわずか4MB RAMであり、技術的な理由から、編集コントロールは64Kのテキストに制限されていました。NTプラットフォームはそれほど制限されていませんでしたが、限られたリソースで動作する必要がありました。 。

小さなファイル用のエディターの設計は比較的簡単です。大きなファイルで効率的に機能するものを設計することは単純ではなく、非常に複雑なコードを必要とします。小さくて単純なエディタは、大きなファイルではうまく機能しません。メモ帳だけでなく、そのようなすべてのエディターは、強力なコンピューターであっても、数ギガバイトのファイルで窒息します。一部の高度なエディターはこれを簡単に処理できます。

メモ帳は、その意図された目的のためにまだうまく機能し、何年にもわたってほとんど変更されていません。 Windows Editコントロールは、ほとんどのWindowsアプリケーションで何らかの形で使用されるため、大きな変更が加えられた場合、非互換性の可能性が高くなります。なぜ不必要な変更を加えるチャンスをつかむのですか?経験によれば、最も些細な変更がアプリケーションの非互換性を引き起こす可能性があります

より大きなファイルを編集する必要がある場合は、他にもたくさんのエディターを利用できます。メモ帳はこのために設計されたことはありません。

3
LMiller7