All Projects β†’ disruptek β†’ golden

disruptek / golden

Licence: MIT license
a benchmark for compile-time and/or runtime Nim πŸ†

Programming Languages

nim
578 projects

Projects that are alternatives of or similar to golden

profiler
Continuous profiling based on pprof
Stars: ✭ 221 (+689.29%)
Mutual labels:  profile, profiling
Echo Pprof
echo-pprof is a wrapper for golang web framework echo to use net/http/pprof easily.
Stars: ✭ 40 (+42.86%)
Mutual labels:  profile, profiling
neko-box
😺 Pinnable dynamic Gist with your latest AniList activity.
Stars: ✭ 25 (-10.71%)
Mutual labels:  profile
youyou
Edit and create FHIR profiles with a shiny interface ✨
Stars: ✭ 13 (-53.57%)
Mutual labels:  profile
flamescope
Export flame data to speedscope's format
Stars: ✭ 26 (-7.14%)
Mutual labels:  profiling
objc-runtime-CN
Objective-C Runtime Analysis (Objective-CθΏθ‘Œζ—Άεˆ†ζž)
Stars: ✭ 28 (+0%)
Mutual labels:  runtime
LeetCode-Stats-Card
Show your dynamically generated LeetCode stats on your GitHub profile or your website!
Stars: ✭ 207 (+639.29%)
Mutual labels:  profile
doc
QuickPerf documentation: https://github.com/quick-perf/doc/wiki/QuickPerf
Stars: ✭ 22 (-21.43%)
Mutual labels:  profiling
documentify
Modular HTML bundler
Stars: ✭ 47 (+67.86%)
Mutual labels:  compile
go-recipes
🦩 Tools for Go projects
Stars: ✭ 2,490 (+8792.86%)
Mutual labels:  profiling
iopipe-js
Build and run serverless apps with confidence on AWS Lambda with Tracing, Profiling, Metrics, Monitoring, and more.
Stars: ✭ 33 (+17.86%)
Mutual labels:  profiling
orion
Elegant tweak development in pure Swift
Stars: ✭ 149 (+432.14%)
Mutual labels:  runtime
perf-monitor
Kernel profiler based on perf_event and ebpf
Stars: ✭ 28 (+0%)
Mutual labels:  profiling
nodeprof.js
Instrumentation framework for Node.js compliant to ECMAScript 2020 based on GraalVM.
Stars: ✭ 44 (+57.14%)
Mutual labels:  profiling
fastapi-debug-toolbar
A debug toolbar for FastAPI.
Stars: ✭ 90 (+221.43%)
Mutual labels:  profiling
vite-node
Vite as Node.js runtime
Stars: ✭ 422 (+1407.14%)
Mutual labels:  runtime
iopipe-python
Python agent for AWS Lambda metrics, tracing, profiling & analytics
Stars: ✭ 77 (+175%)
Mutual labels:  profiling
webpack-extract-translation-keys
This plugin extracts translation keys for applications requiring runtime translations
Stars: ✭ 35 (+25%)
Mutual labels:  runtime
oasis-sdk
Official SDK for the Oasis Network.
Stars: ✭ 57 (+103.57%)
Mutual labels:  runtime
mkBox
MacApp、PythonPackage、Scripts ..
Stars: ✭ 66 (+135.71%)
Mutual labels:  runtime

golden

A benchmarking tool that measures and records runtime of any executable and also happens to know how to compile Nim.

  • cpp +/ nim-1.0 Build Status
  • arc +/ cpp +/ nim-1.3 Build Status

The idea here is that we're gonna make a record of everything we run, everything we build, and be able to discover and pinpoint regressions automatically using native git-fu performed by the tool. Fire and forget!

Installation

Nimph

$ nimph clone golden

Nimble

$ nimble install golden

Usage

If you pass it a binary, it'll run it a bunch of times and report some runtime statistics periodically.

If you pass it some Nim source, it will compile it for you and report some compilation and runtime statistics periodically.

By default, it will run until you interrupt it.

$ golden --truth=0.002 bench.nim
compilations after 0s
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Builds β”‚ Min      β”‚ Max      β”‚ Mean     β”‚ StdDev   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚      1 β”‚ 0.396129 β”‚ 0.396129 β”‚ 0.396129 β”‚ 0.000000 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
benchmark after 1s
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Runs   β”‚ Min      β”‚ Max      β”‚ Mean     β”‚ StdDev   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚      1 β”‚ 1.959187 β”‚ 1.959187 β”‚ 1.959187 β”‚ 0.000000 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
benchmark after 3s
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Runs   β”‚ Min      β”‚ Max      β”‚ Mean     β”‚ StdDev   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚      2 β”‚ 1.958892 β”‚ 1.959187 β”‚ 1.959039 β”‚ 0.000147 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
completed benchmark after 5s
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Runs   β”‚ Min      β”‚ Max      β”‚ Mean     β”‚ StdDev   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚      3 β”‚ 1.958892 β”‚ 1.961293 β”‚ 1.959791 β”‚ 0.001069 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Benchmarking the compilation of Nim itself:

$ cd ~/git/Nim
$ golden koch -- boot -d:danger
# ...
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ #      β”‚ Min      β”‚ Max      β”‚ Mean     β”‚ StdDev   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚     12 β”‚ 8.846606 β”‚ 9.485832 β”‚ 8.945023 β”‚ 0.165638 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Benchmarking compilation of slow-to-compile Nim:

$ golden --compilation openapi.nim
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      # β”‚ Min       β”‚ Max       β”‚ Mean      β”‚ StdDev   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚      1 β”‚ 91.946370 β”‚ 91.946370 β”‚ 91.946370 β”‚ 0.000000 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      # β”‚ Min       β”‚ Max       β”‚ Mean      β”‚ StdDev    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚      2 β”‚ 29.271556 β”‚ 91.946370 β”‚ 60.608963 β”‚ 31.337407 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Command Line Options

  • truth a float percentage indicating how much jitter you'll accept
  • runtime a float of seconds after which we should kill each invocation
  • iterations a number of invocations after which we should stop the benchmark
  • storage the path to a database file you wish to use; must end in .golden-lmdb
  • interactive-forced assume output friendly to humans
  • json-output assume output friendly to machines (work in progress)
  • color-forced enable color output when not in interactive mode
  • prune-outliers throw out this percentage of aberrant invocations with long runtime in order to clean up the histogram
  • dry-run don't write any results to the database
  • histogram-classes the number of points in the histogram
  • compilation-only benchmark the Nim compiler on the given source(s)
  • brief only output the statistics at the completion of the benchmark
  • never-output never emit anything via stdout/stderr
  • dump-output always print the stdout/stderr of the benchmarked program
  • -- the following arguments are passed to the compiler and runtime. Note that if you supply -- cpp for compilation via C++, you will need to supply your own defines such as -d:danger.

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].