[erlang-questions] On a positive Erlang performance note...

Edwin Fine <>
Fri Nov 21 18:10:21 CET 2008


Ok, then, it's attached. I did a double check, and the HiPE-related speedup
was a bit less than 10x; it was 7-8x, in line with your previous
experiences. It's still a really good speedup (big difference between an
hour of run-time and 8 minutes!)

The really significant thing is the combination of HiPE and parallelism: a
29x speedup over sequential BEAM. If I had more processors ("only" 4), it
would be even better.  I'm sure you can find ways to improve the program; if
so, I'd appreciate seeing the changes to learn better Erlang.

Regards,
Edwin Fine.

PS Kostis, I see you have an email address in Greece. Do you perhaps know or
know of my friend Diomidis Spinellis from the U of Athens? He's a very
smart, great guy.

PPS I ran the program on an approx. 600MB ISO, using BEAM, HiPE, and
parallel HiPE. Results are below.

*13> c(charclass).                                           *
{ok,charclass}
14> charclass:bm("/home/efine/downloads/railslive-0.2.1.iso").
*** Completed run using classify_binary ***
File "/home/efine/downloads/railslive-0.2.1.iso" size is 616232960 bytes
Classified 616232960 characters
Breakdown:
[{'8bit',313770058},
 {alnum,145673634},
 {alpha,122172907},
 {ascsp,2129902},
 {blank,4380198},
 {cntrl,77553142},
 {digit,23500727},
 {lower,62169483},
 {print,224909760},
 {punct,77106224},
 {space,13574043},
 {upper,60003424}]
*Speed = 2577047 bytes/sec (0.38804092367925275 us/byte)*
ok
*15> c(charclass,[native]).                                    *
{ok,charclass}
16> charclass:bm("/home/efine/downloads/railslive-0.2.1.iso").
*** Completed run using classify_binary ***
File "/home/efine/downloads/railslive-0.2.1.iso" size is 616232960 bytes
Classified 616232960 characters
Breakdown:
[{'8bit',313770058},
 {alnum,145673634},
 {alpha,122172907},
 {ascsp,2129902},
 {blank,4380198},
 {cntrl,77553142},
 {digit,23500727},
 {lower,62169483},
 {print,224909760},
 {punct,77106224},
 {space,13574043},
 {upper,60003424}]
*Speed = 19187638 bytes/sec (0.05211688774323269 us/byte)*
ok
17> *charclass:bm_par("/home/efine/downloads/railslive-0.2.1.iso").*
*** Completed run using par_classify_binary ***
File "/home/efine/downloads/railslive-0.2.1.iso" size is 616232960 bytes
Classified 616232960 characters
Breakdown:
[{'8bit',313770058},
 {alnum,145673634},
 {alpha,122172907},
 {ascsp,2129902},
 {blank,4380198},
 {cntrl,77553142},
 {digit,23500727},
 {lower,62169483},
 {print,224909760},
 {punct,77106224},
 {space,13574043},
 {upper,60003424}]
*Speed = 75454793 bytes/sec (0.013252968487761512 us/byte)*

On Fri, Nov 21, 2008 at 8:21 AM, Kostis Sagonas <> wrote:

> Mikael Pettersson wrote:
> > Edwin Fine writes:
> >  >
> >  > That's extremely close to linear and is pretty impressive. I found
> HiPE gave
> >  > about a 10x speedup over BEAM. The results are with HiPE and exclude
> the
> >  > time taken to load the file into a binary.
> >  >
> >  > Kudos to Erlang and HiPE.
> >
> > Thanks.
> >
> >  > PS In the unlikely event that someone wants the code, I will gladly
> post it
> >  > if asked.
> >
> > Please do. I'd like to include it in the benchmark section
> > of HiPE's compiler test suite.
> > The 10x speedup over BEAM really put a smile on my face :-)
>
> It put a big smile on my face too, but I am not so surprised.
>
> In programs manipulating binaries, we've often experienced such speedups
> (typically 8x) over BEAM when using HiPE, and judging from Edwin's post,
> this appears to be a binary-intensive program. (Of course I _will_ be
> very surprised if the speedup is due to some reason other than binaries.)
>
> But having the program is a good thing nonetheless.
>
> Kostis
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20081121/ecdf0655/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: charclass.erl
Type: text/x-erlang
Size: 8574 bytes
Desc: not available
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20081121/ecdf0655/attachment.bin>


More information about the erlang-questions mailing list