← ブログ一覧へ

隣地抽出と点数補正が速くなりました

隣地抽出を約 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 秒ほどで返ります。

こちらは、絞り込む順番を変えただけです。先に四角い範囲でざっくり切ってから、 正確な距離で測り直すようにしました。全国の筆を相手にすると、この順番だけで 待ち時間が変わります。

筆界未定の表示

表示設定 → 特殊な筆の着色で筆界未定地を出したとき、地図の動きが重くなることが ありました。こちらも同じ見直しをしています。

これから

今回直したのは、筆を探す部分だけです。出力されるファイルの中身、座標値、地番の 並びは何も変わっていません。

ほかにも「ここが遅い」と感じる場面がありましたら、画面右下のフィードバックから お知らせください。どの操作でどれくらい待つか、が分かると探しやすくなります。