All Projects → lorenzwalthert → touchstone

lorenzwalthert / touchstone

Licence: Unknown, MIT licenses found Licenses found Unknown LICENSE MIT LICENSE.md
Smart benchmarking of pull requests with statistical confidence

Programming Languages

r
7636 projects

Projects that are alternatives of or similar to touchstone

sets
Benchmarks for set data structures: hash sets, dawg's, bloom filters, etc.
Stars: ✭ 20 (-39.39%)
Mutual labels:  benchmark
ronin
RoNIN: Robust Neural Inertial Navigation in the Wild
Stars: ✭ 144 (+336.36%)
Mutual labels:  benchmark
CBLUE
中文医疗信息处理基准CBLUE: A Chinese Biomedical Language Understanding Evaluation Benchmark
Stars: ✭ 379 (+1048.48%)
Mutual labels:  benchmark
react-benchmark
A tool for benchmarking the render performance of React components
Stars: ✭ 99 (+200%)
Mutual labels:  benchmark
php-simple-benchmark-script
Очень простой скрипт тестирования быстродействия PHP | Very simple script for testing of PHP operations speed (rusoft repo mirror)
Stars: ✭ 50 (+51.52%)
Mutual labels:  benchmark
snowman
Welcome to Snowman App – a Data Matching Benchmark Platform.
Stars: ✭ 25 (-24.24%)
Mutual labels:  benchmark
benchmarking-fft
choosing FFT library...
Stars: ✭ 74 (+124.24%)
Mutual labels:  benchmark
NPB-CPP
NAS Parallel Benchmark Kernels in C/C++. The parallel versions are in FastFlow, TBB, and OpenMP.
Stars: ✭ 18 (-45.45%)
Mutual labels:  benchmark
ftsb
Full Text Search Benchmark, a tool for comparing and evaluating full-text search engines.
Stars: ✭ 12 (-63.64%)
Mutual labels:  benchmark
LFattNet
Attention-based View Selection Networks for Light-field Disparity Estimation
Stars: ✭ 41 (+24.24%)
Mutual labels:  benchmark
rpc-bench
RPC Benchmark of gRPC, Aeron and KryoNet
Stars: ✭ 59 (+78.79%)
Mutual labels:  benchmark
facies classification benchmark
The repository includes PyTorch code, and the data, to reproduce the results for our paper titled "A Machine Learning Benchmark for Facies Classification" (published in the SEG Interpretation Journal, August 2019).
Stars: ✭ 79 (+139.39%)
Mutual labels:  benchmark
schema-registry-gitops
Manage Confluent Schema Registry subjects through Infrastructure as code
Stars: ✭ 36 (+9.09%)
Mutual labels:  ci-cd
httpit
A rapid http(s) benchmark tool written in Go
Stars: ✭ 156 (+372.73%)
Mutual labels:  benchmark
github-action-benchmark
GitHub Action for continuous benchmarking to keep performance
Stars: ✭ 592 (+1693.94%)
Mutual labels:  benchmark
revl
Helps to benchmark code for Autodesk Maya.
Stars: ✭ 14 (-57.58%)
Mutual labels:  benchmark
benchmark-kit
phpbenchmarks.com kit to add your benchmark.
Stars: ✭ 31 (-6.06%)
Mutual labels:  benchmark
criterion
statistics-driven micro-benchmarking framework
Stars: ✭ 17 (-48.48%)
Mutual labels:  benchmark
Java-Logging-Framework-Benchmark
Suite for benchmarking Java logging frameworks.
Stars: ✭ 16 (-51.52%)
Mutual labels:  benchmark
link-too-big
Link Too Big? Make Link Short
Stars: ✭ 12 (-63.64%)
Mutual labels:  benchmark

Lifecycle: experimental R build status

touchstone

{touchstone} is a developer tool for continuous benchmarking with a focus on reliable relative measurement, uncertainty reporting and user convenience. The results are directly reported as a comment in GitHub Pull Requests.

Installation

You can install the package from CRAN:

install.packages("touchstone")

And the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("lorenzwalthert/touchstone")

Getting Started

You can start using {touchstone} in your package repository with:

touchstone::use_touchstone()

For a detailed explanation on how to configure and use {touchstone} see the “Using touchstone” vignette.

Motivation

The motivation for touchstone is to provide accurate benchmarking results for package developers. The following insights were the motivation:

  • Compute power in GitHub Action VMs varies too much for reliable isolated benchmarks: Experience with styler showed that a variation around 30% for identical benchmarking code is possible. The solution to this is to benchmark the two branches in one CI/CD run and look at relative difference between branches. This matters in particular when running one iteration of a benchmark takes long (>> a few seconds) and speed implications are not huge.

  • Timelines of absolute changes are mostly noise: Maintaining a timeline of absolute benchmark times is of limited use because of the first bullet, at least when benchmark results don’t vary significantly (> 50%).

  • Dependencies should be identical across versions: R and package versions of dependencies must be fixed via RSPM to allow as much continuation as possible anyways. Changing the timestamp of RSPM can happen in PRs that are only dedicated to dependency updates.

  • Pull requests are a natural unit for measuring speed: Linking benchmarking to pull requests make sense because you can easily benchmark any revision against any other. Just open a pull request from one branch on another. You can also easily keep track of how performance of your development version evolves by opening a PR against a branch with the released version. No need to ever merge these. Once you release a new version of you package, you can change the target branch of the pull request to start anew. The pull request comments will preserve the information.

Conceptual

For your PR branch and the target branch, {touchstone} will:

  • build the two versions of the package in isolated libraries.

  • run the code you want to benchmark, many times, in random order. This ensures the accurate measurement of relative differences between the branches.

Once done with the measurements, it will

  • comment the results of the benchmarking on the PR.

  • create visualizations as Github Action artifacts that show how the distribution of the timings for both branches.

Status

This package is experimental. You can see an example usage in {styler}.

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].