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