earstrip 是地圖軟體公司 GLMap 發布的開源多邊形三角化(triangulation)函式庫,採用 ISC 授權,同時提供 C++ 標頭檔與可在瀏覽器執行的 WebAssembly 套件,介面特地設計成與知名函式庫 earcut 相容。三角化是把地圖上的多邊形(例如國家邊界、建築物輪廓)拆成一個個三角形,才能讓繪圖引擎快速渲染,是地圖軟體的基礎運算工作。
作者在文章中詳細記錄了從最初單純的「耳切法」(ear clipping)實作,一路優化十個版本的過程:包括拿掉多餘的凹角檢查、改用三角形帶(triangle strip)輸出、把凹角分桶(bucketing)處理、以及改成不用分支判斷的計數方式等。每一步都附上實際省下的毫秒數,最終版本在瀏覽器裡比 earcut.js 快 1.4 到 2.1 倍,在 C++ 環境下比 earcut.hpp 快 14%,能在 489 毫秒內三角化 370 萬個地圖多邊形。
這篇文章的特別之處,不只是單純發布一個函式庫,更把整個效能優化過程公開拆解,從計算幾何的基礎概念(Delaunay 三角化、耳切法),到地圖資料常見的「挖洞」多邊形與座標四捨五入問題,再到瀏覽器裡 WebAssembly 編譯的額外成本都一一說明,對想了解效能調校實務的開發者相當完整。
對正在學程式的孩子來說,這篇文章比較進階,但很適合用來說明一個重要觀念:同一個功能,用不同寫法實作,速度可以差到好幾倍。家長可以藉此和孩子討論,寫出「能動的程式」只是第一步,之後觀察哪裡慢、一步步改善,才是工程師真正花時間磨練的能力。
開源效能優化開發工具地圖