隣地抽出と点数補正が速くなりました
隣地抽出を約 13 倍、一括点数補正を約 3 倍速くしました。半径を指定した抽出と、筆界未定の表示も待たされなくなっています。実測した数字を載せています。
実測した数字
よく使われる操作の速度をまとめて見直しました。本番環境で測った数字です。
| 操作 | これまで | いま |
|---|---|---|
| 隣地抽出(28 筆) | 約 1.4 秒 | 約 0.1 秒 |
| 一括点数補正(100 筆) | 約 4.3 秒 | 約 1.4 秒 |
| 一括点数補正(1000 筆) | — | 約 11 秒 |
体感で一番変わるのは隣地抽出だと思います。押してから結果が並ぶまでの間が、ほぼ 無くなりました。
何をしたか
隣地抽出 — 探すより、探す準備の方が長かった
調べてみると、筆を探している時間は 0.03 秒でした。残りは全部、探し始める前の 下準備に消えていました。1 回 0.65 秒のうち、0.6 秒が準備です。
この下準備は、扱う件数がとても多いときに効くものです。ところが隣地抽出は 「広い範囲から数十筆だけ取り出す」検索なので、準備の方が長くつく形になっていました。
準備をやめたところ、探す時間の 0.03 秒がそのまま返ってくるようになりました。
点数補正 — 220m 先の筆まで数えていた
こちらは別の理由です。3 筆以上が集まる角(そこの点は消してはいけません)を 見つけるとき、頂点 1 つにつき半径 220m ぶんの筆を集めて、そのすべてと距離を 測っていました。
実際に見るべきなのは 0.2m 以内の筆だけです。集める範囲をその実寸に合わせたところ、 1 頂点あたりの相手は 217 筆から 2 筆になりました。
判定の結果そのものは変えていません。変更前と変更後で同じ地域を計算し、残す点・ 消す点が 1 つも変わらないことを確認してから反映しています(田村市 100 筆・ 高槻市 100 筆)。
半径を指定した抽出
地番出力 → 半径でまとめて抽出するとき、待たされることがありました。いまは半径 300m でも 0.4 秒ほどで返ります。
こちらは、絞り込む順番を変えただけです。先に四角い範囲でざっくり切ってから、 正確な距離で測り直すようにしました。全国の筆を相手にすると、この順番だけで 待ち時間が変わります。
筆界未定の表示
表示設定 → 特殊な筆の着色で筆界未定地を出したとき、地図の動きが重くなることが ありました。こちらも同じ見直しをしています。
これから
今回直したのは、筆を探す部分だけです。出力されるファイルの中身、座標値、地番の 並びは何も変わっていません。
ほかにも「ここが遅い」と感じる場面がありましたら、画面右下のフィードバックから お知らせください。どの操作でどれくらい待つか、が分かると探しやすくなります。