@@ -44,17 +44,9 @@ pub struct PluginModuleCacheInner {
44
44
fs_cache_hash_store : AHashMap < String , Hash > ,
45
45
// Generic in-memory cache to the raw bytes, either read by fs or supplied by bindgen.
46
46
memory_cache_store : AHashMap < String , Vec < u8 > > ,
47
- /*
48
- A naive hashmap to the compiled plugin modules.
49
- Current it doesn't have any invalidation or expiration logics like lru,
50
- having a lot of plugins may create some memory pressure.
51
- [TODO]: This is currently disabled, since on the latest wasmer@3 subsequent
52
- plugin load via in memory module causes intermittent heap_get_oob when
53
- host tries to allocate memory inside of the guest.
54
-
55
- Current guess is memory instance is being corrupted by the previous run, but
56
- until figure out root cause & fix will only use fs_cache directly.
57
- */
47
+ // A naive hashmap to the compiled plugin modules.
48
+ // Current it doesn't have any invalidation or expiration logics like lru,
49
+ // having a lot of plugins may create some memory pressure.
58
50
compiled_module_bytes : AHashMap < String , ( wasmer:: Store , wasmer:: Module ) > ,
59
51
}
60
52
@@ -75,11 +67,27 @@ impl PluginModuleCacheInner {
75
67
is_in_cache
76
68
}
77
69
70
+ /// Insert raw plugin module bytes into cache does not have compiled
71
+ /// wasmer::Module. The bytes stored in this type of cache will return
72
+ /// RawPluginModuleBytes. It is strongly recommend to avoid using this
73
+ /// type of cache as much as possible, since module compilation time for
74
+ /// the wasm is noticeably expensive and caching raw bytes only cuts off
75
+ /// the reading time for the plugin module.
78
76
pub fn insert_raw_bytes ( & mut self , key : String , value : Vec < u8 > ) {
79
77
self . memory_cache_store . insert ( key, value) ;
80
78
}
81
79
82
- fn insert_compiled_module_bytes (
80
+ /// Insert already compiled wasmer::Module into cache.
81
+ /// The module stored in this cache will return CompiledPluginModuleBytes,
82
+ /// which costs near-zero time when calling its `compile_module` method as
83
+ /// it clones precompiled module directly.
84
+ ///
85
+ /// In genearl it is recommended to use either using filesystemcache
86
+ /// `store_bytes_from_path` which internally calls this or directly call
87
+ /// this to store compiled module bytes. CompiledModuleBytes provides way to
88
+ /// create it via RawModuleBytes, so there's no practical reason to
89
+ /// store raw bytes most cases.
90
+ pub fn insert_compiled_module_bytes (
83
91
& mut self ,
84
92
key : String ,
85
93
value : ( wasmer:: Store , wasmer:: Module ) ,
@@ -106,9 +114,8 @@ impl PluginModuleCacheInner {
106
114
self . fs_cache_hash_store
107
115
. insert ( key. to_string ( ) , module_bytes_hash) ;
108
116
109
- // [TODO]: reenable this
110
- // self.insert_compiled_module_bytes(key.to_string(), (store,
111
- // module));
117
+ // Also store in memory for the in-process cache.
118
+ self . insert_compiled_module_bytes ( key. to_string ( ) , ( store, module) ) ;
112
119
}
113
120
114
121
// Store raw bytes into memory cache.
1 commit comments
github-actions[bot] commentedon May 20, 2023
Benchmark
es/full/bugs-1
302452
ns/iter (± 6309
)312468
ns/iter (± 7918
)0.97
es/full/minify/libraries/antd
1536000724
ns/iter (± 50043402
)1701519117
ns/iter (± 42460614
)0.90
es/full/minify/libraries/d3
340052497
ns/iter (± 15358878
)331674758
ns/iter (± 17644945
)1.03
es/full/minify/libraries/echarts
1308856788
ns/iter (± 48455110
)1337115281
ns/iter (± 24978769
)0.98
es/full/minify/libraries/jquery
99934621
ns/iter (± 3929112
)101785867
ns/iter (± 3228935
)0.98
es/full/minify/libraries/lodash
106846184
ns/iter (± 4779092
)113597393
ns/iter (± 3660953
)0.94
es/full/minify/libraries/moment
53013554
ns/iter (± 305719
)57017021
ns/iter (± 1312052
)0.93
es/full/minify/libraries/react
20178562
ns/iter (± 486797
)20575234
ns/iter (± 487237
)0.98
es/full/minify/libraries/terser
276056052
ns/iter (± 12893247
)273515513
ns/iter (± 18875061
)1.01
es/full/minify/libraries/three
484009078
ns/iter (± 12261810
)478847190
ns/iter (± 24906070
)1.01
es/full/minify/libraries/typescript
2958529349
ns/iter (± 94405840
)3175671018
ns/iter (± 37968863
)0.93
es/full/minify/libraries/victory
720039933
ns/iter (± 28652347
)721155251
ns/iter (± 35121463
)1.00
es/full/minify/libraries/vue
145381148
ns/iter (± 5747170
)147448021
ns/iter (± 7144817
)0.99
es/full/codegen/es3
33422
ns/iter (± 67
)34145
ns/iter (± 141
)0.98
es/full/codegen/es5
33480
ns/iter (± 78
)34170
ns/iter (± 79
)0.98
es/full/codegen/es2015
33490
ns/iter (± 73
)34196
ns/iter (± 60
)0.98
es/full/codegen/es2016
33481
ns/iter (± 56
)34250
ns/iter (± 38
)0.98
es/full/codegen/es2017
33434
ns/iter (± 80
)34177
ns/iter (± 62
)0.98
es/full/codegen/es2018
33502
ns/iter (± 28
)34170
ns/iter (± 54
)0.98
es/full/codegen/es2019
33497
ns/iter (± 55
)34088
ns/iter (± 43
)0.98
es/full/codegen/es2020
33491
ns/iter (± 79
)34134
ns/iter (± 39
)0.98
es/full/all/es3
180073957
ns/iter (± 3620581
)182326995
ns/iter (± 5337277
)0.99
es/full/all/es5
174777212
ns/iter (± 4064080
)176086616
ns/iter (± 3037878
)0.99
es/full/all/es2015
137081118
ns/iter (± 1230994
)142860188
ns/iter (± 2665710
)0.96
es/full/all/es2016
135142243
ns/iter (± 1814260
)137983144
ns/iter (± 3702390
)0.98
es/full/all/es2017
129101587
ns/iter (± 2060725
)136009286
ns/iter (± 2098316
)0.95
es/full/all/es2018
125165938
ns/iter (± 1271878
)132677255
ns/iter (± 2544637
)0.94
es/full/all/es2019
127637718
ns/iter (± 2458126
)131592145
ns/iter (± 2074315
)0.97
es/full/all/es2020
119762284
ns/iter (± 1515273
)120841903
ns/iter (± 1166349
)0.99
es/full/parser
521431
ns/iter (± 10700
)527121
ns/iter (± 12365
)0.99
es/full/base/fixer
22625
ns/iter (± 24
)22289
ns/iter (± 22
)1.02
es/full/base/resolver_and_hygiene
85159
ns/iter (± 100
)85259
ns/iter (± 100
)1.00
serialization of serde
123
ns/iter (± 0
)123
ns/iter (± 0
)1
css/minify/libraries/bootstrap
28664676
ns/iter (± 776003
)27806495
ns/iter (± 900161
)1.03
css/visitor/compare/clone
2224860
ns/iter (± 45202
)2208629
ns/iter (± 55509
)1.01
css/visitor/compare/visit_mut_span
2410560
ns/iter (± 78943
)2401006
ns/iter (± 65671
)1.00
css/visitor/compare/visit_mut_span_panic
2354620
ns/iter (± 34127
)2387488
ns/iter (± 68439
)0.99
css/visitor/compare/fold_span
3093154
ns/iter (± 64692
)3233713
ns/iter (± 91681
)0.96
css/visitor/compare/fold_span_panic
3407013
ns/iter (± 51051
)3294066
ns/iter (± 94440
)1.03
css/lexer/bootstrap_5_1_3
5172480
ns/iter (± 12111
)5170924
ns/iter (± 13598
)1.00
css/lexer/foundation_6_7_4
4358925
ns/iter (± 1592
)4354906
ns/iter (± 3140
)1.00
css/lexer/tailwind_3_1_1
826191
ns/iter (± 420
)826033
ns/iter (± 264
)1.00
css/parser/bootstrap_5_1_3
20901136
ns/iter (± 273158
)21704401
ns/iter (± 409361
)0.96
css/parser/foundation_6_7_4
16685383
ns/iter (± 337865
)17216907
ns/iter (± 359521
)0.97
css/parser/tailwind_3_1_1
3235123
ns/iter (± 6494
)3246791
ns/iter (± 5155
)1.00
es/codegen/colors
731473
ns/iter (± 395841
)731476
ns/iter (± 396063
)1.00
es/codegen/large
3171646
ns/iter (± 1681715
)3129187
ns/iter (± 1685084
)1.01
es/codegen/with-parser/colors
48427
ns/iter (± 548
)48443
ns/iter (± 245
)1.00
es/codegen/with-parser/large
510493
ns/iter (± 1815
)510679
ns/iter (± 1079
)1.00
es/minify/libraries/antd
1334695618
ns/iter (± 66590498
)1494323458
ns/iter (± 45439344
)0.89
es/minify/libraries/d3
293314767
ns/iter (± 15451895
)288459935
ns/iter (± 18951387
)1.02
es/minify/libraries/echarts
1137305041
ns/iter (± 54834848
)1138055140
ns/iter (± 40224766
)1.00
es/minify/libraries/jquery
88108620
ns/iter (± 2358006
)87188991
ns/iter (± 2561883
)1.01
es/minify/libraries/lodash
98060902
ns/iter (± 1940991
)103478120
ns/iter (± 3792028
)0.95
es/minify/libraries/moment
49212074
ns/iter (± 1589861
)48393976
ns/iter (± 1779211
)1.02
es/minify/libraries/react
18457020
ns/iter (± 377183
)17943353
ns/iter (± 524288
)1.03
es/minify/libraries/terser
243183294
ns/iter (± 7086235
)241590982
ns/iter (± 14912997
)1.01
es/minify/libraries/three
415304771
ns/iter (± 23033517
)422330280
ns/iter (± 23181414
)0.98
es/minify/libraries/typescript
2533786310
ns/iter (± 79446762
)2507001061
ns/iter (± 13581153
)1.01
es/minify/libraries/victory
633710619
ns/iter (± 37326548
)537495068
ns/iter (± 10948185
)1.18
es/minify/libraries/vue
130911879
ns/iter (± 5768125
)119345225
ns/iter (± 805801
)1.10
es/visitor/compare/clone
2430684
ns/iter (± 30130
)2321294
ns/iter (± 81442
)1.05
es/visitor/compare/visit_mut_span
2695064
ns/iter (± 31396
)2680401
ns/iter (± 6388
)1.01
es/visitor/compare/visit_mut_span_panic
2738279
ns/iter (± 61020
)2746715
ns/iter (± 7355
)1.00
es/visitor/compare/fold_span
4012325
ns/iter (± 73698
)3804914
ns/iter (± 7592
)1.05
es/visitor/compare/fold_span_panic
4154050
ns/iter (± 75150
)3921187
ns/iter (± 5153
)1.06
es/lexer/colors
13102
ns/iter (± 16
)13081
ns/iter (± 8
)1.00
es/lexer/angular
6421816
ns/iter (± 7786
)6397008
ns/iter (± 1943
)1.00
es/lexer/backbone
792089
ns/iter (± 598
)791671
ns/iter (± 616
)1.00
es/lexer/jquery
4463784
ns/iter (± 2300
)4448865
ns/iter (± 4338
)1.00
es/lexer/jquery mobile
6939533
ns/iter (± 6448
)6906282
ns/iter (± 3663
)1.00
es/lexer/mootools
3492514
ns/iter (± 1853
)3478852
ns/iter (± 4205
)1.00
es/lexer/underscore
657295
ns/iter (± 338
)654321
ns/iter (± 147
)1.00
es/lexer/three
21042675
ns/iter (± 43255
)20976855
ns/iter (± 7888
)1.00
es/lexer/yui
3879288
ns/iter (± 1603
)3867696
ns/iter (± 4999
)1.00
es/parser/colors
28709
ns/iter (± 47
)29019
ns/iter (± 115
)0.99
es/parser/angular
16158197
ns/iter (± 380695
)14941498
ns/iter (± 111971
)1.08
es/parser/backbone
2177398
ns/iter (± 17779
)2161024
ns/iter (± 17049
)1.01
es/parser/jquery
12547185
ns/iter (± 565148
)11759426
ns/iter (± 68503
)1.07
es/parser/jquery mobile
20297668
ns/iter (± 719086
)18248433
ns/iter (± 134581
)1.11
es/parser/mootools
9064769
ns/iter (± 205076
)8948873
ns/iter (± 37818
)1.01
es/parser/underscore
1827364
ns/iter (± 10726
)1834720
ns/iter (± 12966
)1.00
es/parser/three
56545985
ns/iter (± 858751
)51940694
ns/iter (± 266897
)1.09
es/parser/yui
9580337
ns/iter (± 146446
)9038132
ns/iter (± 54326
)1.06
es/preset-env/usage/builtin_type
141323
ns/iter (± 34330
)140394
ns/iter (± 33898
)1.01
es/preset-env/usage/property
19748
ns/iter (± 114
)20184
ns/iter (± 66
)0.98
es/resolver/typescript
109306615
ns/iter (± 2492239
)110925829
ns/iter (± 2410977
)0.99
es/fixer/typescript
81209751
ns/iter (± 956811
)80445663
ns/iter (± 523080
)1.01
es/hygiene/typescript
175511208
ns/iter (± 5802369
)166873544
ns/iter (± 1282699
)1.05
es/resolver_with_hygiene/typescript
304502401
ns/iter (± 14257709
)305238467
ns/iter (± 2320948
)1.00
es/visitor/base-perf/module_clone
80919
ns/iter (± 381
)80583
ns/iter (± 312
)1.00
es/visitor/base-perf/fold_empty
90371
ns/iter (± 406
)90173
ns/iter (± 235
)1.00
es/visitor/base-perf/fold_noop_impl_all
91017
ns/iter (± 875
)89320
ns/iter (± 350
)1.02
es/visitor/base-perf/fold_noop_impl_vec
90883
ns/iter (± 298
)89570
ns/iter (± 369
)1.01
es/visitor/base-perf/boxing_boxed_clone
58
ns/iter (± 0
)56
ns/iter (± 0
)1.04
es/visitor/base-perf/boxing_unboxed_clone
42
ns/iter (± 0
)42
ns/iter (± 0
)1
es/visitor/base-perf/boxing_boxed
105
ns/iter (± 0
)103
ns/iter (± 0
)1.02
es/visitor/base-perf/boxing_unboxed
79
ns/iter (± 0
)78
ns/iter (± 0
)1.01
es/visitor/base-perf/visit_contains_this
3439
ns/iter (± 42
)3386
ns/iter (± 23
)1.02
es/base/parallel/resolver/typescript
5820947776
ns/iter (± 470268677
)5757257636
ns/iter (± 382224951
)1.01
es/base/parallel/hygiene/typescript
2072425070
ns/iter (± 31196608
)1967040321
ns/iter (± 28756349
)1.05
misc/visitors/time-complexity/time 5
105
ns/iter (± 0
)104
ns/iter (± 1
)1.01
misc/visitors/time-complexity/time 10
361
ns/iter (± 2
)351
ns/iter (± 1
)1.03
misc/visitors/time-complexity/time 15
710
ns/iter (± 0
)693
ns/iter (± 4
)1.02
misc/visitors/time-complexity/time 20
1326
ns/iter (± 2
)1292
ns/iter (± 12
)1.03
misc/visitors/time-complexity/time 40
7004
ns/iter (± 22
)6987
ns/iter (± 34
)1.00
misc/visitors/time-complexity/time 60
17870
ns/iter (± 25
)17544
ns/iter (± 145
)1.02
es/full-target/es2016
253787
ns/iter (± 1035
)253647
ns/iter (± 2599
)1.00
es/full-target/es2017
245641
ns/iter (± 471
)240464
ns/iter (± 1106
)1.02
es/full-target/es2018
235445
ns/iter (± 269
)229889
ns/iter (± 1606
)1.02
es2020_nullish_coalescing
93401
ns/iter (± 459
)90978
ns/iter (± 718
)1.03
es2020_optional_chaining
124983
ns/iter (± 130
)122600
ns/iter (± 943
)1.02
es2022_class_properties
149632
ns/iter (± 329
)147017
ns/iter (± 1049
)1.02
es2018_object_rest_spread
96105
ns/iter (± 189
)94249
ns/iter (± 774
)1.02
es2019_optional_catch_binding
85850
ns/iter (± 154
)84006
ns/iter (± 462
)1.02
es2017_async_to_generator
86326
ns/iter (± 173
)84450
ns/iter (± 587
)1.02
es2016_exponentiation
90853
ns/iter (± 195
)88437
ns/iter (± 741
)1.03
es2015_arrow
94068
ns/iter (± 266
)91822
ns/iter (± 689
)1.02
es2015_block_scoped_fn
92424
ns/iter (± 217
)89390
ns/iter (± 361
)1.03
es2015_block_scoping
170192
ns/iter (± 336
)164132
ns/iter (± 927
)1.04
This comment was automatically generated by workflow using github-action-benchmark.