Geo::D...nce::XS(3pm)

πŸ“¦ version 0.13, in ubuntu jammy

✨ 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 for cos and mt are... 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 (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