fast-uri
Version:
Dependency-free RFC 3986 URI toolbox
55 lines (41 loc) • 1.67 kB
JavaScript
import { Bench } from 'tinybench'
import { fastUri } from '../index.js'
const { serialize, normalize, parse } = fastUri
const asciiPath = '/users/profile/settings/account'
const asciiPathWithSpaces = '/users/john doe/profile page'
const cjkPath = '/ユーザー/プロフィール/設定'
const mixedPath = '/users/日本/profile-📱-emoji/設定'
const emojiPath = '/🚀/🌍/🎉/end'
const longAsciiPath = '/' + 'a/b/c/d/e/f/g/h/'.repeat(20)
const longUtf8Path = '/' + '日本/中文/한국/'.repeat(20)
const bench = new Bench({ name: 'encoder bench', time: 1000 })
bench.add('serialize ascii path', () => {
serialize({ scheme: 'http', host: 'example.com', path: asciiPath })
})
bench.add('serialize ascii path with spaces', () => {
serialize({ scheme: 'http', host: 'example.com', path: asciiPathWithSpaces })
})
bench.add('serialize cjk path', () => {
serialize({ scheme: 'http', host: 'example.com', path: cjkPath })
})
bench.add('serialize mixed path', () => {
serialize({ scheme: 'http', host: 'example.com', path: mixedPath })
})
bench.add('serialize emoji path', () => {
serialize({ scheme: 'http', host: 'example.com', path: emojiPath })
})
bench.add('serialize long ascii path', () => {
serialize({ scheme: 'http', host: 'example.com', path: longAsciiPath })
})
bench.add('serialize long utf8 path', () => {
serialize({ scheme: 'http', host: 'example.com', path: longUtf8Path })
})
bench.add('normalize utf8 uri', () => {
normalize('http://example.com/日本/profile')
})
bench.add('parse utf8 uri', () => {
parse('http://example.com/日本/profile')
})
await bench.run()
console.log(bench.name)
console.table(bench.table())