@@ -3,28 +3,46 @@ const common = require('../common.js');
3
3
const { fileURLToPath, pathToFileURL } = require ( 'node:url' ) ;
4
4
const isWindows = process . platform === 'win32' ;
5
5
6
- const bench = common . createBenchmark ( main , {
7
- input : isWindows ? [
8
- 'file:///c/ ',
9
- ] : [
10
- ' file:///dev/null ',
11
- 'file:///dev/null?key=param&bool ' ,
12
- 'file:///dev/null?key=param&bool#hash ' ,
13
- ] ,
14
- method : isWindows ? [
15
- 'fileURLToPath ',
16
- ] : [
17
- 'fileURLToPath ',
18
- 'pathToFileURL ',
19
- ] ,
20
- n : [ 5e6 ] ,
21
- } ) ;
6
+ const inputs = isWindows ? [
7
+ 'C:\\foo' ,
8
+ 'C:\\Program Files\\Music\\Web Sys\\main.html?REQUEST=RADIO ',
9
+ '\\\\nas\\My Docs\\File.doc' ,
10
+ '\\\\?\\UNC\\server\\share\\folder\\ file.txt ',
11
+ 'file:///C:/foo ' ,
12
+ 'file:///C:/dir/foo?query=1 ' ,
13
+ 'file:///C:/dir/foo#fragment' ,
14
+ ] : [
15
+ '/dev/null ',
16
+ '/dev/null?key=param&bool' ,
17
+ '/dev/null?key=param&bool#hash ',
18
+ 'file:///dev/null ',
19
+ 'file:///dev/null?key=param&bool' ,
20
+ 'file:///dev/null?key=param&bool#hash' ,
21
+ ] ;
22
22
23
- function main ( { n, input, method } ) {
24
- method = method === 'fileURLOrPath' ? fileURLToPath : pathToFileURL ;
23
+ const bench = common . createBenchmark (
24
+ main ,
25
+ {
26
+ method : [ 'pathToFileURL' , 'fileURLToPath' ] ,
27
+ input : Object . values ( inputs ) ,
28
+ n : [ 5e6 ] ,
29
+ } ,
30
+ {
31
+ combinationFilter : ( p ) => (
32
+ ( isWindows ?
33
+ ( ! p . input . startsWith ( 'file://' ) && p . method === 'pathToFileURL' ) :
34
+ p . method === 'pathToFileURL'
35
+ ) ||
36
+ ( p . input . startsWith ( 'file://' ) && p . method === 'fileURLToPath' )
37
+ ) ,
38
+ } ,
39
+ ) ;
40
+
41
+ function main ( { method, input, n } ) {
42
+ const methodFunc = method === 'fileURLToPath' ? fileURLToPath : pathToFileURL ;
25
43
bench . start ( ) ;
26
44
for ( let i = 0 ; i < n ; i ++ ) {
27
- method ( input ) ;
45
+ methodFunc ( input ) ;
28
46
}
29
47
bench . end ( n ) ;
30
48
}
0 commit comments