# New Ticket Created by   
# Please include the string:  [perl #124098]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=124098 >


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.

Reply via email to