Hello Janek,

What happens if you do the benchmark without unsafePerformIO involved?

Edward

Excerpts from Janek S.'s message of Fri Nov 23 10:44:15 -0500 2012:
> I am using Criterion library to benchmark C code called via FFI bindings and 
> I've ran into a 
> problem that looks like a bug. 
> 
> The first benchmark that uses FFI runs correctly, but subsequent benchmarks 
> run much longer. I 
> created demo code (about 50 lines, available at github: 
> https://gist.github.com/4135698 ) in 
> which C function copies a vector of doubles. I benchmark that function a 
> couple of times. First 
> run results in avarage time of about 17us, subsequent runs take about 45us. 
> In my real code 
> additional time was about 15us and it seemed to be a constant factor, not 
> relative to "correct" 
> run time. The surprising thing is that if my C function only allocates memory 
> and does no 
> copying:
> 
> double* c_copy( double* inArr, int arrLen ) {
>   double* outArr = malloc( arrLen * sizeof( double ) );
> 
>   return outArr;
> }
> 
> then all is well - all runs take similar amount of time. I also noticed that 
> sometimes in my demo 
> code all runs take about 45us, but this does not seem to happen in my real 
> code - first run is 
> always shorter.
> 
> Does anyone have an idea what is going on?
> 
> Janek
> 

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to