Geo::D...nce::XS(3pm)
β¨ NAME β¨
Geo::Distance::XS β bestie, it makes Geo::Distance go zoom π¨
πΈ SYNOPSIS πΈ
use Geo::Distance::XS;
my $geo = Geo::Distance->new;
my $distance = $geo->distance(mile => $lon1, $lat1 => $lon2, $lat2);
okay literally that's it, three lines, and you're already speedrunning geography π
π DESCRIPTION π
So Geo::Distance::XS is the glow-up version of Geo::Distance β it ships faster C implementations of all the distance calculations you know and love from that module. It's giving "same vibes, way more horsepower". For actual usage deets, go read the docs over at Geo::Distance, because this one is just the engine, bestie π₯
NOTE: as of version 0.13, Geo::Distance automatically uses this module if it's installed. So like... install it and it just happens. Iconic behavior, no notes π
π¦ FORMULAS π¦
On top of all the formulas Geo::Distance already offers, this module adds one extra:
π alt: Andoyer-Lambert-Thomas Formula
She's faster than the Vincenty formula, but she trades a little bit of accuracy for that speed. Worth it, honestly. Slay π
π₯ PERFORMANCE π₯
This distribution ships with a benchmarking script that puts Geo::Distance::XS head-to-head with Geo::Distance and GIS::Distance::Fast. Here's what happened on a MacBook 2GHz running Perl 5.14.2 β the receipts, if you will π§Ύ
---- [ 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
Rate gis_fast perl xs
gis_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 miles
xs - distance from LA to NY: 2448.2413523656 miles
gis_fast - distance from LA to NY: 2448.24135235512 miles
Rate perl gis_fast xs
perl 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 miles
xs - distance from LA to NY: 2766.02509696782 miles
gis_fast - distance from LA to NY: 2766.02509696782 miles
Rate gis_fast perl xs
gis_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 miles
xs - distance from LA to NY: 2443.08796228363 miles
gis_fast - distance from LA to NY: 2443.08796228363 miles
Rate gis_fast perl xs
gis_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 miles
xs - distance from LA to NY: 2443.08796228363 miles
gis_fast - distance from LA to NY: 2443.08796228363 miles
Rate gis_fast perl xs
gis_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 miles
xs - distance from LA to NY: 2443.08796228363 miles
gis_fast - distance from LA to NY: 2443.08796228363 miles
Rate gis_fast perl xs
gis_fast 17935/s -- -75% -98%
perl 71739/s 300% -- -94%
xs 1135525/s 6231% 1483% --
π the way xs just demolishes the competition. Not even close. Main character energy fr fr.
There's also a second benchmarking script in this distribution that compares only the XS formulas across a bunch of different coordinates:
Rate tv hsin alt cos mt gcd polar
tv 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% --
And here's the accuracy tea β calculated lengths for each scenario π
Calculated length for short distance:
alt : 40.3740136064528 miles
cos : 40.3095459813536 miles
gcd : 40.3095459813294 miles
hsin : 40.3095459813294 miles
mt : 40.3095459813536 miles
polar: 46.7467797109043 miles
tv : 40.3740136384531 miles
Calculated length for long distance:
alt : 2448.24135691376 miles
cos : 2443.08796228363 miles
gcd : 2443.08796228363 miles
hsin : 2443.08796228363 miles
mt : 2443.08796228363 miles
polar: 2766.02509696782 miles
tv : 2448.2413523656 miles
Calculated length for nearly antipodes:
alt : 12340.6455133245 miles
cos : 12340.327635068 miles
gcd : 12340.327635068 miles
hsin : 12340.327635068 miles
mt : 12340.327635068 miles
polar: 12368.4764642469 miles
tv : 12340.7483034002 miles
Calculated length for antipodes:
alt : 12429.86673988 miles
cos : 219.005548031861 miles
gcd : 12438.0476860875 miles
hsin : 12438.0475680956 miles
mt : 219.005548031861 miles
polar: 12438.0476860875 miles
tv : 12370.1885059814 miles
Calculated length for polar antipodes:
alt : 12429.86673988 miles
cos : 12438.0476860875 miles
gcd : 12438.0476860875 miles
hsin : 12438.0476860875 miles
mt : 12438.0476860875 miles
polar: 12438.0476860875 miles
tv : 12429.8667398787 miles
the antipodes numbers forcosandmtare... unhinged π but that's just what the data says, bestie, I don't make the rules.
π SEE ALSO π
π REQUESTS AND BUGS π
Found a bug? Want a feature? Pls pls pls report it at <http://rt.cpan.org/Public/Bug/Report.html?Queue=Geo-Distance-XS> π The maintainer gets notified, and then you automatically get notified of progress on your bug as changes get made. It's a whole little notification bestie-ship, iykyk π
π«Ά SUPPORT π«Ά
You can pull up the docs for this module with the perldoc command:
perldoc Geo::Distance::XS
And you can also find info at all of these places:
- 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>
and that's the whole page, bestie π¦ this was perl v5.34.0, dated 2022-02-06, from the Geo::Distance::XS man page (3pm) in User Contributed Perl Documentation. go forth and calculate distances at unfathomable speeds, you absolute icon π
β¨
π¦ where this page comes from
- ubuntu jammy: libgeo-distance-xs-perl 0.13-2build7 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms