◀Unicode版開発トップへ
  • 803 削除が遅い問題の修正
    • 804 Re:削除が遅い問題の修正
      • 805 Re2:削除が遅い問題の修正
        • 806 Re3:削除が遅い問題の修正
          • 807 Re4:削除が遅い問題の修正
            • 809 Re5:削除が遅い問題の修正
  • [803] 削除が遅い問題の修正 ラスティブ 2009年02月06日 17:07

    CSearchAgent::ReplaceDataの
    CMemory::AppendString関数が大きなボトルネックになっていたので、
    mem/CStringListの一方向リストにいったん削除文字列を格納し、
    その後で結合する方法に変更しました。

    PatchUnicode #2571657
    • [804] Re:削除が遅い問題の修正 ラスティブ 2009年02月06日 20:11

      万単位の行を消すときにボトルネックになっているところは、

      CLayoutMgr_New2.cpp 128行あたりにある

      pArg->nModLineTo = DoLayout_Range(...

      のようです。とりあえず報告です。
      • [805] Re2:削除が遅い問題の修正 ラスティブ 2009年02月06日 20:14

        ▼ ラスティブさん
        > 万単位の行を消すときにボトルネックになっているところは、
        >
        > CLayoutMgr_New2.cpp 128行あたりにある
        >
        > pArg->nModLineTo = DoLayout_Range(...
        >
        > のようです。とりあえず報告です。

        うそです。。。すみません。
        • [806] Re3:削除が遅い問題の修正 ラスティブ 2009年02月06日 20:22

          ▼ ラスティブさん
          > ▼ ラスティブさん
          > > 万単位の行を消すときにボトルネックになっているところは、
          > >
          > > CLayoutMgr_New2.cpp 128行あたりにある
          > >
          > > pArg->nModLineTo = DoLayout_Range(...
          > >
          > > のようです。とりあえず報告です。
          >

          削除して元に戻すときに上記のところでなかなか戻ってこれません。
          削除操作でなかなか戻ってこない場所は、
          その少し上に書かれてある

          pLayoutPrev = DeleteLayoutAsLogical(...

          のようです。
          • [807] Re4:削除が遅い問題の修正 test 2009年02月07日 15:45

            ▼ ラスティブさん
            ANSI版でも同じような箇所を直せば、
            数万行以上の削除が遅い問題が解決するんですか?
            • [809] Re5:削除が遅い問題の修正 ラスティブ 2009年02月07日 18:57

              Patch [ 2576450 ] 削除が遅い問題の修正
              に、
              PatchUnicode [ 2571657 ] 削除が遅い問題の修正

              と同じ内容のパッチをアップしました。

              ▼ testさん
              > ▼ ラスティブさん
              > ANSI版でも同じような箇所を直せば、
              > 数万行以上の削除が遅い問題が解決するんですか?

              CDocLineMgr_New.cpp の 142行目にある以下の記述が
              ANSI版でもボトルネックになってました。

              if( NULL == pArg->pcmemDeleted->Append( &pLine[nWorkPos], nWorkLen ) ){
              ...