Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
I can squeeze another 20% or so out of it actually 23% on my systems with some more micro-optimizations. The most significant change is in the inner loop, where Ive changed
substr( $q, 0, $k ) = reverse substr( $q, 0, $k );
to
$q = reverse(substr($q, 0, $k)) . substr($q, $k);
Here's the code:
sub fannkuch { use bytes; # This makes it fractionally faster my ( $copy, $level, $split ) = ( @_, 0, 1 ); my ( $index, $next, $length ) = ( $level, $level + 1, length( $cop +y ) ); if ($next == $length) { $index = $split - 1; substr($copy, $index, 0) = chop($copy); } my ( $q, $k ); do { if ($next == $length) { if (($k = ord($q = $copy)) != $length || $level >= $maxflips) { # Declaring $flips in here means we can reset it # with a single op (compared with the three you # need for C<$flips = 0>). my $flips; # This is a touch faster than a "proper" loop, # because it doesn't push a new context. $q = reverse(substr( $q, 0, $k )) . substr($q, $k), ++$flips while ($k=ord($q)) != 1; no warnings "uninitialized"; # $flips may be undef if ( $flips >= $maxflips ) { if ( $flips == $maxflips) { push @max_sequence, $copy; } else { ($maxflips, @max_sequence) = ($flips, $copy); } } } } else { fannkuch( $copy, $next, $split ); $split = $next if $index == $split; } substr($copy, $index-1, 2) = reverse substr($copy, $index-1, 2 +); } while $index--; $maxflips; # faster than an explicit return }

In reply to Re: Speed/Efficiency tweaks for a fannkuch benchmark script? by robin
in thread Speed/Efficiency tweaks for a fannkuch benchmark script? by thundergnat

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    [erix]: if you're interested in tsv file reading in pg, look at file_fdw
    [erix]: aka: create extension if not exists file_fdw;
    [erix]: the annoying thing is that during setup of the 'foreign table' you have to specify all the columns. But that is reasonably automatable (just reading header line, and contruct the needed CREATE FOREIGN TABLE' statement)

    How do I use this? | Other CB clients
    Other Users?
    Others musing on the Monastery: (5)
    As of 2018-02-23 15:28 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?
      When it is dark outside I am happiest to see ...














      Results (302 votes). Check out past polls.

      Notices?