Skip to content
This repository has been archived by the owner on Mar 26, 2019. It is now read-only.

Commit

Permalink
update benchmarks
Browse files Browse the repository at this point in the history
  • Loading branch information
gray committed Apr 13, 2012
1 parent 388980f commit 0a71bff
Showing 1 changed file with 86 additions and 53 deletions.
139 changes: 86 additions & 53 deletions lib/Geo/Distance/XS.pm
Original file line number Diff line number Diff line change
Expand Up @@ -83,92 +83,125 @@ This is faster than the Vincenty formula, but trades a bit of accuracy.
=head1 PERFORMANCE
This distribution contains a benchmarking script which compares
C<Geo::Distance::XS> with C<Geo::Distance> and C<GIS::Distance::Fast>.
These are the results on a MacBook 2GHz with Perl 5.12.2:
C<Geo::Distance::XS> with C<Geo::Distance> and C<GIS::Distance::Fast>. These
are the results on a MacBook 2GHz with Perl 5.14.2:
---- [ Formula: hsin ] ------------------------------------
perl - distance from LA to NY: 2443.08796228363 miles
xs - distance from LA to NY: 2443.08796228363 miles
gis_fast - distance from LA to NY: 2443.08796228363 miles
Benchmark: running gis_fast, perl, xs for at least 1 CPU seconds...
gis_fast: 1 wallclock secs ( 1.06 usr + 0.01 sys = 1.07 CPU) @ 23642.99/s (n=25298)
perl: 1 wallclock secs ( 1.11 usr + 0.00 sys = 1.11 CPU) @ 77490.99/s (n=86015)
xs: 1 wallclock secs ( 1.00 usr + 0.01 sys = 1.01 CPU) @ 1238753.47/s (n=1251141)
Rate gis_fast perl xs
gis_fast 23643/s -- -69% -98%
perl 77491/s 228% -- -94%
xs 1238753/s 5139% 1499% --
gis_fast 23209/s -- -72% -98%
perl 82707/s 256% -- -92%
xs 998734/s 4203% 1108% --
---- [ Formula: tv ] ------------------------------------
perl - distance from LA to NY: 2448.24135235512 miles
xs - distance from LA to NY: 2448.48844386882 miles
gis_fast - distance from LA to NY: 2448.24135235512 miles
Rate perl gis_fast xs
perl 18797/s -- -13% -95%
gis_fast 21525/s 15% -- -94%
xs 344063/s 1730% 1498% --
---- [ Formula: polar ] ------------------------------------
perl - distance from LA to NY: 2766.02509696782 miles
xs - distance from LA to NY: 2766.02509696782 miles
gis_fast - distance from LA to NY: 2766.02509696782 miles
Benchmark: running gis_fast, perl, xs for at least 1 CPU seconds...
gis_fast: 1 wallclock secs ( 1.14 usr + -0.01 sys = 1.13 CPU) @ 19029.20/s (n=21503)
perl: 1 wallclock secs ( 1.07 usr + 0.00 sys = 1.07 CPU) @ 80387.85/s (n=86015)
xs: 2 wallclock secs ( 1.12 usr + -0.01 sys = 1.11 CPU) @ 1458670.27/s (n=1619124)
Rate gis_fast perl xs
gis_fast 19029/s -- -76% -99%
perl 80388/s 322% -- -94%
xs 1458670/s 7565% 1715% --
gis_fast 19166/s -- -78% -98%
perl 87682/s 357% -- -93%
xs 1226609/s 6300% 1299% --
---- [ Formula: cos ] ------------------------------------
perl - distance from LA to NY: 2443.08796228363 miles
xs - distance from LA to NY: 2443.08796228363 miles
gis_fast - distance from LA to NY: 2443.08796228363 miles
Benchmark: running gis_fast, perl, xs for at least 1 CPU seconds...
gis_fast: 1 wallclock secs ( 1.06 usr + 0.00 sys = 1.06 CPU) @ 23866.04/s (n=25298)
perl: 1 wallclock secs ( 1.03 usr + 0.00 sys = 1.03 CPU) @ 75918.45/s (n=78196)
xs: 2 wallclock secs ( 1.07 usr + 0.01 sys = 1.08 CPU) @ 1279826.85/s (n=1382213)
Rate gis_fast perl xs
gis_fast 23866/s -- -69% -98%
perl 75918/s 218% -- -94%
xs 1279827/s 5263% 1586% --
gis_fast 23424/s -- -71% -98%
perl 80388/s 243% -- -93%
xs 1117090/s 4669% 1290% --
---- [ Formula: gcd ] ------------------------------------
perl - distance from LA to NY: 12438.0476860875-9076.08896733252i miles
perl - distance from LA to NY: 2443.08796228363 miles
xs - distance from LA to NY: 2443.08796228363 miles
gis_fast - distance from LA to NY: 12438.0476860875-9076.08896733252i miles
gis_fast - distance from LA to NY: 2443.08796228363 miles
Benchmark: running gis_fast, perl, xs for at least 1 CPU seconds...
gis_fast: 2 wallclock secs ( 1.07 usr + 0.00 sys = 1.07 CPU) @ 4185.98/s (n=4479)
perl: 1 wallclock secs ( 1.06 usr + 0.00 sys = 1.06 CPU) @ 6339.62/s (n=6720)
xs: 2 wallclock secs ( 1.05 usr + 0.00 sys = 1.05 CPU) @ 1310719.05/s (n=1376255)
Rate gis_fast perl xs
gis_fast 4186/s -- -34% -100%
perl 6340/s 51% -- -100%
xs 1310719/s 31212% 20575% --
gis_fast 18101/s -- -75% -98%
perl 73770/s 308% -- -93%
xs 1092266/s 5934% 1381% --
---- [ Formula: mt ] ------------------------------------
perl - distance from LA to NY: 2443.08796228363 miles
xs - distance from LA to NY: 2443.08796228363 miles
gis_fast - distance from LA to NY: 2443.08796228363 miles
Benchmark: running gis_fast, perl, xs for at least 1 CPU seconds...
gis_fast: 1 wallclock secs ( 1.13 usr + 0.01 sys = 1.14 CPU) @ 17148.25/s (n=19549)
perl: 1 wallclock secs ( 1.07 usr + 0.01 sys = 1.08 CPU) @ 66370.37/s (n=71680)
xs: 0 wallclock secs ( 1.07 usr + 0.01 sys = 1.08 CPU) @ 1274310.19/s (n=1376255)
Rate gis_fast perl xs
gis_fast 17148/s -- -74% -99%
perl 66370/s 287% -- -95%
xs 1274310/s 7331% 1820% --
---- [ Formula: tv ] ------------------------------------
perl - distance from LA to NY: 2448.24135235512 miles
xs - distance from LA to NY: 2443.80013146211 miles
gis_fast - distance from LA to NY: 2448.24135235512 miles
Benchmark: running gis_fast, perl, xs for at least 1 CPU seconds...
gis_fast: 1 wallclock secs ( 1.05 usr + 0.01 sys = 1.06 CPU) @ 21353.77/s (n=22635)
perl: 1 wallclock secs ( 1.13 usr + 0.01 sys = 1.14 CPU) @ 15719.30/s (n=17920)
xs: 1 wallclock secs ( 1.04 usr + 0.00 sys = 1.04 CPU) @ 778425.00/s (n=809562)
Rate perl gis_fast xs
perl 15719/s -- -26% -98%
gis_fast 21354/s 36% -- -97%
xs 778425/s 4852% 3545% --
gis_fast 17454/s -- -75% -98%
perl 70149/s 302% -- -94%
xs 1147836/s 6476% 1536% --
This distribution contains another benchmarking script which compares
only the XS formulas over several different coordinates:
Rate tv hsin alt mt cos gcd polar
tv 16593/s -- -90% -91% -91% -91% -91% -92%
hsin 170328/s 927% -- -4% -7% -7% -13% -17%
alt 177535/s 970% 4% -- -3% -3% -9% -14%
mt 182781/s 1002% 7% 3% -- -1% -6% -11%
cos 183794/s 1008% 8% 4% 1% -- -6% -11%
gcd 194708/s 1073% 14% 10% 7% 6% -- -6%
polar 206279/s 1143% 21% 16% 13% 12% 6% --
Calculated length for short distance:
alt : 40.3547210428874 miles
cos : 40.3095459813536 miles
gcd : 40.3095459813294 miles
hsin : 40.3095459813294 miles
mt : 40.3095459813536 miles
polar: 46.7467797109043 miles
tv : 40.3780884309995 miles
Calculated length for long distance:
alt : 2445.82594045448 miles
cos : 2443.08796228363 miles
gcd : 2443.08796228363 miles
hsin : 2443.08796228363 miles
mt : 2443.08796228363 miles
polar: 2766.02509696782 miles
tv : 2448.48844386882 miles
Calculated length for nearly antipodes:
alt : 12354.157484494 miles
cos : 12340.327635068 miles
gcd : 12340.327635068 miles
hsin : 12340.327635068 miles
mt : 12340.327635068 miles
polar: 12368.4764642469 miles
tv : 12341.9938071999 miles
Calculated length for antipodes:
alt : 12431.1212380871 miles
cos : 219.005548031861 miles
gcd : 12438.0476860875 miles
hsin : 12438.0475680956 miles
mt : 219.005548031861 miles
polar: 12438.0476860875 miles
tv : 12371.4369809266 miles
Calculated length for polar antipodes:
alt : 12431.1212380871 miles
cos : 12438.0476860875 miles
gcd : 12438.0476860875 miles
hsin : 12438.0476860875 miles
mt : 12438.0476860875 miles
polar: 12438.0476860875 miles
tv : 12431.1212380419 miles
=head1 SEE ALSO
Expand Down

0 comments on commit 0a71bff

Please sign in to comment.