Code Monkey home page Code Monkey logo

liar's Introduction

Liar

Liar is a Rust library to support writing benchmark suites as stand-alone binaries.

The project goals are:

  • Support reuse of benchmarks across both standard OS and embedded/#![no_std] targets.
  • Enable benchmark execution on a target with post-hoc analysis of raw data on a host.
  • Let users control how benchmarks are executed, what data are reported, and the means of reporting.
  • Compile with stable Rust.

License

Liar is released under the ISC License. The implementations of black_box are derived from the bencher and Rust libtest crates, which we use under the MIT license.

liar's People

Contributors

ranweiler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

liar's Issues

Add CI

Add Travis integration, and if possible, use it to check that we can build the example projects.

Add more/configurable runners

Support configurable sample sizes and running strategies to obtain samples, such as performing a linear regression on increasing loop counts.

Add tests

The current implementation is a first draft, with the examples acting as integration tests. We need to add unit tests, especially for reporters.

Improve timer

Right now, when building with std, we use Instant to measure time, like cargo bench does. Under the hood, on Linux, for example, this uses clock_gettime() with CLOCK_MONOTONIC.

Instead, we should use something like CLOCK_THREAD_CPUTIME_ID, and the nearest equivalents on other platforms. It would be nice for this to be configurable, too, for example, in the case that a benchmark uses threads, and so we might want CLOCK_PROCESS_CPUTIME_ID.

Add more/configurable reporters

For example, support selecting which statistics to report, how to filter samples, serving graphs (possibly via a local HTTP server), JSON output, &c.

Clarify licensing

Hi Joe!
With both the MIT and ISC licenses in the root directory, but no explanation anywhere, it's unclear what you intend the licensing to be.

Reporter trait

Right now, we have a Reporter struct with a draft approximation of libtest's benchmark output. Remove this, and replace it with a trait. We should also add a line-oriented, delimited reporter that can be used out of the box and fed to Unix utilities.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.