speed-comparison icon indicating copy to clipboard operation
speed-comparison copied to clipboard

Provide "clean" and "real world" results

Open niklas-heer opened this issue 2 years ago • 4 comments

As suggested in #51 by @HenrikBengtsson more "clean" data for the calculation of pi could be gathered by measuring the performance of each language with and without calculating pi and then subtracting the one from the other.

[...] I think it would be better if you could find a way to not include the startup times, and the parsing of 'rounds.txt' in the results. A poor man's solution would be to benchmark each language with and without the part that calculates pi and the subtract to get the timings of interest.

I think it would be best to keep both data. "Real world" data with startup and IO, and "clean" data for just calculating pi. I would keep both data in the CSV, but I'm not sure which one to favour for the image creation. Probably the "clean" data 🤔

In terms of implementation. I can see two approaches:

  • the straightforward way of having a second implementation file for each language
  • the dynamic way of including a comment and keyword within the source file to cut off for getting the result without calculating pi

Obviously, both would require adjustments to scbench and the analysis step.

niklas-heer avatar Oct 18 '22 18:10 niklas-heer

I believe setting rounds to 0 should be about equivalent

francescoalemanno avatar Oct 18 '22 22:10 francescoalemanno

@francescoalemanno that is a brilliant idea. Would at least make things way easier to implement.

niklas-heer avatar Oct 19 '22 19:10 niklas-heer

@niklas-heer

I reimplement the benchmark for C++, Java, Golang, Python and JavaScript: https://github.com/Glavo/leibniz-benchmark

I run twenty rounds of benchmarking and count the average time spent on the last ten rounds. Here is the result I got:

Glavo avatar Aug 13 '23 23:08 Glavo

I think the "clean" result is the one that can reflect the real world situation.

The main factor affecting the results now is the startup and loading time, not the real performance of the language.

Glavo avatar Aug 13 '23 23:08 Glavo