Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2916606
bench_string_escape.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
bench_string_escape.js
View Options
const
now
=
()
=>
typeof
performance
!==
'undefined'
&&
performance
.
now
?
performance
.
now
()
:
Date
.
now
();
function
bench
(
name
,
fn
,
iters
=
1
)
{
fn
();
const
t0
=
now
();
for
(
let
i
=
0
;
i
<
iters
;
i
++
)
fn
();
const
dt
=
now
()
-
t0
;
const
per
=
(
dt
/
iters
).
toFixed
(
3
);
console
.
log
(
`
${
name
}
:
${
dt
.
toFixed
(
2
)
}
ms total,
${
per
}
ms/iter (
${
iters
}
iters)`
);
}
// simple escape sequences
bench
(
'simple escapes (\\n\\t\\r)'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"hello\tworld\nfoo\rbar"
;
},
50
);
bench
(
'backslash + quote escapes'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"it\'s a \"test\" with \\backslash"
;
},
50
);
// hex escapes \xNN
bench
(
'hex escapes (\\xNN)'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"\x41\x42\x43\x61\x62\x63\x00\xff"
;
},
50
);
// unicode escapes \uNNNN
bench
(
'unicode 4-digit (\\uNNNN)'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"\u0041\u00e9\u4e16\u754c\u0048\u0065"
;
},
50
);
// unicode braced escapes \u{NNNNN}
bench
(
'unicode braced (\\u{N+})'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"\u{41}\u{e9}\u{4e16}\u{1f600}\u{10ffff}"
;
},
50
);
// null escape
bench
(
'null escape (\\0)'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"abc\0def\0ghi"
;
},
50
);
// mixed escapes in one string
bench
(
'mixed escapes'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"tab\there\nnewline\r\x41\u0042\u{43}end\\done"
;
},
50
);
// template literals with escapes
bench
(
'template literal escapes'
,
()
=>
{
let
s
=
''
;
const
x
=
42
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
`\t\n\x41\u0042\u{43} val=
${
x
}
`
;
},
50
);
// template literal with many interpolations
bench
(
'template interpolation heavy'
,
()
=>
{
let
s
=
''
;
const
a
=
1
,
b
=
2
,
c
=
3
,
d
=
4
,
e
=
5
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
`
${
a
}
-
${
b
}
-
${
c
}
-
${
d
}
-
${
e
}
`
;
},
50
);
// long string with scattered escapes
bench
(
'long string scattered escapes'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
2000
;
i
++
)
s
=
"aaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbb\tcccccccccccccccc\rdddddddddddddddd\x41eeeeeeeeeeeeeeee\u0042ffffffffffffffff"
;
},
50
);
// string concatenation with escapes
bench
(
'concat with escapes'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
2000
;
i
++
)
s
+=
"\n\t\x41\u0042"
;
},
20
);
// octal escapes (legacy)
bench
(
'octal escapes'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"\101\102\103\141\142\143"
;
},
50
);
// form feed, vertical tab, backspace
bench
(
'rare escapes (\\v\\f\\b)'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"a\vb\fc\bd"
;
},
50
);
// no escapes baseline
bench
(
'no escapes (baseline)'
,
()
=>
{
let
s
=
''
;
for
(
let
i
=
0
;
i
<
5000
;
i
++
)
s
=
"hello world this is a plain string with no escapes at all"
;
},
50
);
File Metadata
Details
Attached
Mime Type
application/javascript
Expires
Thu, Mar 26, 6:06 PM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
512049
Default Alt Text
bench_string_escape.js (2 KB)
Attached To
Mode
rANT Ant
Attached
Detach File
Event Timeline
Log In to Comment