ego cache
{希哲16年9月18日の開発 K#F85E/E74C-5BA7}
宇田川浩行最初の中間出振るいに成功。これにより,全知検索の応答速度,柔軟性,交度品質が大きく向上した。出振るい作業も円滑に進み,手溢れも無く,全体として大成功だった。
輪郭情報取得改良
まず,期待通り,輪郭情報取得方式の改良により応答速度が大きく向上した。体感的にも,この種のサービスとしては並という程度から,はっきり速いと言える程度になり,快適度が数段上がった感覚がある。
これまでのデライト高速化施策の中でも最大級の効果を感じるが,これはボトルネック解消によるところが大きい。6月の Cμ 文字列処理改良あたりから,領下手定め環境での高速化効果の大きさに比べて本番環境での効果がかなり小さいと感じるようになっていた。考えられるボトルネックは,相振り・出場間の通信回数が多過ぎる輪郭情報取得処理だった。
これまで,ページに表示される輪郭情報の取得は,相振りから大体次の流れで行っていた。
- 輪郭隠しにない吊るし輪郭があれば輪郭情報を取得する(
dg_oln()
)。 - 輪郭一覧の輪郭情報を取得する(
dg_fnd()
か,吊るし輪郭の初期状態はdg_fg()
,dg_bg()
)。 - 各輪郭の自我情報・前後景輪情報を個別に取得する。
OFFSET
句}(211){希哲16年6月30日の開発 K#F85E/E74C-A106}
宇田川浩行デライト高速化における KNEST 隠し実装が一段落した。18日は作業方針検討のみで20日から,休日を除いてちょうど10日間での達成だった。夜に出振るい済み。
必要以上に固め過ぎるのも良くないため,隠し化は現時点で最低限必要な範囲に留めたが,期待以上の安定性で期待通りの高速化が得られた。次の施策も出来たので,まだまだ高速化出来る。KNEST 隠しは Dex に匹敵するデライトの武器になるだろう。
交度整理をしっかり進めたこともあり最初の輪数取得改良が想定以上に長引いたものの,ここで KNEST 隠し共通の問題がほとんど解決したため,自我隠し・輪郭隠しは半日ほどで終わった。この交度整理も収穫として大きかった。輪郭操作系の kn
の外充て函数を整備したことで関連交度も一気に整理された。
影響範囲と確率的に大きな問題はないだろうと見て,排他制御が甘い部分をあえて残して出振るいを急いだが,出振るい直後に壊衝が多発して少し焦った。すぐに論軸的な問題と気付き修正し,その後はむしろ想定以上に安定して動いている。この判断も結果として正解だった。
輪数取得改良
輪数隠しに関しては,第二次知番改良中に固まった「輪数取得改良」として,輪数取得の仕組みを全体的に改良した。
これまでデルンではいちいち厳密な輪数表示をしていたが,これが大きな低速化要因になっていた。デライト以前まで,count()
の遅さに対する認識が甘かった。デライト以後,そもそも出場における件数計算は原理的に遅いもの,と気付いてページ付け(OFFSET
句)に上限を設けるなどの対策はしていた(希哲13年10月14日の開発記録)が,輪数は一筋縄ではいかない部分があり放置してきた。
厳密な同期の必要性や隠し効率から,次のように整理することにした。
{希哲16年6月16日5歩 K#F85E/E74C-2C3A}
宇田川浩行第二次知番改良での交度・出場整理を経て,KNEST 隠しの実装イメージが急速にまとまってきた。
まず,輪数隠しについては「輪数取得改良」として出場設計の見直しも含めた包括的な実装方針が出来ている。
課題だった共通の出与え構造については,任意の鍵に隠し出与えと更新時印を持たせた map_
と,更新時印を鍵として本体の鍵を set_
で持たせた map_
を基礎とすることを決めた。これで古い隠しから削除していくような処理も簡単に実装出来る。
探索効率,保存効率,単純性,柔軟性を兼ね備えた実装がなかなか見つからなかったが,これで解決した。昨年4月12日10歩から,「浮上式隠し」として独自の出与え構造を考えていたものの,それも課題が多く再考せざるをえなくなっていた。
昨年9月から最優先で実装することを考えていた HTML 隠しについてはいったん後回しにすることにした。公開設定機能など,自我によってページ内容が大きく変わる機能実装が間近に控えている。テンプレートを保存するにしても,有効な場面は限られる。柔軟に利用出来る輪数隠し,自我隠し,輪郭隠しを優先すべきだろう。