NAME
Geo::Distance::XS - speed up Geo::Distance
SYNOPSIS
use Geo::Distance::XS;my $geo = Geo::Distance->new;my $distance = $geo->distance(mile => $lon1, $lat1 => $lon2, $lat2);
DESCRIPTION
The "Geo::Distance::XS" module provides faster C implementations of the distance calculations found in "Geo::Distance". See the documentation for that module for usage.
NOTE: As of version 0.13, Geo::Distance automatically uses this module if it is installed.
FORMULAS
In addition to the formulas offered in "Geo::Distance", this module implements the additional formulas:
alt: Andoyer-Lambert-Thomas Formula
This is faster than the Vincenty formula, but trades a bit of accuracy.
PERFORMANCE
This distribution contains a benchmarking script which compares "Geo::Distance::XS" with "Geo::Distance" and "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 milesxs - distance from LA to NY: 2443.08796228363 milesgis_fast - distance from LA to NY: 2443.08796228363 milesRate gis_fast perl xsgis_fast 24802/s -- -70% -98%perl 81919/s 230% -- -92%xs 1003704/s 3947% 1125% ------ [ Formula: tv ] ------------------------------------perl - distance from LA to NY: 2448.24135235512 milesxs - distance from LA to NY: 2448.2413523656 milesgis_fast - distance from LA to NY: 2448.24135235512 milesRate perl gis_fast xsperl 18101/s -- -19% -95%gis_fast 22330/s 23% -- -94%xs 345717/s 1810% 1448% ------ [ Formula: polar ] ------------------------------------perl - distance from LA to NY: 2766.02509696782 milesxs - distance from LA to NY: 2766.02509696782 milesgis_fast - distance from LA to NY: 2766.02509696782 milesRate gis_fast perl xsgis_fast 19200/s -- -78% -98%perl 87682/s 357% -- -93%xs 1214700/s 6227% 1285% ------ [ Formula: cos ] ------------------------------------perl - distance from LA to NY: 2443.08796228363 milesxs - distance from LA to NY: 2443.08796228363 milesgis_fast - distance from LA to NY: 2443.08796228363 milesRate gis_fast perl xsgis_fast 24435/s -- -69% -98%perl 78913/s 223% -- -93%xs 1147836/s 4597% 1355% ------ [ Formula: gcd ] ------------------------------------perl - distance from LA to NY: 2443.08796228363 milesxs - distance from LA to NY: 2443.08796228363 milesgis_fast - distance from LA to NY: 2443.08796228363 milesRate gis_fast perl xsgis_fast 18270/s -- -75% -98%perl 74472/s 308% -- -93%xs 1102769/s 5936% 1381% ------ [ Formula: mt ] ------------------------------------perl - distance from LA to NY: 2443.08796228363 milesxs - distance from LA to NY: 2443.08796228363 milesgis_fast - distance from LA to NY: 2443.08796228363 milesRate gis_fast perl xsgis_fast 17935/s -- -75% -98%perl 71739/s 300% -- -94%xs 1135525/s 6231% 1483% --
This distribution contains another benchmarking script which compares only the XS formulas over several different coordinates:
Rate tv hsin alt cos mt gcd polartv 16906/s -- -90% -90% -91% -91% -91% -92%hsin 165414/s 878% -- -4% -8% -10% -13% -17%alt 172032/s 918% 4% -- -5% -7% -9% -14%cos 180326/s 967% 9% 5% -- -2% -5% -10%mt 184357/s 991% 11% 7% 2% -- -3% -8%gcd 189253/s 1019% 14% 10% 5% 3% -- -6%polar 200386/s 1085% 21% 16% 11% 9% 6% --Calculated length for short distance:alt : 40.3740136064528 milescos : 40.3095459813536 milesgcd : 40.3095459813294 mileshsin : 40.3095459813294 milesmt : 40.3095459813536 milespolar: 46.7467797109043 milestv : 40.3740136384531 milesCalculated length for long distance:alt : 2448.24135691376 milescos : 2443.08796228363 milesgcd : 2443.08796228363 mileshsin : 2443.08796228363 milesmt : 2443.08796228363 milespolar: 2766.02509696782 milestv : 2448.2413523656 milesCalculated length for nearly antipodes:alt : 12340.6455133245 milescos : 12340.327635068 milesgcd : 12340.327635068 mileshsin : 12340.327635068 milesmt : 12340.327635068 milespolar: 12368.4764642469 milestv : 12340.7483034002 milesCalculated length for antipodes:alt : 12429.86673988 milescos : 219.005548031861 milesgcd : 12438.0476860875 mileshsin : 12438.0475680956 milesmt : 219.005548031861 milespolar: 12438.0476860875 milestv : 12370.1885059814 milesCalculated length for polar antipodes:alt : 12429.86673988 milescos : 12438.0476860875 milesgcd : 12438.0476860875 mileshsin : 12438.0476860875 milesmt : 12438.0476860875 milespolar: 12438.0476860875 milestv : 12429.8667398787 miles
SEE ALSO
Geo::Distance
<http://blogs.esri.com/esri/apl/2010/09/28/fast-times-at-geodesic-high/>
REQUESTS AND BUGS
Please report any bugs or feature requests to <http://rt.cpan.org/Public/Bug/Report.html?Queue=Geo-Distance-XS>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Geo::Distance::XS
You can also look for information at:
- •
-
GitHub Source Repository
<http://github.com/gray/geo-distance-xs>
- •
-
AnnoCPAN: Annotated CPAN documentation
<http://annocpan.org/dist/Geo-Distance-XS>
- •
-
CPAN Ratings
<http://cpanratings.perl.org/d/Geo-Distance-XS>
- •
-
RT: CPAN's request tracker
<http://rt.cpan.org/Public/Dist/Display.html?Name=Geo-Distance-XS>
- •
-
Search CPAN
<http://search.cpan.org/dist/Geo-Distance-XS/>
COPYRIGHT AND LICENSE
Copyright (C) 2009-2014 gray <gray at cpan.org>, all rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
gray, <gray at cpan.org>