Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^2: Weird performance issue with Strawberries and Inline::C

by tonyc (Hermit)
on Oct 12, 2025 at 21:14 UTC ( [id://11166481]=note: print w/replies, xml ) Need Help??


in reply to Re: Weird performance issue with Strawberries and Inline::C
in thread Weird performance issue with Strawberries and Inline::C

Strawberryperl 5.32 used gcc 8.3.0 while 5.42.0.1 uses gcc 13.2.0 which probably accounts for the difference between versions.

From looking at godbolt gcc 8.3.0 optimizes that branch into the conditional expression while 13.2.0 doesn't

  • Comment on Re^2: Weird performance issue with Strawberries and Inline::C

Replies are listed 'Best First'.
Re^3: Weird performance issue with Strawberries and Inline::C
by syphilis (Archbishop) on Oct 13, 2025 at 02:53 UTC
    From looking at godbolt gcc 8.3.0 optimizes that branch into the conditional expression while 13.2.0 doesn't

    Going back through my own builds of perl on Windows, I can see that the rot goes back as far as gcc-10.
    I don't know if gcc-9 was afflicted with this same issue as I don't have a perl that was built with gcc-9.

    Incidentally, things are much better with perl-5.42.0 built using Microsoft's Visual Studio 2022:
    v5.42.0 String length: 100000 Rate c4 c3 c4 13558/s -- -8% c3 14740/s 9% --
    (Well done, them ;-)

    BTW, the OP will probably be able to use gcc-8.3.0 to build the script, and reap the benefits of the better optimization capabilities provided by gcc-8.3.0.
    I inserted the following just prior to the "use Inline C => << 'END_OF_C';" in the OP's script.
    use Inline C => Config => # Force recompilation FORCE_BUILD => 1, # Set CC to to path to gcc.exe version 8.3.0 CC => 'C:/sp/_64/sp-5.32.0/c/bin/gcc.exe', # View build output BUILD_NOISY => 1, ;
    That worked fine for me on my build of perl-5.42.0, using gcc-15.1.0:
    v5.42.0 String length: 100000 Rate c3 c4 c3 14460/s -- -0% c4 14531/s 0% --
    Without that modification, the output was:
    v5.42.0 String length: 100000 Rate c4 c3 c4 3528/s -- -76% c3 14777/s 319% --
    UPDATE:
    I tried that same hack of using gcc.exe version 8.3.0 with current blead (built using gcc-15.2.0) and it failed with:
    try2_pl_62b5.c: loadable library and perl binaries are mismatched (got + first handshake key 0000000012e00080, needed 0000000012d00080)
    Looks like us hackers have now been deprived of yet another liberty.
    It's a bit more fickle than I thought. The hacked script works fine for my own build of perl-5.42.0, but not for Strawberry's build of perl-5.42.0. (There are small differences between those two builds of 5.42.0, but it would make better sense to me if it was the other way around. Anyway .... whilst I find this to be tantalizingly interesting, it's not massively important.)
    (If it's going to crash, I would prefer that they let it just do that - rather than forbid something simply because the practice is deemed to be dubious.)

    Cheers,
    Rob
Re^3: Weird performance issue with Strawberries and Inline::C
by NERDVANA (Priest) on Oct 13, 2025 at 02:51 UTC
    Wow that's a cool website! Never seen that before.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11166481]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (4)
As of 2026-02-14 14:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.