@@ -42,40 +42,7 @@ impl TheBencher for OxcBencher {
4242 const ID : & ' static str = "oxc" ;
4343
4444 fn run ( path : & Path , source_text : & str ) -> Self :: RunOutput {
45- use oxc:: {
46- allocator:: Allocator ,
47- codegen:: { Codegen , CodegenOptions } ,
48- parser:: Parser ,
49- span:: SourceType ,
50- transformer:: { ReactOptions , TransformOptions , Transformer , TypeScriptOptions } ,
51- } ;
52-
53- let allocator = Allocator :: default ( ) ;
54- let source_type = SourceType :: from_path ( path) . unwrap ( ) ;
55- {
56- let ret = Parser :: new ( & allocator, source_text, source_type) . parse ( ) ;
57- let trivias = ret. trivias ;
58- let mut program = ret. program ;
59- let transform_options = TransformOptions {
60- typescript : TypeScriptOptions :: default ( ) ,
61- react : ReactOptions :: default ( ) ,
62- ..TransformOptions :: default ( )
63- } ;
64- Transformer :: new (
65- & allocator,
66- Path :: new ( "" ) ,
67- source_type,
68- & source_text,
69- & trivias,
70- transform_options,
71- )
72- . build ( & mut program)
73- . unwrap ( ) ;
74- let _transformed_text =
75- Codegen :: < false > :: new ( "" , source_text, CodegenOptions :: default ( ) , None )
76- . build ( & program) ;
77- }
78- allocator
45+ bench_transformer:: oxc:: transform ( path, source_text)
7946 }
8047}
8148
@@ -86,56 +53,8 @@ impl TheBencher for SwcBencher {
8653
8754 const ID : & ' static str = "swc" ;
8855
89- fn run ( path : & Path , source : & str ) -> Self :: RunOutput {
90- use std:: sync:: Arc ;
91- use swc:: { Compiler , PrintArgs , SwcComments } ;
92- use swc_common:: { chain, source_map:: SourceMap , sync:: Lrc , Mark , GLOBALS } ;
93- use swc_ecma_parser:: { EsConfig , Parser , StringInput , Syntax , TsConfig } ;
94- use swc_ecma_transforms_react:: { react, Options } ;
95- use swc_ecma_transforms_typescript:: strip;
96- use swc_ecma_visit:: FoldWith ;
97-
98- let cm = Lrc :: new ( SourceMap :: new ( swc_common:: FilePathMapping :: empty ( ) ) ) ;
99- let compiler = Compiler :: new ( Arc :: clone ( & cm) ) ;
100- let comments = SwcComments :: default ( ) ;
101- let syntax = match path. extension ( ) . unwrap ( ) . to_str ( ) . unwrap ( ) {
102- "js" => Syntax :: Es ( EsConfig :: default ( ) ) ,
103- "tsx" => Syntax :: Typescript ( TsConfig {
104- tsx : true ,
105- ..TsConfig :: default ( )
106- } ) ,
107- _ => panic ! ( "need to define syntax for swc" ) ,
108- } ;
109-
110- GLOBALS . set ( & Default :: default ( ) , || {
111- let program = Parser :: new (
112- syntax,
113- StringInput :: new ( source, Default :: default ( ) , Default :: default ( ) ) ,
114- Some ( & comments) ,
115- )
116- . parse_program ( )
117- . unwrap ( ) ;
118-
119- let top_level_mark = Mark :: new ( ) ;
120- let unresolved_mark = Mark :: new ( ) ;
121- let mut ast_pass = chain ! (
122- strip( top_level_mark) ,
123- react(
124- Arc :: clone( & cm) ,
125- Some ( comments) ,
126- Options :: default ( ) ,
127- top_level_mark,
128- unresolved_mark
129- ) ,
130- ) ;
131- let program = program. fold_with ( & mut ast_pass) ;
132-
133- let _ret = compiler
134- . print ( & program, PrintArgs :: default ( ) )
135- . expect ( "print failed" ) ;
136-
137- program
138- } )
56+ fn run ( path : & Path , source_text : & str ) -> Self :: RunOutput {
57+ bench_transformer:: swc:: transform ( path, source_text)
13958 }
14059}
14160
0 commit comments