import bench from "https://raw.githubusercontent.com/crabmusket/nodemark/deno/index.js"; import { encode } from "https://deno.land/x/msgpack@v1.2/mod.ts"; const res1 = await fetch( "https://raw.githubusercontent.com/endel/msgpack-benchmark/master/sample-large.json", ); const sample = await res1.json(); const res2 = await fetch( "https://geojson-maps.ash.ms/countries/50m/USA.geojson", ); const usa = await res2.json(); const one = bench( () => JSON.stringify(sample), ); const two = bench( () => encode(sample), ); console.log("\nResults:\n"); console.log("JSON with lots of strings:"); console.table([ { method: "JSON.stringify", result: one.toString() }, { method: "msgpack.encode", result: two.toString() }, ]); console.log(); const three = bench( () => JSON.stringify(usa), ); const four = bench( () => encode(usa), ); console.log("GeoJSON with lots of numbers:"); console.table([ { method: "JSON.stringify", result: three.toString() }, { method: "msgpack.encode", result: four.toString() }, ]); console.log(); const usaFlat = { properties: usa.properties, geometry: usa.geometry.coordinates.map((poly) => poly.flat(Infinity)), }; const five = bench( () => JSON.stringify(usaFlat), ); const six = bench( () => encode(usaFlat), ); console.log("GeoJSON with flattened arrays:"); console.table([ { method: "JSON.stringify", result: five.toString() }, { method: "msgpack.encode", result: six.toString() }, ]); console.log(); const usaPacked = { properties: usa.properties, geometry: usa.geometry.coordinates.map((poly) => new Float64Array(poly.flat(Infinity)) ), }; const seven = bench( () => JSON.stringify(usaPacked), ); const eight = bench( () => encode(usaPacked), ); console.log("GeoJSON with Float64Arrays:"); console.table([ { method: "JSON.stringify", result: seven.toString() }, { method: "msgpack.encode", result: eight.toString() }, ]); console.log();