mun icon indicating copy to clipboard operation
mun copied to clipboard

Add Mun performance regression tests

Open baszalmstra opened this issue 6 years ago • 8 comments

  • [ ] claim this issue (assign yourself or comment below)
  • [ ] setup repository on your local machine and make sure all tests pass (cargo test)
  • [ ] read our contributing guidelines
  • [ ] add a framework (I've been looking at criterion but you're free to use whatever) to benchmark Mun code and add regression tests
  • [ ] start a Pull Request. Set description to closes #58. If this is your first PR, welcome :tada: :smile:

This could be combined with #57

baszalmstra avatar Nov 20 '19 17:11 baszalmstra

Some initial performance benchmarks have been added here: https://github.com/mun-lang/mun/pull/104

baszalmstra avatar Mar 29 '20 16:03 baszalmstra

For completeness, benchmark results were included in the march blog

Wodann avatar May 26 '20 20:05 Wodann

Is this issue still valid? If so, I'll take this one on!

bytewife avatar Dec 21 '22 21:12 bytewife

@ivyraine Fantastic! Let me know if you need help!

baszalmstra avatar Dec 22 '22 07:12 baszalmstra

@baszalmstra Happy holidays! I'll take you up on some questions- please bear with me as I get up to speed on the project 😅 Firstly, what are the most important parts of Mun to test for performance regressions? Should we begin with the benchmarks linked here? Secondly, how would you recommend setting up the tests? I was thinking it would be useful to run the tests in CI, but criterion recommends against it.

bytewife avatar Dec 28 '22 23:12 bytewife

Ah, I missed the similar issue here, which has some details on CI! To be clear, this issue is about testing the performance of the language runtime, and #57 is about compilation performance?

It appears that iai can get around issues regarding having inconsistent hardware in cloud CI. However it seems like the project isn't maintained. What are your thoughts on using it?

Note: rustc uses rustc-perf, which sadly doesn't provide a crate. It provides a mix of wall-time and hardware-independent metrics like instruction count.

bytewife avatar Dec 28 '22 23:12 bytewife

After some thought, I feel that the best course of action is to create some tests (similar to the ones in benchmark.rs) using iai. In another issue, we can create a CI regression testing interface in the same vein as rustc-perf. How does this sound?

bytewife avatar Dec 29 '22 02:12 bytewife

@ivyraine that sounds good! We can also run the benchmarks on dedicated hardware from time to time to get consistent results. Alternatively, we could also invest in dedicated hardware.

This issue is about measuring the performance of compiled Mun code indeed. The biggest thing we want to achieve here is to spot regressions more easily.

baszalmstra avatar Jan 01 '23 10:01 baszalmstra