-
-
Notifications
You must be signed in to change notification settings - Fork 716
Closed
Labels
Performancefeatures or fixes related to performancefeatures or fixes related to performance
Description
I have following benchmark for urlIsHttpHttpsScheme
import { bench, run } from 'mitata'
import { urlIsHttpHttpsScheme } from '../../lib/web/fetch/util.js'
const http = { protocol: 'http:' }
const https = { protocol: 'https:' }
const ftp = { protocol: 'ftp:' }
const ws = { protocol: 'ws:' }
const wss = { protocol: 'wss:' }
const mttp = { protocol: 'mttp:' }
const mttps = { protocol: 'mttps:' }
const htto = { protocol: 'htto:' }
const httos = { protocol: 'httos:' }
bench('urlIsHttpHttpsScheme "http:"', () => {
urlIsHttpHttpsScheme(http)
})
bench('urlIsHttpHttpsScheme "https:"', () => {
urlIsHttpHttpsScheme(https)
})
bench('urlIsHttpHttpsScheme "ftp:"', () => {
urlIsHttpHttpsScheme(ftp)
})
bench('urlIsHttpHttpsScheme "ws:"', () => {
urlIsHttpHttpsScheme(ws)
})
bench('urlIsHttpHttpsScheme "wss:"', () => {
urlIsHttpHttpsScheme(wss)
})
bench('urlIsHttpHttpsScheme "mttp:"', () => {
urlIsHttpHttpsScheme(mttp)
})
bench('urlIsHttpHttpsScheme "mttps:"', () => {
urlIsHttpHttpsScheme(mttps)
})
bench('urlIsHttpHttpsScheme "htto:"', () => {
urlIsHttpHttpsScheme(htto)
})
bench('urlIsHttpHttpsScheme "httos:"', () => {
urlIsHttpHttpsScheme(httos)
})
await run()If I run it against master I get:
benchmark time (avg) (min … max) p75 p99 p999
--------------------------------------------------------------------- -----------------------------
urlIsHttpHttpsScheme "http:" 1.49 ns/iter (716 ps … 211 ns) 1.6 ns 1.88 ns 5.39 ns
urlIsHttpHttpsScheme "https:" 1.63 ns/iter (920 ps … 34.2 ns) 1.64 ns 1.88 ns 5.56 ns
urlIsHttpHttpsScheme "ftp:" 1.47 ns/iter (682 ps … 54.67 ns) 1.6 ns 1.84 ns 5.35 ns
urlIsHttpHttpsScheme "ws:" 1.48 ns/iter (716 ps … 27.01 ns) 1.6 ns 1.67 ns 5.42 ns
urlIsHttpHttpsScheme "wss:" 1.47 ns/iter (716 ps … 33.66 ns) 1.6 ns 1.67 ns 5.39 ns
urlIsHttpHttpsScheme "mttp:" 1.48 ns/iter (682 ps … 454 ns) 1.6 ns 1.67 ns 6.55 ns
urlIsHttpHttpsScheme "mttps:" 1.47 ns/iter (716 ps … 25.1 ns) 1.6 ns 1.67 ns 5.35 ns
urlIsHttpHttpsScheme "htto:" 1.76 ns/iter (1.13 ns … 21.31 ns) 1.84 ns 2.08 ns 5.39 ns
urlIsHttpHttpsScheme "httos:" 1.64 ns/iter (887 ps … 35.81 ns) 1.64 ns 2.11 ns 5.42 nsIf modifiy it to:
function urlIsHttpHttpsScheme (url) {
if ('protocol' in url) {
const protocol = url.protocol
return protocol === 'http:' || protocol === 'https:'
}
assert('protocol' in url) // ensure it's a url object
}I get:
benchmark time (avg) (min … max) p75 p99 p999
--------------------------------------------------------------------- -----------------------------
urlIsHttpHttpsScheme "http:" 732 ps/iter (409 ps … 198 ns) 716 ps 955 ps 5.32 ns
urlIsHttpHttpsScheme "https:" 723 ps/iter (409 ps … 51.05 ns) 716 ps 955 ps 6.48 ns
urlIsHttpHttpsScheme "ftp:" 719 ps/iter (443 ps … 48.19 ns) 716 ps 955 ps 5.35 ns
urlIsHttpHttpsScheme "ws:" 718 ps/iter (443 ps … 27.35 ns) 716 ps 955 ps 5.32 ns
urlIsHttpHttpsScheme "wss:" 718 ps/iter (443 ps … 28.99 ns) 716 ps 955 ps 5.12 ns
urlIsHttpHttpsScheme "mttp:" 717 ps/iter (443 ps … 53.17 ns) 716 ps 955 ps 4.67 ns
urlIsHttpHttpsScheme "mttps:" 721 ps/iter (443 ps … 30.73 ns) 716 ps 955 ps 6.58 ns
urlIsHttpHttpsScheme "htto:" 717 ps/iter (443 ps … 28.88 ns) 716 ps 955 ps 5.15 ns
urlIsHttpHttpsScheme "httos:" 721 ps/iter (239 ps … 149 ns) 716 ps 955 ps 5.15 nsconjecture: assert slows down.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Performancefeatures or fixes related to performancefeatures or fixes related to performance