Benchmarks: write in Scala or JS, run in your browser.
See an online demo here: https://japgolly.github.io/scalajs-benchmark/.
The tiny source code is here: gh-pages/demo.
- Include scalajs-benchmarkas a dependency in your Scala.JS project.
libraryDependencies += "com.github.japgolly.scalajs-benchmark" %%% "benchmark" % "0.10.0"- You write benchmarks.
import japgolly.scalajs.benchmark._
import japgolly.scalajs.benchmark.gui._
object Example {
  val suite = GuiSuite(
    Suite("Example Benchmarks")(
      // Benchmark #1
      Benchmark("foreach") {
        var s = Set.empty[Int]
        (1 to 100) foreach (s += _)
        s
      },
      // Benchmark #2
      Benchmark("fold") {
        (1 to 100).foldLeft(Set.empty[Int])(_ + _)
      }
    )
  )
}(Hey, can you make that 1 to 100 configurable in the GUI? You sure can.)
- 
Add a tiny loader HTML like this. 
- 
Create a main app and point scalajs-benchmarkat your suite of benchmarks.
import org.scalajs.dom.document
import japgolly.scalajs.benchmark.gui.BenchmarkGUI
object Main {
  def main(args: Array[String]) = {
    val body = document getElementById "body"
    BenchmarkGUI.renderSuite(body)(Example.suite)
  }
}If you have a library of different benchmarks, instead of using renderSuite,
you use renderMenu to create an app that lets the user navigate the library and
run benchmarks.
Example:
BenchmarkGUI.renderMenu(body)(
  suites.example.Examples.all,
  suites.scala.all)- Compile; run in browser. Done.
If you like what I do —my OSS libraries, my contributions to other OSS libs, my programming blog— and you'd like to support me, more content, more lib maintenance, please become a patron! I do all my OSS work unpaid so showing your support will make a big difference.
Note: This is not affiliated with the official Scala.JS project; it's just named to be informative rather than interesting.