Leaflet parseFloat in LatLng (v4)

Revision 4 of this benchmark created by Mourner on


Preparation HTML

<script>
var num1 = 534;
var num2 = 5.23435323;
var num3 = -8231;
var num4 = -723.1224325;
var num5 = 123;
var num6 = 2.234353;
var num7 = -323;
var num8 = -423.1224325;

function LatLng(lat, lng, alt) {
        lat = parseFloat(lat);
        lng = parseFloat(lng);

        if (isNaN(lat) || isNaN(lng)) {
                throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');
        }

        this.lat = lat;
        this.lng = lng;

        if (alt !== undefined) {
                this.alt = parseFloat(alt);
        }
};

function LatLng2(lat, lng, alt) {

        if (isNaN(lat) || isNaN(lng)) {
                throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');
        }

        this.lat = +lat;
        this.lng = +lng;

        if (alt !== undefined) {
                this.alt = +alt;
        }
};

function latLng(a, b) { 
        if (a instanceof LatLng) {
                return a;
        }
        if (Array.isArray(a)) {
                if (typeof a[0] === 'number' || typeof a[0] === 'string') {
                        return new LatLng(a[0], a[1], a[2]);
                } else {
                        return null;
                }
        }
        if (a === undefined || a === null) {
                return a;
        }
        if (typeof a === 'object' && 'lat' in a) {
                return new LatLng(a.lat, 'lng' in a ? a.lng : a.lon);
        }
        if (b === undefined) {
                return null;
        }
        return new LatLng(a, b);
};

function latLng2(a, b) {        
        if (a instanceof LatLng2) {
                return a;
        }
        if (Array.isArray(a) && typeof a[0] !== 'object') {
                if (a.length === 3) {
                        return new LatLng2(a[0], a[1], a[2]);
                } else {
                        return new LatLng2(a[0], a[1]);
                }
        }
        if (a === undefined || a === null) {
                return a;
        }
        if (typeof a === 'object' && 'lat' in a) {
                return new LatLng2(a.lat, 'lng' in a ? a.lng : a.lon);
        }
        if (b === undefined) {
                return null;
        }
        return new LatLng2(a, b);
};

</script>

Test runner

Ready to run.

Testing in
TestOps/sec
0.7
new LatLng(num1, num1);
new LatLng(num2, num2);
new LatLng(num3, num3);
new LatLng(num4, num4);
new LatLng(num5, num5);
new LatLng(num6, num6);
new LatLng(num7, num7);
new LatLng(num8, num8);
 
ready
master
new LatLng2(num1, num1);
new LatLng2(num2, num2);
new LatLng2(num3, num3);
new LatLng2(num4, num4);
new LatLng2(num5, num5);
new LatLng2(num6, num6);
new LatLng2(num7, num7);
new LatLng2(num8, num8);
 
ready
0.7 factory
latLng(num1, num1);
latLng(num2, num2);
latLng(num3, num3);
latLng(num4, num4);
latLng(num5, num5);
latLng(num6, num6);
latLng(num7, num7);
latLng(num8, num8);
 
ready
master factory
latLng2(num1, num1);
latLng2(num2, num2);
latLng2(num3, num3);
latLng2(num4, num4);
latLng2(num5, num5);
latLng2(num6, num6);
latLng2(num7, num7);
latLng2(num8, num8);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by Mourner on
  • Revision 2: published by Mourner on
  • Revision 3: published by danzel on
  • Revision 4: published by Mourner on