Skip to content

avegner/exercism-bench

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Aleksei Vegner
Sep 24, 2019
3adb5a2 · Sep 24, 2019

History

33 Commits
Aug 26, 2019
Sep 22, 2019
Sep 24, 2019
Sep 21, 2019
Sep 21, 2019
Aug 31, 2019
Sep 22, 2019
Sep 21, 2019
Aug 25, 2019
Sep 21, 2019

Repository files navigation

Exercism Bench

This is a CLI tool to benchmark published solutions on exercism for Go.
It allows to:

  • get a total number of published solutions for a given exercise
  • download all solutions and test suite (tests and benchmarks)
  • run go test -bench . -benchmem for each solution (tests + benchmarks)
  • collect time, mem, allocs, throughput and code size (symbols except comments and whitespaces) stats
  • sort benchmarking results by time for each benchmark
  • implement additional or missing benchmarks
  • learn from others and improve your algorithms

How to Install

To install exercism-bench binary on any OS supported by Go toolchain just run:

go get github.com/avegner/exercism-bench

How to Use

Usage is very simple and clear:

Usage: exercism-bench [flag...] <exercise-name> <command>

Commands:
  total
  	calculate number of published solutions
  download
  	download published solutions
  bench
  	bench downloaded solutions
  clean
  	remove downloaded solutions

Flags:
  -c	enable concurrency
  -d string
    	directory to store solutions (default "./solutions")
  -mp int
    	GOMAXPROCS value to set (default 4)

Concurrency flag allows a command to run faster in several threads (up to GOMAXPROCS).
It's not recommended to enable concurrency for bench command if more accurate time stats are needed.

Typical use-case would be:

  • exercism-bench -c transpose total
  • exercism-bench -c transpose download
  • exercism-bench transpose bench
  • results analysis and learning from others
  • implementation of additional or missing tests and benchmarks (in <solutions-dir>/go/<exercise>/test-suite directory)
  • exercism-bench transpose bench
  • exercism-bench transpose clean

Benchmarking Stats

A stats table looks like this (sorted by time):

------------------------------ Benchmark<name-1> ------------------------------

[   1] <uuid-1>-<author-1>.go     :       5065.0 ns          240 B mem           10 allocs          643 symbols
[   2] <uuid-2>-<author-2>.go     :      16173.0 ns          624 B mem           46 allocs          410 symbols
[   3] <uuid-3>-<author-3>.go     :      17157.0 ns         1856 B mem          154 allocs          288 symbols
...

------------------------------ Benchmark<name-N> ------------------------------

...

About

An unofficial benchmarking tool for exercism.io

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages