/ 最近 .rdf 追記 編集 設定 本棚

脳log[20170222]



2017年02月22日 (水) これを読んでいて「Optimizations in Syntax Highlighting, a Visual Studio Code Story」本題とは違うんだけど、はっとさせられたこと。ある行を変更したことで次の行の色分け開始状態が変化したとして、それ以降のどこかの行で変更の前後で状態が変わらなかったら色分けのやり直しを中断できる。■確認手順。1.「脳log[20090808p03] サクラエディタの正規表現キーワードを SHJS相当にしたい。」の SHJS方式の色分けをするサクラエディタを起動する(事前に設定が必要)。2.例えば TypeScriptは自身が JavaScriptで書かれているらしく lib/tsc.jsは 2.6MB・54065行の巨大な JavaScriptファイルだからこれを貼り付けて、ファイルの先頭にカーソルを移動してから JavaScriptのタイプ別設定を適用する。3.Ctrl+Endでファイル末端へ飛ぶことで強制的にすべての色分けを完了させる。およそ10秒待ちます。4.そうすると今は Ctrl+Homeと Ctrl+Endでファイルの先頭と末尾を行き来しても特別な待ち時間はかからない。5.ファイルの先頭の1文字(スラッシュ=複数行コメントを開始するトークンの一部)を削除するとコメントが終了する14行目までの色分けが変化する。それ以降の行は元のままのようだ。6.さてお立ち会い。ここで Ctrl+Endでファイル末尾へ飛ぶとどうなるか。見えていない部分にまで実質の変化をもたらさない変更が伝播していたら、また10秒待たされるだろう。■初回の色分けのプロファイルを取ったら10秒待ちが20秒待ちになったけど、主に何を待っているか>highlighting profile (top 13 of exclusive time consumption for about 20 seconds running).txt. およそ3割の時間を使ってトップの BoSubstWは他の関数の間違いじゃないかと思うけど、bregonig.dll内の関数であることは間違いないだろう。本質とは無関係な部分で時間を空費しているわけではなさそうでひと安心。といっても、他は newとか freeとか atとか nullとか activeなので、メモリと、鬼のように呼ばれまくる軽量アクセサ・軽量状態取得関数なんだけど。