Skip to content

Performance benchmarks #3

@adl1995

Description

@adl1995

Listed below are some performance benchmarks for the following methods:

  • Karney direct (series 1, 2, 3, 4, 5, 6, 7, 8)
  • Vincenty direct
  • Thomas direct

Compiler used: g++ (version 7.2.0)
Optimization level: O3

The execution times are calculated using the Boost Chrono library. I created a separate .cpp file for each method, otherwise, I was getting similar execution times when all methods were placed in a single file. The code for a single file is available on GitHub. I used this Makefile for compiling all .cpp files. The dataset associated with GeographicLib is used (https://zenodo.org/record/32156).

Direct methods

Table 1

First 100K entries, i.e. the points randomly distributed on the ellipsoid.

Method Time (seconds)
Karney (order 1) 0.742535
Karney (order 2) 0.778593
Karney (order 3) 0.760253
Karney (order 4) 0.759539
Karney (order 5) 0.751717
Karney (order 6) 0.76962
Karney (order 7) 0.775933
Karney (order 8) 0.781861
Vincenty 0.835348
Thomas (order 1) 0.834416
Thomas (order 2) 0.862714

Table 2

First 200K entries, i.e. the points randomly distributed on the ellipsoid.

Method Time (seconds)
Karney (order 1) 1.44966
Karney (order 2) 1.46227
Karney (order 3) 1.46714
Karney (order 4) 1.47369
Karney (order 5) 1.48329
Karney (order 6) 1.58164
Karney (order 7) 1.51181
Karney (order 8) 1.52453
Vincenty 1.60484
Thomas (order 1) 1.59485
Thomas (order 2) 1.60706

Table 3

For 1e6 iterations. Comparison is done for the following input:

lon1=0., lat1=47.565626644319, s12=865.0302904, azi1=109.645188791724
Method lon2 lat2 azi2 Time (seconds)
Karney (order 1) 0.01080725671 47.56301492 109.6531649 0.842479958
Karney (order 2) 0.01082583273 47.56301043 109.6531786 0.934280867
Karney (order 3) 0.01082581511 47.56301043 109.6531786 0.946098476
Karney (order 4) 0.0108258151 47.56301043 109.6531786 1.020440514
Karney (order 5) 0.0108258151 47.56301043 109.6531786 1.026539299
Karney (order 6) 0.0108258151 47.56301043 109.6531786 1.149418505
Karney (order 7) 0.0108258151 47.56301043 109.6531786 1.156282074
Karney (order 8) 0.0108258151 47.56301043 109.6531786 1.27542
Vincenty 0.0001889553612 47.56558099 109.6453283 1.156431093
Thomas (order 1) 0.0001889553612 47.56558099 109.6453283 1.207880594
Thomas (order 2) 0.0001889553611 47.56558099 109.6453283 1.229166743

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions