pharo-users@lists.pharo.org

Any question about pharo is welcome

View all threads

ABBench: Lightweight Microbenchmarking Library

ED
Evan Donahue
Thu, Aug 12, 2021 5:44 PM

Hello,

I've just released a utility I've been using for the past few years to help
optimize Pharo code. It's a library that makes it easy to check whether an
optimization has improved performance by wrapping the optimization and the
old code in an if block and executing the optimized and unoptimized paths
repeatedly under the same runtime conditions to determine which is faster.

Basic usage is to wrap changes to the code in if blocks like so:

ABBench a: [ ...existing code...] b: [...optimized code...]

And then run the A/B test by printing:

ABBench bench: [...some main method...]

I have found it to make performance testing simple and quick enough that I
actually do it. Perhaps someone else will find it useful.

Install with:

Metacello new
githubUser: 'emdonahue' project: 'ABBench' commitish: 'master' path: '';
baseline: 'ABBench';
load.

More details can be found here:

https://github.com/emdonahue/ABBench

Cheers,
Evan

Hello, I've just released a utility I've been using for the past few years to help optimize Pharo code. It's a library that makes it easy to check whether an optimization has improved performance by wrapping the optimization and the old code in an if block and executing the optimized and unoptimized paths repeatedly under the same runtime conditions to determine which is faster. Basic usage is to wrap changes to the code in if blocks like so: ABBench a: [ ...existing code...] b: [...optimized code...] And then run the A/B test by printing: ABBench bench: [...some main method...] I have found it to make performance testing simple and quick enough that I actually do it. Perhaps someone else will find it useful. Install with: Metacello new githubUser: 'emdonahue' project: 'ABBench' commitish: 'master' path: ''; baseline: 'ABBench'; load. More details can be found here: https://github.com/emdonahue/ABBench Cheers, Evan
KO
Kasper Osterbye
Sat, Aug 14, 2021 4:56 AM

Cheers

That looks really interesting - I saw that you use an underlying statistical test for the nul hypothesis. That is a cool way to approach it.

Best,

Kasper

On 12 Aug 2021, at 19.44, Evan Donahue emdonahu@gmail.com wrote:

Hello,

I've just released a utility I've been using for the past few years to help optimize Pharo code. It's a library that makes it easy to check whether an optimization has improved performance by wrapping the optimization and the old code in an if block and executing the optimized and unoptimized paths repeatedly under the same runtime conditions to determine which is faster.

Basic usage is to wrap changes to the code in if blocks like so:

ABBench a: [ ...existing code...] b: [...optimized code...]

And then run the A/B test by printing:

ABBench bench: [...some main method...]

I have found it to make performance testing simple and quick enough that I actually do it. Perhaps someone else will find it useful.

Install with:

Metacello new
githubUser: 'emdonahue' project: 'ABBench' commitish: 'master' path: '';
baseline: 'ABBench';
load.

More details can be found here:

https://github.com/emdonahue/ABBench https://github.com/emdonahue/ABBench

Cheers,
Evan

Cheers That looks really interesting - I saw that you use an underlying statistical test for the nul hypothesis. That is a cool way to approach it. Best, Kasper > On 12 Aug 2021, at 19.44, Evan Donahue <emdonahu@gmail.com> wrote: > > Hello, > > I've just released a utility I've been using for the past few years to help optimize Pharo code. It's a library that makes it easy to check whether an optimization has improved performance by wrapping the optimization and the old code in an if block and executing the optimized and unoptimized paths repeatedly under the same runtime conditions to determine which is faster. > > Basic usage is to wrap changes to the code in if blocks like so: > > ABBench a: [ ...existing code...] b: [...optimized code...] > > And then run the A/B test by printing: > > ABBench bench: [...some main method...] > > I have found it to make performance testing simple and quick enough that I actually do it. Perhaps someone else will find it useful. > > Install with: > > Metacello new > githubUser: 'emdonahue' project: 'ABBench' commitish: 'master' path: ''; > baseline: 'ABBench'; > load. > > More details can be found here: > > https://github.com/emdonahue/ABBench <https://github.com/emdonahue/ABBench> > > Cheers, > Evan
E
emdonahu@gmail.com
Sun, Aug 15, 2021 2:54 AM

Thanks.

Yeah, that is to determine a stopping criterion: if one path is clearly faster it needs fewer samples to determine that with confidence.

Evan

Thanks. Yeah, that is to determine a stopping criterion: if one path is clearly faster it needs fewer samples to determine that with confidence. Evan