68 lines
2.1 KiB
JavaScript
68 lines
2.1 KiB
JavaScript
import fs from 'fs';
|
|
import path from 'path';
|
|
import load from 'load-json-file';
|
|
import Benchmark from 'benchmark';
|
|
import simplify from './';
|
|
|
|
const directory = path.join(__dirname, 'test', 'in') + path.sep;
|
|
const fixtures = fs.readdirSync(directory).map(filename => {
|
|
return {
|
|
name: path.parse(filename).name,
|
|
geojson: load.sync(directory + filename)
|
|
};
|
|
});
|
|
|
|
/**
|
|
* Single Process Benchmark
|
|
*
|
|
* argentina: 4.695ms
|
|
* featurecollection: 1.647ms
|
|
* fiji-hiQ: 0.461ms
|
|
* geometrycollection: 3.332ms
|
|
* linestring: 0.460ms
|
|
* multilinestring: 0.657ms
|
|
* multipoint: 0.193ms
|
|
* multipolygon: 6.108ms
|
|
* point: 0.032ms
|
|
* poly-issue#555-5: 4.956ms
|
|
* polygon: 0.675ms
|
|
* simple-polygon: 2.735ms
|
|
*/
|
|
for (const {name, geojson} of fixtures) {
|
|
let {tolerance, highQuality} = geojson.properties || {};
|
|
tolerance = tolerance || 0.01;
|
|
highQuality = highQuality || false;
|
|
console.time(name);
|
|
simplify(geojson, tolerance, highQuality);
|
|
console.timeEnd(name);
|
|
}
|
|
|
|
/**
|
|
* Benchmark Results
|
|
*
|
|
* argentina x 13,380 ops/sec ±4.31% (72 runs sampled)
|
|
* featurecollection x 4,709 ops/sec ±2.24% (76 runs sampled)
|
|
* fiji-hiQ x 41,197 ops/sec ±1.96% (80 runs sampled)
|
|
* geometrycollection x 4,690 ops/sec ±2.25% (78 runs sampled)
|
|
* linestring x 29,737 ops/sec ±2.26% (77 runs sampled)
|
|
* multilinestring x 20,530 ops/sec ±2.08% (77 runs sampled)
|
|
* multipoint x 394,980 ops/sec ±2.35% (77 runs sampled)
|
|
* multipolygon x 809 ops/sec ±3.32% (70 runs sampled)
|
|
* point x 5,157,027 ops/sec ±8.79% (72 runs sampled)
|
|
* poly-issue#555-5 x 1,816 ops/sec ±2.43% (66 runs sampled)
|
|
* polygon x 2,996 ops/sec ±2.85% (74 runs sampled)
|
|
* simple-polygon x 369 ops/sec ±7.55% (66 runs sampled)
|
|
*/
|
|
const suite = new Benchmark.Suite('turf-transform-simplify');
|
|
for (const {name, geojson} of fixtures) {
|
|
let {tolerance, highQuality} = geojson.properties || {};
|
|
tolerance = tolerance || 0.01;
|
|
highQuality = highQuality || false;
|
|
suite.add(name, () => simplify(geojson, tolerance, highQuality));
|
|
}
|
|
|
|
suite
|
|
.on('cycle', e => console.log(String(e.target)))
|
|
.on('complete', () => {})
|
|
.run();
|