On 22/02/2009, at 4:10 AM, Erick Tryzelaar wrote:

>
> I saw an interesting thread on [comp.lang.functional] (
> http://groups.google.com/group/comp.lang.functional/browse_frm/thread/99b8230c078d9b44)
>  
>  yesterday comparing the performance of a couple languages  
> generating the mandelbrot fractal, and I thought it'd be interesting  
> to see how felix compared. Turns out it does incredibly well. The  
> times are in seconds when run on my laptop:
>
> | c++      | 1.92488 |
> | felix    | 1.96676 |
> | ocamlopt | 5.81599 |
> | scala    | 6.555   |
> | clojure  | 12.7324 |
> | haskell  | 96.2044 |

Felix should trash C++ .. :)

>


> mandelbrot.flx:
> {{{
> :::felix
> module sys::time_h
> {
>  open C_hack;
>
>  header "#include <sys/time.h>";
>
>  type time_t = "time_t";
>  type suseconds_t = "suseconds_t";
>
>  fun _ctor_float: time_t -> float = "static_cast<float>($1)";
>  fun _ctor_float: suseconds_t -> float = "static_cast<float>($1)";
>
>  fun _ctor_double: time_t -> double = "static_cast<double>($1)";
>  fun _ctor_double: suseconds_t -> double = "static_cast<double>($1)";
>
>  cstruct timeval {
>    tv_sec: time_t;
>    tv_usec: suseconds_t;
>  }
>
>  proc gettimeofday: ptr[timeval] = "gettimeofday($1, NULL);";
>
>  gen get_time () = {
>    var tv:timeval;
>    gettimeofday(addr tv);
>    return _ctor_double(tv.tv_sec) + (_ctor_double(tv.tv_usec) /  
> 1.0e6);
>  }
> }
>
> val runs = 1;
> val max_iterations = 99888;
> fun iterate (ci:double, cr:double) = {
>  val bailout = 4.0;

Check generated code to see if the usage of these is inlined.
Also check if the nested procedures slow things down.
No stack frames should be created: loop_ is tail  rec.


>  fun loop_ (zi:double, zr:double, i:int) =>
>    if i <= max_iterations then
>      let ?zr2 = zr * zr in
>      let ?zi2 = zi * zi in
>      if zi2 + zr2 <= bailout then
>        loop_ (zr * zi * 2.0 + ci, zr2 - zi2 + cr, i + 1)
>      else
>        i
>      endif
>    else
>      0
>    endif
>  ;
>  return loop_ (0.0, 0.0, 1);
> }

--
john skaller
skal...@users.sourceforge.net





------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to