123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import { Bench } from 'tinybench'
- import { fastUri } from '../index.js'
- import { parse as uriJsParse, serialize as uriJsSerialize, resolve as uriJsResolve, equal as uriJsEqual } from 'uri-js'
- const base = 'uri://a/b/c/d;p?q'
- const domain = 'https://example.com/foo#bar$fiz'
- const ipv4 = '//10.10.10.10'
- const ipv6 = '//[2001:db8::7]'
- const urn = 'urn:foo:a123,456'
- const urnuuid = 'urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6'
- const urnuuidComponent = {
- scheme: 'urn',
- nid: 'uuid',
- uuid: 'f81d4fae-7dec-11d0-a765-00a0c91e6bf6'
- }
- const {
- parse: fastUriParse,
- serialize: fastUriSerialize,
- resolve: fastUriResolve,
- equal: fastUriEqual,
- } = fastUri
- // Initialization as there is a lot to parse at first
- // eg: regexes
- fastUriParse(domain)
- uriJsParse(domain)
- const benchFastUri = new Bench({ name: 'fast-uri benchmark' })
- const benchUriJs = new Bench({ name: 'uri-js benchmark' })
- const benchWHATWG = new Bench({ name: 'WHATWG URL benchmark' })
- benchFastUri.add('fast-uri: parse domain', function () {
- fastUriParse(domain)
- })
- benchUriJs.add('urijs: parse domain', function () {
- uriJsParse(domain)
- })
- benchWHATWG.add('WHATWG URL: parse domain', function () {
- // eslint-disable-next-line
- new URL(domain)
- })
- benchFastUri.add('fast-uri: parse IPv4', function () {
- fastUriParse(ipv4)
- })
- benchUriJs.add('urijs: parse IPv4', function () {
- uriJsParse(ipv4)
- })
- benchFastUri.add('fast-uri: parse IPv6', function () {
- fastUriParse(ipv6)
- })
- benchUriJs.add('urijs: parse IPv6', function () {
- uriJsParse(ipv6)
- })
- benchFastUri.add('fast-uri: parse URN', function () {
- fastUriParse(urn)
- })
- benchUriJs.add('urijs: parse URN', function () {
- uriJsParse(urn)
- })
- benchWHATWG.add('WHATWG URL: parse URN', function () {
- // eslint-disable-next-line
- new URL(urn)
- })
- benchFastUri.add('fast-uri: parse URN uuid', function () {
- fastUriParse(urnuuid)
- })
- benchUriJs.add('urijs: parse URN uuid', function () {
- uriJsParse(urnuuid)
- })
- benchFastUri.add('fast-uri: serialize URN uuid', function () {
- fastUriSerialize(urnuuidComponent)
- })
- benchUriJs.add('uri-js: serialize URN uuid', function () {
- uriJsSerialize(urnuuidComponent)
- })
- benchFastUri.add('fast-uri: serialize uri', function () {
- fastUriSerialize({
- scheme: 'uri',
- userinfo: 'foo:bar',
- host: 'example.com',
- port: 1,
- path: 'path',
- query: 'query',
- fragment: 'fragment'
- })
- })
- benchUriJs.add('urijs: serialize uri', function () {
- uriJsSerialize({
- scheme: 'uri',
- userinfo: 'foo:bar',
- host: 'example.com',
- port: 1,
- path: 'path',
- query: 'query',
- fragment: 'fragment'
- })
- })
- benchFastUri.add('fast-uri: serialize long uri with dots', function () {
- fastUriSerialize({
- scheme: 'uri',
- userinfo: 'foo:bar',
- host: 'example.com',
- port: 1,
- path: './a/./b/c/../.././d/../e/f/.././/',
- query: 'query',
- fragment: 'fragment'
- })
- })
- benchUriJs.add('urijs: serialize long uri with dots', function () {
- uriJsSerialize({
- scheme: 'uri',
- userinfo: 'foo:bar',
- host: 'example.com',
- port: 1,
- path: './a/./b/c/../.././d/../e/f/.././/',
- query: 'query',
- fragment: 'fragment'
- })
- })
- benchFastUri.add('fast-uri: serialize IPv6', function () {
- fastUriSerialize({ host: '2606:2800:220:1:248:1893:25c8:1946' })
- })
- benchUriJs.add('urijs: serialize IPv6', function () {
- uriJsSerialize({ host: '2606:2800:220:1:248:1893:25c8:1946' })
- })
- benchFastUri.add('fast-uri: serialize ws', function () {
- fastUriSerialize({ scheme: 'ws', host: 'example.com', resourceName: '/foo?bar', secure: true })
- })
- benchUriJs.add('urijs: serialize ws', function () {
- uriJsSerialize({ scheme: 'ws', host: 'example.com', resourceName: '/foo?bar', secure: true })
- })
- benchFastUri.add('fast-uri: resolve', function () {
- fastUriResolve(base, '../../../g')
- })
- benchUriJs.add('urijs: resolve', function () {
- uriJsResolve(base, '../../../g')
- })
- benchFastUri.add('fast-uri: equal', function () {
- fastUriEqual('example://a/b/c/%7Bfoo%7D', 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d')
- })
- benchUriJs.add('urijs: equal', function () {
- uriJsEqual('example://a/b/c/%7Bfoo%7D', 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d')
- })
- await benchFastUri.run()
- console.log(benchFastUri.name)
- console.table(benchFastUri.table())
- await benchUriJs.run()
- console.log(benchUriJs.name)
- console.table(benchUriJs.table())
- await benchWHATWG.run()
- console.log(benchWHATWG.name)
- console.table(benchWHATWG.table())
|