A http server benchmark tool written in rust 🦀

Overview

rsb - rust benchmark

Build Status License MIT Codecov Crates.io

rsb is a http server benchmark tool written in rust. The development of this tool is mainly inspired by the bombardier project, and I would like to thank the author for his contribution. On the other hand, this tool was developed primarily to learn and understand Rust.

Install

If you are a Rust developer,and you have already installed Rust-related toolchains locally, you can install them through Cargo.

cargo install rsb

Or you can go Release Page to download the compiled version for the corresponding platform. If docker is installed, you can directly use the compiled docker image

// image from github container registry
docker run --rm ghcr.io/gamelife1314/rsb -n 50 -l -c 10  https://httpbin.org
// image from docker hub
docker run --rm gamelife1314/rsb -n 50 -l -c 10  https://httpbin.org

If you want to use the automatic completion function of the shell, you can output the completion script corresponding to the shell through a command similar to the following. rsb supports bash, elvish, fish, powershell, and zsh. For example:

eval "$(rsb --completions zsh)"

Usage

First, let's take a look at the overall picture of this tool:

rsb --help

The tool has two modes when running, which must be specified when using it. One is based on the total amount, that is, you need to declare how many requests you need to send in total, which can be specified by the -n parameter. The other is based on the running time, which means how long you need to test, which can be specified by the -d parameter, and the unit is seconds.

First, let's look at the example of specifying the total amount:

rsb -n url

Let's look at another example of specifying the test duration:

rsb -d url

During use, we usually encounter too many specified numbers, or the specified test time is too long. When you want to cancel in the middle, you can cancel it directly through ctrl-c. After the tool receives the signal, it will complete the current request. Exit directly and output the current statistics.

rsb-cancel

Glossary

Item Description
Reqs/Sec Count the requests sent and received responses per second, and then calculate the average, maximum, and standard deviation.
Latency Record the time taken for each request from sending to receiving the response, and then calculate the average, maximum and standard deviation
Latency Distribution Sort the time consumption of each request, and then take out the data under each percentage to calculate its average.
HTTP codes Quantity statistics of various response codes
Throughput Throughput is obtained by dividing the number of concurrency and the average request time, and the unit is: reqs/s

Header

Custom request headers can be specified via the -H parameter, example: -H=k:v,k1:v1. It should be noted that if Content-Type is set, but --json-file, --json-body, --text-file, --text-body, --mp, --mp-file, --form are also set , then it will be overwritten.

Proxy

The tool core uses request to send Http requests, so it currently inherits its support for proxies. The proxy for HTTP requests can be set through the environment variable http_proxy, and the proxy for HTTPS requests can be set through the environment variable https_proxy. The use of socks proxy is also supported. Here are more declarations about proxies.

example:

export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;export ALL_PROXY=socks5://127.0.0.1:1080

TEXT BODY

If you want to set the request body as a text type, you can specify a file as input through --text-file, or specify a string through --text-body. Note that these two parameters can only be selected from one of the two, and cannot coexist with other request body setting parameters. when requesting, the content type will be specified as: text/plain.

example:

rsb -n 100 --text-body "anything" http://127.0.0.1:8000/post-text
// or
rsb -n 1 -m POST --text-body "chatgpt4.0 is coming and very strong" http://127.0.0.1:54326/post-text

JSON BODY

If the data type you want to send is JSON, you can specify it with the --json-body parameter, or read it from a file with --json-file. When requesting, the request type will be specified as: application/json.

example:

rsb -n 1 -m POST --json-body '{"version":"v0.1.0","name":"rsb"}' http://127.0.0.1:54326/post-json
// or
rsb -n 1 -m POST --json-file json.txt http://127.0.0.1:54326/post-json

FORM BODY

If you want to send a request of type application/x-www-form-urlencoded, you need to pass the --form parameter. This parameter can be specified multiple times, and multiple key-value pairs can be declared each time.

example:

rsb -n 1 -m POST --form=k:v,k1:v1 --form=k2:v2 http://127.0.0.1:54326/post-form

MULTIPART BODY

If you want to send a request of multipart/form-data type, or want to upload a file, you can specify parameters through --mp and specify the file to be uploaded through --mp-file.

example:

rsb -n 1 -m POST --mp-file=f1:LICENSE,rsb:target/debug/rsb.exe --mp=k1:v1 http://127.0.0.1:54326/upload-file

