@@ -15,13 +15,15 @@ There are three categories of compile-time benchmarks, **Primary**, **Secondary*
15
15
These are real programs that are important in some way, and worth tracking.
16
16
They mostly consist of real-world crates.
17
17
18
- - ** bitmaps-3.1.0** : A bitmaps implementation. Stresses code handling traits.
18
+ - ** bitmaps-3.1.0** : A bitmaps implementation. Stresses the compiler's trait
19
+ handling by implementing a trait ` Bits ` for the type ` BitsImpl<N> ` for every
20
+ ` N ` value from 1 to 1024.
19
21
- ** cargo-0.60.0** : The Rust package manager. A large program, and an important
20
- one in the Rust ecosystem.
21
- - ** clap-3.1.6** : A command line argument parser. A crate used by many Rust
22
- programs.
22
+ part of the Rust ecosystem.
23
+ - ** clap-3.1.6** : A command line argument parser library . A crate used by many
24
+ Rust programs.
23
25
- ** cranelift-codegen-0.82.1** : The largest crate from a code generator. Used by
24
- wasmtime.
26
+ wasmtime. Stresses obligation processing, but less than ` keccak ` .
25
27
- ** diesel-1.4.8** : A type safe SQL query builder. Utilizes the type system to
26
28
ensure a lot of invariants. Stresses anything related to resolving
27
29
trait bounds, by having a lot of trait impls for a large number of different
@@ -38,7 +40,8 @@ They mostly consist of real-world crates.
38
40
types, constants, and functions, but relatively little normal code. Stresses
39
41
the parser. A very widely-used crate.
40
42
- ** regex-1.5.5** : A regular expression parser. Used by many Rust programs.
41
- - ** ripgrep-13.0.0** : A line-oriented search tool. A widely-used utility.
43
+ - ** ripgrep-13.0.0** : A line-oriented search tool. A widely-used utility, and a
44
+ binary crate.
42
45
- ** serde-1.0.136** : A serialization/deserialization crate. Used by many other
43
46
Rust programs.
44
47
- ** serde_derive-1.0.136** : A proc-macro sub-crate used by ` serde ` . Used by
@@ -76,7 +79,7 @@ compiler in interesting ways.
76
79
of code that caused exponential behavior in the past.
77
80
- ** deep-vector** : A test containing a single large vector of zeroes, which
78
81
caused [ poor performance] ( https://github.com/rust-lang/rust/issues/20936 ) in
79
- the past.
82
+ the past. Stresses macro expansion and type inference.
80
83
- ** derive** : A large number of simple structs with a ` #[derive] ` attribute for common built-in traits such as Copy and Debug.
81
84
- ** externs** : A large number of extern functions has caused [ slowdowns in the past] ( https://github.com/rust-lang/rust/pull/78448 ) .
82
85
- ** helloworld-tiny** : A trivial program optimized with flags that should reduce binary size.
@@ -89,7 +92,7 @@ compiler in interesting ways.
89
92
[ severe performance regression] ( https://github.com/rust-lang/rust/issues/88862 )
90
93
when trying to normalize large opaque types with late-bound regions.
91
94
- ** keccak** : A cryptography algorithm. Contains a huge function with a very
92
- high number of locals and basic blocks.
95
+ high number of locals and basic blocks, which stresses obligation processing .
93
96
- ** many-assoc-items** : Contains a struct with many associated items, which
94
97
caused [ quadratic behavior] ( https://github.com/rust-lang/rust/issues/68957 )
95
98
in the past.
0 commit comments