@@ -7,20 +7,33 @@ The suite changes over time. Sometimes the code for a benchmark is updated, in
7
7
which case a small suffix will be added (starting with "-2", then "-3", and so
8
8
on.)
9
9
10
- ## Real programs that are important
10
+ There are two categories of benchmarks, ** Primary** and ** Secondary** .
11
+
12
+ ## Primary
11
13
12
14
These are real programs that are important in some way, and worth tracking.
15
+ They mostly consist of real-world crates.
13
16
14
17
- ** cargo** : The Rust package manager. An important program in the Rust
15
18
ecosystem.
16
19
- ** clap-rs** : A command line argument parser. A crate used by many Rust
17
20
programs.
18
21
- ** cranelift-codegen** : The largest crate from a code generator. Used by
19
22
Firefox.
23
+ - ** diesel** : A type save SQL query builder. Utilizes the type system to
24
+ ensure a lot of invariants. Stresses anything related to resolving
25
+ trait bounds, by having a lot of trait impls for a large number of different
26
+ types.
27
+ - ** encoding** : Character encoding support. Contains some large tables.
20
28
- ** futures** : A futures implementation. Used by many Rust programs.
21
29
- ** helloworld** : A trivial program. Gives a lower bound on compile time.
30
+ - ** html5ever** : An HTML parser. Stresses macro parsing code significantly.
22
31
- ** hyper-2** : A fairly large crate. Utilizes async/await, and used by
23
32
many Rust programs.
33
+ - ** inflate** : An old implementation of the DEFLATE algorithm. Stresses the
34
+ compiler in certain ways.
35
+ - ** keccak** : A cryptography algorithm. Contains a very high number of locals
36
+ and basic blocks.
24
37
- ** piston-image** : A modular game engine. An interesting Rust program.
25
38
- ** regex** : A regular expression parser. Used by many Rust programs.
26
39
- ** ripgrep** : A line-oriented search tool. A widely-used utility.
@@ -33,40 +46,20 @@ These are real programs that are important in some way, and worth tracking.
33
46
ecosystem.
34
47
- ** tokio-webpush-simple** : A simple web server built with tokio. Uses futures
35
48
a lot.
36
- - ** webrender** : A web renderer. Used by Firefox and Servo.
37
- - ** webrender-wrench** : WebRender's test bench. An executable pulling in large
38
- dependencies.
39
-
40
- ## Real programs that stress the compiler
41
-
42
- These are real programs that are known to stress the compiler in interesting
43
- ways.
44
-
45
- - ** diesel** : A type save SQL query builder. Utilizes the type system to
46
- ensure a lot of invariants. Stresses anything related to resolving
47
- trait bounds, by having a lot of trait impls for a large number of different
48
- types.
49
- - ** encoding** : Character encoding support. Contains some large tables.
50
- - ** html5ever** : An HTML parser. Stresses macro parsing code significantly.
51
- - ** inflate** : An old implementation of the DEFLATE algorithm. Stresses the
52
- compiler in certain ways.
53
- - ** keccak** : A cryptography algorithm. Contains a very high number of locals
54
- and basic blocks.
55
49
- ** ucd** : A Unicode crate. Contains large statics that
56
50
[ stress] ( https://github.com/rust-lang/rust/issues/53643 ) the borrow checker's
57
51
implementation of NLL.
58
52
- ** unicode_normalization** : Unicode character composition and decomposition
59
53
utilities. Uses huge ` match ` statements that stress the compiler in unusual
60
54
ways.
61
- - ** wg-grammar ** : A parser generator .
62
- [ Stresses ] ( https://github.com/rust-lang/rust/issues/58178 ) the borrow
63
- checker's implementation of NLL .
55
+ - ** webrender ** : A web renderer. Used by Firefox and Servo .
56
+ - ** webrender-wrench ** : WebRender's test bench. An executable pulling in large
57
+ dependencies .
64
58
65
- ## Artificial stress tests
59
+ ## Secondary
66
60
67
- These are artificial programs that stress one particular aspect of the
68
- compiler. Some are entirely artificial, and some are extracted from real
69
- programs.
61
+ These are either artificial programs or real crates that stress one particular aspect of the
62
+ compiler in interesting ways.
70
63
71
64
- ** await-call-tree** : A tree of async fns that await each other, creating a
72
65
large type composed of many repeated ` impl Future ` types. Such types caused
@@ -85,6 +78,8 @@ programs.
85
78
- ** deep-vector** : A test containing a single large vector of zeroes, which
86
79
caused [ poor performance] ( https://github.com/rust-lang/rust/issues/20936 ) in
87
80
the past.
81
+ - ** derive** : A large amount of simple structs with a ` #[derive] ` attribute for common built-in traits such as Copy and Debug.
82
+ - ** externs** : A large amount of extern functions has caused [ slowdowns in the past] ( https://github.com/rust-lang/rust/pull/78448 ) .
88
83
- ** issue-46449** : A small program that caused [ poor
89
84
performance] ( https://github.com/rust-lang/rust/issues/46449 ) in the past.
90
85
- ** issue-58319** : A small program that caused [ poor
@@ -103,7 +98,7 @@ programs.
103
98
- ** projection-caching** : A small program that causes extremely, deeply nested
104
99
types which stress the trait system's projection cache. Removing that cache
105
100
resulted in hours long compilations for some programs using futures,
106
- actix-web and other libraries with similiarly nested type combinators.
101
+ actix-web and other libraries with similarly nested type combinators.
107
102
- ** regression-31157** : A small program that caused a [ large performance
108
103
regression] ( https://github.com/rust-lang/rust/issues/31157 ) from the past.
109
104
- ** token-stream-stress** : Constructs a long token stream much like the ` quote `
@@ -122,5 +117,6 @@ programs.
122
117
- ** wf-projection-stress-65510** : A stress test which showcases [ quadratic
123
118
behavior] ( https://github.com/rust-lang/rust/issues/65510 ) (in the number of
124
119
associated type bounds).
125
- - ** externs** : A large amount of extern functions has caused [ slowdowns in the past] ( https://github.com/rust-lang/rust/pull/78448 ) .
126
- - ** derive** : A large amount of simple structs with a ` #[derive] ` attribute for common built-in traits such as Copy and Debug.
120
+ - ** wg-grammar** : A parser generator.
121
+ [ Stresses] ( https://github.com/rust-lang/rust/issues/58178 ) the borrow
122
+ checker's implementation of NLL.
0 commit comments