You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
3.6 KiB
190 lines
3.6 KiB
'use strict'
|
|
|
|
const benchmark = require('benchmark')
|
|
const suite = new benchmark.Suite()
|
|
|
|
const schema = {
|
|
title: 'Example Schema',
|
|
type: 'object',
|
|
properties: {
|
|
firstName: {
|
|
type: 'string'
|
|
},
|
|
lastName: {
|
|
type: ['string', 'null']
|
|
},
|
|
age: {
|
|
description: 'Age in years',
|
|
type: 'integer',
|
|
minimum: 0
|
|
}
|
|
}
|
|
}
|
|
const schemaCJS = {
|
|
title: 'Example Schema',
|
|
type: 'object',
|
|
properties: {
|
|
firstName: {
|
|
type: 'string'
|
|
},
|
|
lastName: {
|
|
type: ['string', 'null']
|
|
},
|
|
age: {
|
|
description: 'Age in years',
|
|
type: 'number',
|
|
minimum: 0
|
|
}
|
|
}
|
|
}
|
|
|
|
const arraySchema = {
|
|
title: 'array schema',
|
|
type: 'array',
|
|
items: schema
|
|
}
|
|
|
|
const arraySchemaCJS = {
|
|
title: 'array schema',
|
|
type: 'array',
|
|
items: schemaCJS
|
|
}
|
|
|
|
const obj = {
|
|
firstName: 'Matteo',
|
|
lastName: 'Collina',
|
|
age: 32
|
|
}
|
|
|
|
const multiArray = []
|
|
|
|
const JSTR = require('json-strify')
|
|
const JSTRStringify = JSTR(schemaCJS)
|
|
const JSTRArray = JSTR(arraySchemaCJS)
|
|
const JSTRInstance = JSTR()
|
|
|
|
const CJS = require('compile-json-stringify')
|
|
const CJSStringify = CJS(schemaCJS)
|
|
const CJSStringifyArray = CJS(arraySchemaCJS)
|
|
const CJSStringifyString = CJS({ type: 'string' })
|
|
|
|
const FJS = require('.')
|
|
const stringify = FJS(schema)
|
|
const stringifyUgly = FJS(schema, { uglify: true })
|
|
const stringifyArray = FJS(arraySchema)
|
|
const stringifyArrayUgly = FJS(arraySchema, { uglify: true })
|
|
const stringifyString = FJS({ type: 'string' })
|
|
const stringifyStringUgly = FJS({ type: 'string', uglify: true })
|
|
var str = ''
|
|
|
|
for (var i = 0; i < 10000; i++) {
|
|
str += i
|
|
if (i % 100 === 0) {
|
|
str += '"'
|
|
}
|
|
}
|
|
|
|
Number(str)
|
|
|
|
for (i = 0; i < 1000; i++) {
|
|
multiArray.push(obj)
|
|
}
|
|
|
|
suite.add('FJS creation', function () {
|
|
FJS(schema)
|
|
})
|
|
suite.add('JSTR creation', function () {
|
|
JSTR(schemaCJS)
|
|
})
|
|
suite.add('CJS creation', function () {
|
|
CJS(schemaCJS)
|
|
})
|
|
|
|
suite.add('JSON.stringify array', function () {
|
|
JSON.stringify(multiArray)
|
|
})
|
|
|
|
suite.add('fast-json-stringify array', function () {
|
|
stringifyArray(multiArray)
|
|
})
|
|
|
|
suite.add('fast-json-stringify-uglified array', function () {
|
|
stringifyArrayUgly(multiArray)
|
|
})
|
|
|
|
suite.add('json-strify array', function () {
|
|
JSTRArray(multiArray)
|
|
})
|
|
|
|
suite.add('compile-json-stringify array', function () {
|
|
CJSStringifyArray(multiArray)
|
|
})
|
|
|
|
suite.add('JSON.stringify long string', function () {
|
|
JSON.stringify(str)
|
|
})
|
|
|
|
suite.add('fast-json-stringify long string', function () {
|
|
stringifyString(str)
|
|
})
|
|
|
|
suite.add('fast-json-stringify-uglified long string', function () {
|
|
stringifyStringUgly(str)
|
|
})
|
|
|
|
suite.add('json-strify long string', function () {
|
|
JSTRInstance(str)
|
|
})
|
|
|
|
suite.add('compile-json-stringify long string', function () {
|
|
CJSStringifyString(str)
|
|
})
|
|
|
|
suite.add('JSON.stringify short string', function () {
|
|
JSON.stringify('hello world')
|
|
})
|
|
|
|
suite.add('fast-json-stringify short string', function () {
|
|
stringifyString('hello world')
|
|
})
|
|
|
|
suite.add('fast-json-stringify-uglified short string', function () {
|
|
stringifyStringUgly('hello world')
|
|
})
|
|
|
|
suite.add('json-strify short string', function () {
|
|
JSTRInstance('hello world')
|
|
})
|
|
|
|
suite.add('compile-json-stringify short string', function () {
|
|
CJSStringifyString('hello world')
|
|
})
|
|
|
|
suite.add('JSON.stringify obj', function () {
|
|
JSON.stringify(obj)
|
|
})
|
|
|
|
suite.add('fast-json-stringify obj', function () {
|
|
stringify(obj)
|
|
})
|
|
|
|
suite.add('fast-json-stringify-uglified obj', function () {
|
|
stringifyUgly(obj)
|
|
})
|
|
|
|
suite.add('json-strify obj', function () {
|
|
JSTRStringify(obj)
|
|
})
|
|
|
|
suite.add('compile-json-stringify obj', function () {
|
|
CJSStringify(obj)
|
|
})
|
|
|
|
suite.on('cycle', cycle)
|
|
|
|
suite.run()
|
|
|
|
function cycle (e) {
|
|
console.log(e.target.toString())
|
|
}
|