I can reproduce. The difference at 2017.11-36-g78caeb6bc is ≈0.133s vs ≈0.732s On 2015-03-17 05:58:27, pe...@reproducible.io wrote: > First reduced test-case (no argument): > > constant C1 is export = 1; > constant C2 is export = 2; > constant C3 is export = 3; > constant C4 is export = 4; > constant C5 is export = 5; > constant C6 is export = 6; > constant C7 is export = 7; > constant C8 is export = 8; > constant C9 is export = 9; > constant C10 is export = 10; > constant C11 is export = 11; > constant C12 is export = 12; > constant C13 is export = 13; > constant C14 is export = 14; > constant C15 is export = 15; > constant C16 is export = 16; > constant C17 is export = 17; > constant C18 is export = 18; > constant C19 is export = 19; > constant C20 is export = 20; > > Second reduced test-case (empty argument list): > > constant C1 is export() = 1; > constant C2 is export() = 2; > constant C3 is export() = 3; > constant C4 is export() = 4; > constant C5 is export() = 5; > constant C6 is export() = 6; > constant C7 is export() = 7; > constant C8 is export() = 8; > constant C9 is export() = 9; > constant C10 is export() = 10; > constant C11 is export() = 11; > constant C12 is export() = 12; > constant C13 is export() = 13; > constant C14 is export() = 14; > constant C15 is export() = 15; > constant C16 is export() = 16; > constant C17 is export() = 17; > constant C18 is export() = 18; > constant C19 is export() = 19; > constant C20 is export() = 20; > > Using ``perl6 --stagestats`` to compare these reduced test-cases, the > parse stage is way slower when an argument list is passed to the > export trait: > > ================ =========== ============== ======== > CPU no argument empty argument slowdown > ================ =========== ============== ======== > Core 2 Duo L9400 0.4s 1.4s x3.5 > Atom CPU D525 1.3s 5.2s x4.0 > ================ =========== ============== ======== > > Please note that the slowdown is the same when the argument list isn't > empty, for instance when using ``is export(:tag)``. > > PS: almost all export traits in NativeCall.pm have an argument list.
[perl #124098] [PERF] Passing an argument list to the export trait slows the parse stage down a lot.
Aleks-Daniel Jakimenko-Aleksejev via RT Fri, 01 Dec 2017 10:48:26 -0800