@@ -4,7 +4,10 @@ const common = require('../common.js');
4
4
const assert = require ( 'assert' ) ;
5
5
6
6
const bench = common . createBenchmark ( main , {
7
- method : [ 'object' , 'nullProtoObject' , 'fakeMap' , 'map' ] ,
7
+ method : [
8
+ 'object' , 'nullProtoObject' , 'nullProtoLiteralObject' , 'storageObject' ,
9
+ 'fakeMap' , 'map'
10
+ ] ,
8
11
millions : [ 1 ]
9
12
} ) ;
10
13
@@ -36,6 +39,37 @@ function runNullProtoObject(n) {
36
39
bench . end ( n / 1e6 ) ;
37
40
}
38
41
42
+ function runNullProtoLiteralObject ( n ) {
43
+ const m = { __proto__ : null } ;
44
+ var i = 0 ;
45
+ bench . start ( ) ;
46
+ for ( ; i < n ; i ++ ) {
47
+ m [ 'i' + i ] = i ;
48
+ m [ 's' + i ] = String ( i ) ;
49
+ assert . strictEqual ( String ( m [ 'i' + i ] ) , m [ 's' + i ] ) ;
50
+ m [ 'i' + i ] = undefined ;
51
+ m [ 's' + i ] = undefined ;
52
+ }
53
+ bench . end ( n / 1e6 ) ;
54
+ }
55
+
56
+ function StorageObject ( ) { }
57
+ StorageObject . prototype = Object . create ( null ) ;
58
+
59
+ function runStorageObject ( n ) {
60
+ const m = new StorageObject ( ) ;
61
+ var i = 0 ;
62
+ bench . start ( ) ;
63
+ for ( ; i < n ; i ++ ) {
64
+ m [ 'i' + i ] = i ;
65
+ m [ 's' + i ] = String ( i ) ;
66
+ assert . strictEqual ( String ( m [ 'i' + i ] ) , m [ 's' + i ] ) ;
67
+ m [ 'i' + i ] = undefined ;
68
+ m [ 's' + i ] = undefined ;
69
+ }
70
+ bench . end ( n / 1e6 ) ;
71
+ }
72
+
39
73
function fakeMap ( ) {
40
74
const m = { } ;
41
75
return {
@@ -84,6 +118,12 @@ function main(conf) {
84
118
case 'nullProtoObject' :
85
119
runNullProtoObject ( n ) ;
86
120
break ;
121
+ case 'nullProtoLiteralObject' :
122
+ runNullProtoLiteralObject ( n ) ;
123
+ break ;
124
+ case 'storageObject' :
125
+ runStorageObject ( n ) ;
126
+ break ;
87
127
case 'fakeMap' :
88
128
runFakeMap ( n ) ;
89
129
break ;
0 commit comments