• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

uber / h3-go / 36499045753
100%

Build:
DEFAULT BRANCH: master
Ran 28 Sep 2026 11:39PM UTC
Jobs 1
Files 19
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

28 Sep 2026 11:38PM UTC coverage: 100.0%. Remained the same
36499045753

push

github

web-flow
perf: reuse per-vertex trig in cell area and hoist boundary tables in x/h3go (#143)

Profile CellArea and EdgeLength on the pure-Go path. The premise that they
allocate no longer holds: Boundary is inlined into both and the compiler keeps
the boundary slice on the stack, so no boundary type change is needed. The time
splits between building the boundary and the trig that follows it, and three
pieces of it were avoidable:

- areaRads2 evaluated sin and cos of each vertex's half-latitude twice, once as
  the start of an edge and once as the end of the next. It now evaluates them
  once per vertex and carries them to the next edge. The edge order and the
  Kahan sum are unchanged, so the result is bit-identical.
- vec2d.toVec3 rebuilt the tangent-plane basis of the face center on every
  call, including a vector normalize. The basis for each face is now a
  package-level table computed once with the same function.
- toVerts and pentToVerts declared their vertex offset tables as locals, which
  the compiler materialized with two 144-byte copies per call. They are now
  package-level and selected by pointer; the pentagon table was a prefix of the
  hexagon one, so there is one pair of tables instead of two.

A digest of every boundary vertex, cell area, cell center, edge length and edge
boundary over 62,048 cells across all resolutions is identical before and
after.

benchstat, Go implementation only, six interleaved rounds of each side on an
Apple M3 Max (taken before the vertex-table hoist; a later ten-round run that
included it agreed in direction but ran under heavier load, with CellAreaKm2 at
-15% and the rest within its wider noise):

                           │     old      │                 new                │
                           │    sec/op    │   sec/op     vs base               │
CellAreaRads2-16             505.2n ± 3%   440.5n ± 2%  -12.83% (p=0.002 n=6)
CellToBoundary-16            343.7n ± 6%   328.2n ± 4%   -4.54% (p=0.002 n=6)
Ver... (continued)

36 of 36 new or added lines in 2 files covered. (100.0%)

4311 of 4311 relevant lines covered (100.0%)

2858015.84 hits per line

Jobs
ID Job ID Ran Files Coverage
1 Go- - 36499045753.1 28 Sep 2026 11:39PM UTC 19
100.0
GitHub Action Run
Source Files on build 36499045753
  • Tree
  • List 19
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 7289606d on github
  • Prev Build on master (#36494950939)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc