タグ

ブックマーク / vivi.dyndns.org (2)

  • テキストエディタ用バッファの各種データ構造とその評価 (2)

    vector類をvector類で管理する組み合わせについて、考察とパフォーマンス測定を行う。 測定項目は以下の項目とする。 バッファ構築時間 シーケンシャルアクセス+1文字削除時間・使用メモリ量 シーケンシャルアクセス+1文字挿入時間・使用メモリ量 vector<shared_ptr<array<char>>> 最も基的な組み合わせ。 STL には array が無いので、reserve であらかじめ領域を確保しサイズを固定にした vector<char> を代わりに用いる。 array のサイズは 32KB としてみる。array サイズを変えた場合の計測は余裕があれば行う。 文字データが array サイズ以上になった場合、可能なら前後の array に送る。そうでない場合は新たに array を作成する。 編集コストおよびブロック分割時コストは、ブロックサイズを B とすれば O(

    terurou
    terurou 2010/02/15
    オンメモリに全て展開出来る場合はGapBuffer、メモリに格納できない場合はPieceTable
  • テキストエディタ用バッファの各種データ構造とその評価

    概要 テキストエディタのためのバッファの各種データ構造について述べ、 それらを筆者がC++で STLに準じたインタフェースを持つテンプレートクラスとして実装したものについて、 パフォーマンス(処理速度、使用メモリ量)計測を行った結果を報告する。 筆者が実際にテキストエディタを実装する場合にどのデータ構造がよいか、という視点で評価を行う。 目次: はじめに バッファに要求される機能・性能 バッファクラスのインタフェース パフォーマンス計測 各種データ構造 gap_vector<wchar_t> VS. list<wstring> gap_vector<wstring> 終わりに 参考文献 はじめに テキストエディタは、簡単に言うと、シーケンシャルなテキスト情報を保持し、ユーザの指示により内容を表示、修正するプログラムである。 上図のような構造はオブジェクト指向な設計と親和性が高い。 テキスト

  • 1