昨日は動揺したが,だいぶ落ち着いてきた。幸い大事には至らず,むしろこれも結果的に追い風になるような気がしてきた。
開発作業と相性が良かった輪郭整備兼一日一文を「輪郭整備兼文書整備」に置き換えることを思い付いた。8月上旬に機能実装,中旬に文書整備と考えていたが,あえて混ぜてしまうことにした。
来月から気分を切り替えるため,「全てのデライターへ」を一気に書き上げた。
OFFSET
句}(211)デライト高速化における KNEST 隠し実装が一段落した。18日は作業方針検討のみで20日から,休日を除いてちょうど10日間での達成だった。夜に出振るい済み。
必要以上に固め過ぎるのも良くないため,隠し化は現時点で最低限必要な範囲に留めたが,期待以上の安定性で期待通りの高速化が得られた。次の施策も出来たので,まだまだ高速化出来る。KNEST 隠しは Dex に匹敵するデライトの武器になるだろう。
交度整理をしっかり進めたこともあり最初の輪数取得改良が想定以上に長引いたものの,ここで KNEST 隠し共通の問題がほとんど解決したため,自我隠し・輪郭隠しは半日ほどで終わった。この交度整理も収穫として大きかった。輪郭操作系の kn
の外充て函数を整備したことで関連交度も一気に整理された。
影響範囲と確率的に大きな問題はないだろうと見て,排他制御が甘い部分をあえて残して出振るいを急いだが,出振るい直後に壊衝が多発して少し焦った。すぐに論軸的な問題と気付き修正し,その後はむしろ想定以上に安定して動いている。この判断も結果として正解だった。
輪数隠しに関しては,第二次知番改良中に固まった「輪数取得改良」として,輪数取得の仕組みを全体的に改良した。
これまでデルンではいちいち厳密な輪数表示をしていたが,これが大きな低速化要因になっていた。デライト以前まで,count()
の遅さに対する認識が甘かった。デライト以後,そもそも出場における件数計算は原理的に遅いもの,と気付いてページ付け(OFFSET
句)に上限を設けるなどの対策はしていた(希哲13年10月14日の開発記録)が,輪数は一筋縄ではいかない部分があり放置してきた。
厳密な同期の必要性や隠し効率から,次のように整理することにした。
今回は適当に調整するだけで済ませようと思っていた行内交度における越化だが,内容をいったん代置子に置き換え,最後に戻すという「代置子方式」を思い付き,一気に書き直した。これで越化処理が見通し良くまとまり,一つ課題が片付いた。出振るいは明日に持ち越し。
単純な手法なのでデラング整備の最初の方で思い付いてはいたのだが,まだ Dex 実装が出来て間もない時期で役割分担も未整理な所が多かったため,すっきり実装出来るイメージが湧かず,否定正規表現を利用するという方針にしていた(希哲15年7月9日1歩)。ただ,これも再考するとなかなか回りくどい。Dex 実装も十分に整理され,取り扱いにも慣れた所で,一番単純な手法に回帰することになった。
退避させる文字列配列は部区個体に持たせる形で,体系的に Dex に組み込めた。行内交度だけでなく,範囲越化が必要な場面一般に応用出来る。
Dex では,置換処理の過程で適当な目印が必要な場合に &&foo;
のような疑似実体参照とでもいうべきものを使っていたが,検索上紛らわしいことがあり(通常の実体参照が部分一致するなど),論理演算子とも被るため,&_foo;
に統一していくことにした。順次置換する。
ほか,パンくず記法(10歩)やキーボード記法(14歩)についての再検討でも進展,