@@ -197,6 +197,41 @@ fn benchmark_replace_large_minified_source(b: &mut Bencher) {
197197 } ) ;
198198}
199199
200+ fn benchmark_source_for_replace_large_minified_source_with_cache ( b : & mut Bencher ) {
201+ let antd_minify = SourceMapSource :: new ( SourceMapSourceOptions {
202+ value : ANTD_MIN_JS ,
203+ name : "antd.min.js" ,
204+ source_map : SourceMap :: from_json ( ANTD_MIN_JS_MAP ) . unwrap ( ) ,
205+ original_source : None ,
206+ inner_source_map : None ,
207+ remove_original_source : false ,
208+ } ) ;
209+ let mut replace_source = ReplaceSource :: new ( antd_minify) ;
210+ replace_source. replace ( 107 , 114 , "exports" , None ) ;
211+ replace_source. replace ( 130 , 143 , "'object'" , None ) ;
212+ replace_source. replace ( 165 , 172 , "__webpack_require__" , None ) ;
213+ replace_source
. replace ( 173 , 180 , "/*! react */\" ./node_modules/.pnpm/[email protected] /node_modules/react/index.js\" " , None ) ; 214+ replace_source. replace ( 183 , 190 , "__webpack_require__" , None ) ;
215+ replace_source
. replace ( 191 , 202 , "/*! react-dom */\" ./node_modules/.pnpm/[email protected] [email protected] /node_modules/react-dom/index.js\" " , None ) ; 216+ replace_source. replace ( 205 , 212 , "__webpack_require__" , None ) ;
217+ replace_source
. replace ( 213 , 220 , "/*! dayjs */\" ./node_modules/.pnpm/[email protected] /node_modules/dayjs/dayjs.min.js\" " , None ) ; 218+ replace_source. replace ( 363 , 370 , "exports" , None ) ;
219+ replace_source. replace ( 373 , 385 , "exports.antd" , None ) ;
220+ replace_source. replace ( 390 , 397 , "__webpack_require__" , None ) ;
221+ replace_source
. replace ( 398 , 405 , "/*! react */\" ./node_modules/.pnpm/[email protected] /node_modules/react/index.js\" " , None ) ; 222+ replace_source. replace ( 408 , 415 , "__webpack_require__" , None ) ;
223+ replace_source
. replace ( 416 , 427 , "/*! react-dom */\" ./node_modules/.pnpm/[email protected] [email protected] /node_modules/react-dom/index.js\" " , None ) ; 224+ replace_source. replace ( 430 , 437 , "__webpack_require__" , None ) ;
225+ replace_source
. replace ( 438 , 445 , "/*! dayjs */\" ./node_modules/.pnpm/[email protected] /node_modules/dayjs/dayjs.min.js\" " , None ) ; 226+ replace_source. replace ( 494 , 498 , "this" , None ) ;
227+
228+ let cached = CachedSource :: new ( replace_source. boxed ( ) ) ;
229+
230+ b. iter ( || {
231+ cached. source ( ) ;
232+ } ) ;
233+ }
234+
200235fn benchmark_concat_generate_string_with_cache_as_key ( b : & mut Bencher ) {
201236 let sms_minify = SourceMapSource :: new ( SourceMapSourceOptions {
202237 value : HELLOWORLD_MIN_JS ,
@@ -278,6 +313,10 @@ fn bench_rspack_sources(criterion: &mut Criterion) {
278313 "concat_generate_string_as_key" ,
279314 benchmark_concat_generate_string_as_key,
280315 ) ;
316+ group. bench_function (
317+ "source_for_replace_large_minified_source_with_cache" ,
318+ benchmark_source_for_replace_large_minified_source_with_cache,
319+ ) ;
281320 group. finish ( ) ;
282321}
283322
0 commit comments