CLIENT CERTIFICATE

If the server needs to verify the client's certificate, you can pass --cert and --key to specify the client's certificate and key respectively.

example:

rsb -n 500 -l --cert client.pem --key client-key.pem  https://127.0.0.1:9443/hello

You can refer to the following Go code to generate and start an https server for testing:

...

func main() {
	caCert, _ := ioutil.ReadFile("rootCa.pem")
	caCertPool := x509.NewCertPool()
	caCertPool.AppendCertsFromPEM(caCert)

	tlsConfig := &tls.Config{
		ClientCAs:  caCertPool,
		ClientAuth: tls.RequireAndVerifyClientCert,
	}
	tlsConfig.BuildNameToCertificate()

	server := &http.Server{
		Addr:      ":9443",
		TLSConfig: tlsConfig,
	}

	http.HandleFunc("/hello", hello)
	http.HandleFunc("/headers", headers)

	if err := server.ListenAndServeTLS("server.pem", "server-key.pem"); err != nil {
		fmt.Println(err)
	}
}
Comments
  • build(deps): bump clap from 4.1.10 to 4.1.11

    build(deps): bump clap from 4.1.10 to 4.1.11

    Bumps clap from 4.1.10 to 4.1.11.

    Release notes

    Sourced from clap's releases.

    v4.1.11

    [4.1.11] - 2023-03-17

    Internal

    • Update bitflags
    Changelog

    Sourced from clap's changelog.

    [4.1.11] - 2023-03-17

    Internal

    • Update bitflags
    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • build(deps): bump openssl from 0.10.46 to 0.10.48

    build(deps): bump openssl from 0.10.46 to 0.10.48

    Bumps openssl from 0.10.46 to 0.10.48.

    Release notes

    Sourced from openssl's releases.

    openssl v0.10.48

    What's Changed

    New Contributors

    Full Changelog: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.47...openssl-v0.10.48

    openssl v0.10.47

    No release notes provided.

    Commits
    • 4ff734f Release openssl v0.10.48 and openssl-sys v0.9.83 (#1855)
    • 5efceaa Merge pull request #1854 from alex/davids-openssl-of-horrors
    • 6ced4f3 Fix race condition with X509Name creation
    • a752805 Document the horror show
    • 78aa9aa Always provide an X509V3Context in X509Extension::new because OpenSSL require...
    • 332311b Resolve an injection vulnerability in EKU creation
    • 482575b Resolve an injection vulnerability in SAN creation
    • 690eeb2 Merge pull request #1852 from smoelius/master
    • e5b6d97 Improve reliability of some tests
    • 319200a Merge pull request #1851 from alex/libressl-versions
    • Additional commits viewable in compare view

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump serde from 1.0.156 to 1.0.157

    build(deps): bump serde from 1.0.156 to 1.0.157

    Bumps serde from 1.0.156 to 1.0.157.

    Release notes

    Sourced from serde's releases.

    v1.0.157

    • Update syn dependency to 2.x
    Commits
    • 479a00a Release 1.0.157
    • c42e7c8 Reflect serde_derive required compiler in build script and rust-version metadata
    • 5b8e065 Ignore single_match_else pedantic clippy lint in serde_derive_internals
    • 9fc0d13 Merge pull request #2406 from dtolnay/nestedmeta
    • bc22641 Rewrite attribute parser using parse_nested_meta
    • 0509810 Update compiler version for serde_derive in readme
    • 5b23634 Merge pull request #2405 from dtolnay/syn
    • 32f0d00 Update to syn 2
    • 9d87851 Merge pull request #2404 from dtolnay/attributeexpr
    • c0296ee Add ui test of malformed attribute containing expression
    • See full diff in compare view

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump reqwest from 0.11.14 to 0.11.15

    build(deps): bump reqwest from 0.11.14 to 0.11.15

    Bumps reqwest from 0.11.14 to 0.11.15.

    Release notes

    Sourced from reqwest's releases.

    v0.11.15

    What's Changed

    • Add RequestBuilder methods to split and reconstruct from its parts.
    • Add experimental HTTP/3 support. 🧪3️🎉
    • Fix connection_verbose to log write_vectored calls.
    • (wasm) Make requests actually cancel if the future is dropped.

    New Contributors

    Full Changelog: https://github.com/seanmonstar/reqwest/compare/v0.11.14...v0.11.15

    Changelog

    Sourced from reqwest's changelog.

    v0.11.15

    • Add RequestBuilder methods to split and reconstruct from its parts.
    • Add experimental HTTP/3 support.
    • Fix connection_verbose to log write_vectored calls.
    • (wasm) Make requests actually cancel if the future is dropped.
    Commits
    • 56190bd v0.11.15
    • df2b3ba wasm: fix premature abort for streaming bodies (#1782)
    • 4db868b Make HTTP/3 feature more unstable (#1780)
    • 57a8a01 Add Experimental HTTP/3 Support (#1599)
    • 119366e async/request: add methods to split and reassemble a RequestBuilder (#1770)
    • 673449a docs: fix wording on main docs page (#1765)
    • c2ac875 Clarify the documentation to show that get will fail if the total download ti...
    • bb8fec4 Make wasm requests cancel when the future drops. (#1755)
    • bdd4db0 Fix connection_verbose to log write_vectored calls (#1737)
    • See full diff in compare view

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump async-trait from 0.1.67 to 0.1.68

    build(deps): bump async-trait from 0.1.67 to 0.1.68

    Bumps async-trait from 0.1.67 to 0.1.68.

    Release notes

    Sourced from async-trait's releases.

    0.1.68

    • Improve error message if an async fn is written without a function body in an impl block
    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump serde from 1.0.157 to 1.0.158

    build(deps): bump serde from 1.0.157 to 1.0.158

    Bumps serde from 1.0.157 to 1.0.158.

    Release notes

    Sourced from serde's releases.

    v1.0.158

    • Fix "expected serde crate attribute to be a string" error when using macro_rules metavariable inside of serde attribute: #[serde(crate = $serde_path)] (#2409)
    Commits
    • e305810 Release 1.0.158
    • dc200a6 Reformat comments of non-public serde_derive internals
    • 2c0999a Merge pull request #2410 from serde-rs/attrvalue
    • dd460f8 Check for None-delimited group in attribute value
    • c3d637f Add regression test for issue 2409
    • See full diff in compare view

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump async-trait from 0.1.66 to 0.1.67

    build(deps): bump async-trait from 0.1.66 to 0.1.67

    Bumps async-trait from 0.1.66 to 0.1.67.

    Release notes

    Sourced from async-trait's releases.

    0.1.67

    • Update syn dependency to 2.x
    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump anyhow from 1.0.69 to 1.0.70

    build(deps): bump anyhow from 1.0.69 to 1.0.70

    Bumps anyhow from 1.0.69 to 1.0.70.

    Release notes

    Sourced from anyhow's releases.

    1.0.70

    • Update syn dependency to 2.x
    Commits
    • e4db1f9 Release 1.0.70
    • 10f5994 Merge pull request #302 from dtolnay/syn
    • 4a6b90c Update to syn 2
    • 553ed38 Update clippy.toml msrv to match rust-version in Cargo.toml
    • d30b027 Ignore let_underscore_untyped pedantic clippy lint
    • 2c2803f Merge pull request #298 from dtolnay/constblock
    • b249287 Support const block syntax in ensure! macro
    • 80d4c8d Retitle the randomize-layout CI step
    • 4804a78 Support a manual trigger on CI workflow
    • 347b473 Test with randomized type layout on nightly
    • Additional commits viewable in compare view

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump clap from 4.1.9 to 4.1.10

    build(deps): bump clap from 4.1.9 to 4.1.10

    Bumps clap from 4.1.9 to 4.1.10.

    Release notes

    Sourced from clap's releases.

    v4.1.10

    [4.1.10] - 2023-03-17

    Fixes

    • (help) On Windows, avoid underlined text artifacts
    Changelog

    Sourced from clap's changelog.

    [4.1.10] - 2023-03-17

    Fixes

    • (help) On Windows, avoid underlined text artifacts
    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump clap from 4.1.11 to 4.2.1

    build(deps): bump clap from 4.1.11 to 4.2.1

    Bumps clap from 4.1.11 to 4.2.1.

    Release notes

    Sourced from clap's releases.

    v4.2.1

    [4.2.1] - 2023-03-28

    Fixes

    • Don't highlight uninteresting parts of the error message

    v4.2.0

    [4.2.0] - 2023-03-28

    Compatibility

    • Removed the languishing unstable-replace feature (open to discussion at #2836)
    • Removed the stablized unstable-grouped feature

    Features

    • Allow any StyledStr to accept text styled with ANSI escape codes
    • Respect CLICOLOR, CLICOLOR_FORCE

    Fixes

    • Lighten the tone for "unexpected argument" errors (open to discussion at #4638)

    v4.1.14

    [4.1.14] - 2023-03-28

    Features

    • (derive) #[group] raw attribute support

    Performance

    • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
    • os_str_bytes dependency was removed for faster builds and smaller binaries

    v4.1.13

    [4.1.13] - 2023-03-18

    Performance

    • Reduce repeated alloc calls when building a Command
    • Reduce duplicate dependencies for faster builds

    v4.1.12

    [4.1.12] - 2023-03-18

    Internal

    • (derive) Update to syn v2

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.2.1] - 2023-03-28

    Fixes

    • Don't highlight uninteresting parts of the error message

    [4.2.0] - 2023-03-28

    Compatibility

    • Removed the languishing unstable-replace feature (open to discussion at #2836)
    • Removed the stablized unstable-grouped feature

    Features

    • Allow any StyledStr to accept text styled with ANSI escape codes
    • Respect CLICOLOR, CLICOLOR_FORCE

    Fixes

    • Lighten the tone for "unexpected argument" errors (open to discussion at #4638)

    [4.1.14] - 2023-03-28

    Features

    • (derive) #[group] raw attribute support

    Performance

    • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
    • os_str_bytes dependency was removed for faster builds and smaller binaries

    [4.1.13] - 2023-03-18

    Performance

    • Reduce repeated alloc calls when building a Command
    • Reduce duplicate dependencies for faster builds

    [4.1.12] - 2023-03-18

    Internal

    • (derive) Update to syn v2

    Performance

    • (derive) Faster build times by dropping proc-macro-error dependency
    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump serde_json from 1.0.94 to 1.0.95

    build(deps): bump serde_json from 1.0.94 to 1.0.95

    Bumps serde_json from 1.0.94 to 1.0.95.

    Release notes

    Sourced from serde_json's releases.

    v1.0.95

    • Preserve f32 precision when serializing f32 -> serde_json::Value -> JSON string in "arbitrary_precision" mode (#1004, #1005)
    Commits
    • 4ea38c4 Release 1.0.95
    • 731886c Merge pull request #1005 from dtolnay/f32cast
    • c9bff92 Fix PartialEq between Value and f32
    • 06f3443 Eliminate f32-to-f64 casting in arbitrary_precision mode
    • b0990a5 Add regression test for issue 1004
    • 02e5833 Update fuzz crate gitignore to ignore coverage dir
    • 4b96996 No longer test so many old compiler versions
    • See full diff in compare view

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump tokio from 1.26.0 to 1.27.0

    build(deps): bump tokio from 1.26.0 to 1.27.0

    Bumps tokio from 1.26.0 to 1.27.0.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.27.0

    1.27.0 (March 27th, 2023)

    This release bumps the MSRV of Tokio to 1.56. (#5559)

    Added

    • io: add async_io helper method to sockets (#5512)
    • io: add implementations of AsFd/AsHandle/AsSocket (#5514, #5540)
    • net: add UdpSocket::peek_sender() (#5520)
    • sync: add RwLockWriteGuard::{downgrade_map, try_downgrade_map} (#5527)
    • task: add JoinHandle::abort_handle (#5543)

    Changed

    • io: use memchr from libc (#5558)
    • macros: accept path as crate rename in #[tokio::main] (#5557)
    • macros: update to syn 2.0.0 (#5572)
    • time: don't register for a wakeup when Interval returns Ready (#5553)

    Fixed

    • fs: fuse std iterator in ReadDir (#5555)
    • tracing: fix spawn_blocking location fields (#5573)
    • time: clean up redundant check in Wheel::poll() (#5574)

    Documented

    • macros: define cancellation safety (#5525)
    • io: add details to docs of tokio::io::copy[_buf] (#5575)
    • io: refer to ReaderStream and StreamReader in module docs (#5576)

    #5512: tokio-rs/tokio#5512 #5514: tokio-rs/tokio#5514 #5520: tokio-rs/tokio#5520 #5525: tokio-rs/tokio#5525 #5527: tokio-rs/tokio#5527 #5540: tokio-rs/tokio#5540 #5543: tokio-rs/tokio#5543 #5553: tokio-rs/tokio#5553 #5555: tokio-rs/tokio#5555 #5557: tokio-rs/tokio#5557 #5558: tokio-rs/tokio#5558 #5559: tokio-rs/tokio#5559 #5572: tokio-rs/tokio#5572 #5573: tokio-rs/tokio#5573 #5574: tokio-rs/tokio#5574 #5575: tokio-rs/tokio#5575 #5576: tokio-rs/tokio#5576

    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump serde from 1.0.158 to 1.0.159

    build(deps): bump serde from 1.0.158 to 1.0.159

    Bumps serde from 1.0.158 to 1.0.159.

    Release notes

    Sourced from serde's releases.

    v1.0.159

    • Accept empty #[serde()] attribute (#2422)
    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump clap_complete from 4.1.5 to 4.2.0

    build(deps): bump clap_complete from 4.1.5 to 4.2.0

    Bumps clap_complete from 4.1.5 to 4.2.0.

    Release notes

    Sourced from clap_complete's releases.

    v4.2.0

    [4.2.0] - 2023-03-28

    Compatibility

    • Removed the languishing unstable-replace feature (open to discussion at #2836)
    • Removed the stablized unstable-grouped feature

    Features

    • Allow any StyledStr to accept text styled with ANSI escape codes
    • Respect CLICOLOR, CLICOLOR_FORCE

    Fixes

    • Lighten the tone for "unexpected argument" errors (open to discussion at #4638)

    v4.1.14

    [4.1.14] - 2023-03-28

    Features

    • (derive) #[group] raw attribute support

    Performance

    • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
    • os_str_bytes dependency was removed for faster builds and smaller binaries

    v4.1.13

    [4.1.13] - 2023-03-18

    Performance

    • Reduce repeated alloc calls when building a Command
    • Reduce duplicate dependencies for faster builds

    v4.1.12

    [4.1.12] - 2023-03-18

    Internal

    • (derive) Update to syn v2

    Performance

    • (derive) Faster build times by dropping proc-macro-error dependency

    v4.1.11

    [4.1.11] - 2023-03-17

    ... (truncated)

    Changelog

    Sourced from clap_complete's changelog.

    [4.2.0] - 2023-03-28

    Compatibility

    • Removed the languishing unstable-replace feature (open to discussion at #2836)
    • Removed the stablized unstable-grouped feature

    Features

    • Allow any StyledStr to accept text styled with ANSI escape codes
    • Respect CLICOLOR, CLICOLOR_FORCE

    Fixes

    • Lighten the tone for "unexpected argument" errors (open to discussion at #4638)

    [4.1.14] - 2023-03-28

    Features

    • (derive) #[group] raw attribute support

    Performance

    • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
    • os_str_bytes dependency was removed for faster builds and smaller binaries

    [4.1.13] - 2023-03-18

    Performance

    • Reduce repeated alloc calls when building a Command
    • Reduce duplicate dependencies for faster builds

    [4.1.12] - 2023-03-18

    Internal

    • (derive) Update to syn v2

    Performance

    • (derive) Faster build times by dropping proc-macro-error dependency

    [4.1.11] - 2023-03-17

    Internal

    • Update bitflags

    ... (truncated)

    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
Releases(v0.1.6)
Owner
Michael
an engineer with great dream
Michael
It is not about Keanu Reeves but a benchmark tool.

benchman Features Focus on one-shot benchmark RAII-style Statistics (Average, Median, 95% and 99% percentile) Colored output Tagging Nesting Motivatio

Akira Hayakawa 4 Feb 12, 2022
Benchmark for Rust and humans

bma-benchmark Benchmark for Rust and humans What is this for I like testing different libraries, crates and algorithms. I do benchmarks on prototypes

Altertech 11 Jan 17, 2022
Rust wrapper for COCO benchmark functions.

Coco Rust bindings for the COCO Numerical Black-Box Optimization Benchmarking Framework. See https://github.com/numbbo/coco and https://numbbo.github.

Leopold Luley 1 Nov 15, 2022
A micro-benchmark framework to use with cargo bench

Glassbench is a micro-benchmark library with memory, to use with cargo bench. Why Run benchmarks and get a comparison with the previous execution carg

Canop 36 Dec 14, 2022
An intrusive flamegraph profiling tool for rust.

FLAME A cool flamegraph library for rust Flamegraphs are a great way to view profiling information. At a glance, they give you information about how m

null 631 Jan 3, 2023
A command-line benchmarking tool

hyperfine 中文 A command-line benchmarking tool. Demo: Benchmarking fd and find: Features Statistical analysis across multiple runs. Support for arbitra

David Peter 14.1k Jan 6, 2023
A unix "time" like benchmarking tool on steroids

benchie Usage Binary Once Rust is installed (see step 1 in "Toolchain Setup"), you can easily install the latest version of benchie with: $ cargo inst

benchie 3 May 6, 2022
Statistics-driven benchmarking library for Rust

Criterion.rs Statistics-driven Microbenchmarking in Rust Getting Started | User Guide | Master API Docs | Released API Docs | Changelog | | Criterion.

Brook Heisler 3.1k Jan 8, 2023
A Rust implementation of the PCP instrumentation API

hornet hornet is a Performance Co-Pilot (PCP) Memory Mapped Values (MMV) instrumentation library written in Rust. Contents What is PCP MMV instrumenta

Performance Co-Pilot 33 Sep 15, 2022
A stopwatch library for Rust. Used to time things.

rust-stopwatch This is a simple module used to time things in Rust. Usage To use, add the following line to Cargo.toml under [dependencies]: stopwatch

Chucky Ellison 77 Dec 11, 2022
Experimental one-shot benchmarking/profiling harness for Rust

Iai Experimental One-shot Benchmark Framework in Rust Getting Started | User Guide | Released API Docs | Changelog Iai is an experimental benchmarking

Brook Heisler 409 Dec 25, 2022
An experimental HTTP server in Rust that supports HTTP/1.1, HTTP/2, and HTTP/3 over QUIC.

?? H123 An experimental HTTP server in Rust that supports HTTP/1.1, HTTP/2, and HTTP/3 over QUIC. Warning This is an experimental project and not inte

Naoki Ikeguchi 7 Dec 15, 2022
A http server benchmark tool written in rust 🦀

rsb - rust benchmark rsb is a http server benchmark tool written in rust. The development of this tool is mainly inspired by the bombardier project, a

Michael 45 Apr 10, 2023
Verdun is a HTTP stress-test/benchmark tool written in Rust.

Verdun is a HTTP stress-test/benchmark tool written in Rust. ?? It supports testing a single URL, loading multiples URLs from a file or automatically navigating a website (auto discovery)

Alex Hortopan 2 Feb 23, 2022
hb is an endpoint focused HTTP load testing / benchmark tool.

hb hb is an endpoint focused HTTP load testing / benchmark tool. Description The goal of hb is to provide a simple, robust tool to apply load against

Mark Pritchard 2 Aug 23, 2022
A more modern http framework benchmarker supporting HTTP/1 and HTTP/2 benchmarks.

rewrk A more modern http framework benchmark utility.

Harrison Burt 273 Dec 27, 2022
rusty-riscy is a performance testing and system resource monitoring tool written in Rust to benchmark RISC-V processors.

rusty-riscy rusty-riscy is a performance testing and system resource monitoring tool written in Rust to benchmark RISC-V processors. Objectives To cre

Suhas KV 4 May 3, 2022
Benchmark tool for comparing with other runtimes.

Monoio Benchmark TCP ping-pong(not echo) is a common benchmark for network applications. We will use 1K ping-pong to test performance of different run

null 6 Oct 10, 2022
It is not about Keanu Reeves but a benchmark tool.

benchman Features Focus on one-shot benchmark RAII-style Statistics (Average, Median, 95% and 99% percentile) Colored output Tagging Nesting Motivatio

Akira Hayakawa 4 Feb 12, 2022
Blazing fast tool to benchmark Starknet sequencers 🦀

Gomu Gomu no Gatling Blazing fast tool to benchmark Starknet sequencers ?? . Installation From source git clone https://github.com/keep-starknet-stran

Keep StarkNet Strange 7 Jul 7, 2023