You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: surveys/micro/2025-06-compiler-performance.md
+53-50Lines changed: 53 additions & 50 deletions
Original file line number
Diff line number
Diff line change
@@ -1,26 +1,30 @@
1
1
# Survey questions
2
2
3
-
The goal of this survey is to figure out how much do Rust users struggle with compilation times and which compilation workflows are the most relevant for them. We would like to use this data so that we can focus the efforts of Rust compiler contributors on the areas of compilation performance that matter the most to our users.
3
+
The goal of this survey is to figure out how much do Rust users struggle with compilation times and which development workflows are the most relevant for them. We would like to use this data so that we can focus the efforts of Rust compiler contributors on the areas of compilation performance that matter the most to our users.
4
4
5
-
Your feedback is much appreciated. This survey is fully anonymous. The Rust survey team will go through the answers and release a summary on the Rust blog after the survey is complete.
5
+
Your feedback is much appreciated!
6
6
7
-
## User classification
7
+
This survey is fully anonymous. The Rust survey team will go through the answers and release a summary on the Rust blog after the survey is complete.
8
8
9
9
### Do you use Rust?
10
10
11
11
Type: select one
12
12
13
13
- Yes, I use Rust [`NEXT`](#do-you-code-in-rust-at-a-company)
14
14
- No, I don't currently use Rust, but I have in the past [`NEXT`](#were-long-compilation-times-the-primary-reason-why-you-stopped-using-rust)
15
-
- No, I have never used Rust [`NEXT`](#other)
15
+
- No, I have never used Rust [`NEXT`](#is-there-anything-else-related-to-rust-compiler-performance-that-you-would-like-to-tell-us)
16
16
17
17
### Were long compilation times the primary reason why you stopped using Rust?
18
18
19
19
Type: select one
20
20
21
21
- Yes
22
22
- No, but it was one of the reasons why I stopped using Rust
23
-
- No
23
+
- No [`NEXT`](#is-there-anything-else-related-to-rust-compiler-performance-that-you-would-like-to-tell-us)
24
+
25
+
Please answer the following questions based on how did you use Rust before you stopped using it.
26
+
27
+
## User classification
24
28
25
29
### Which operating systems do you use regularly for Rust development?
26
30
@@ -47,9 +51,9 @@ Type: select one (optional)
47
51
- Yes (501-5000 employees)
48
52
- Yes (more than 5000 employees)
49
53
50
-
## Workflows
54
+
## Development workflows
51
55
52
-
### Which builds system do you use to build Rust code?
56
+
### Which build systems do you use to build Rust code?
53
57
54
58
Type: select all that apply (optional)
55
59
@@ -63,7 +67,7 @@ Type: select all that apply (optional)
63
67
Type: select all that apply (optional)
64
68
65
69
- On my local computer
66
-
- On CI infrastructure
70
+
- On CI (Continuous Integration) infrastructure
67
71
- On a remote or cloud server
68
72
- Other (open response)
69
73
@@ -83,41 +87,16 @@ Workflows:
83
87
- CI (Continuous Integration) builds
84
88
- Docker builds
85
89
86
-
Priority:
90
+
Options:
87
91
88
92
- Big problem for me
89
93
- Could be improved, but does not limit me
90
94
- Not an issue for me at all
95
+
- I do not use this workflow
91
96
92
97
### Do you have any other Rust development workflows that you would like to mention?
93
98
94
-
Type: open response (optional)
95
-
96
-
### How do you primarily examine compilation errors in your code?
97
-
98
-
Type: select all that apply (optional)
99
-
100
-
- Using code editor (e.g. inline annotations)
101
-
- Using terminal commands (e.g. `cargo check`)
102
-
- Other (open response)
103
-
104
-
### If you use Cargo, how often do you use the following commands after each change to Rust code?
105
-
106
-
Type: matrix (optional)
107
-
108
-
Commands:
109
-
110
-
-`cargo check`
111
-
-`cargo clippy`
112
-
-`cargo test`
113
-
-`cargo run` / `cargo build`
114
-
115
-
Frequency:
116
-
117
-
- After every code change
118
-
- Only after I have resolved other issues
119
-
- Only after I am done (e.g. before creating a commit or pushing to a remote branch)
120
-
- Never
99
+
Type: free form (optional)
121
100
122
101
### How long do you need to wait for the compiler to rebuild your code after making a change?
123
102
@@ -143,18 +122,44 @@ Commands:
143
122
144
123
- Waiting for a rebuild after making a small change
145
124
- Waiting for CI workflows that build Rust code
146
-
-`cargo check` and `cargo build` not sharing compilation cache
147
-
-`cargo check` and `cargo clippy` not sharing compilation cache
148
125
- Waiting for an IDE to show me inline error/warning annotations
149
-
-`cargo` rebuilding everything from scratch and I do not understand why
150
-
-`cargo` and my IDE blocking each other
126
+
-*cargo* and my IDE blocking each other
127
+
-*cargo check* and *cargo build* not sharing compilation cache
128
+
-*cargo check* and *cargo clippy* not sharing compilation cache
129
+
-*cargo* rebuilding everything from scratch and I do not understand why
151
130
152
-
Priority:
131
+
Options:
153
132
154
133
- Big problem for me
155
134
- Could be improved, but does not limit me
156
135
- Not an issue for me at all
157
136
137
+
### How do you primarily examine compilation errors in your code?
138
+
139
+
Type: select all that apply (optional)
140
+
141
+
- Using code editor (e.g. inline annotations)
142
+
- Using terminal commands (e.g. *cargo check*)
143
+
- Other (open response)
144
+
145
+
### If you use Cargo, how often do you use the following commands after each change to Rust code?
146
+
147
+
Type: matrix (optional)
148
+
149
+
Commands:
150
+
151
+
-*cargo check*
152
+
-*cargo clippy*
153
+
-*cargo test*
154
+
-*cargo run* / *cargo build*
155
+
156
+
Frequency:
157
+
158
+
- After every code change
159
+
- Only after I have resolved other issues
160
+
- Only after I am done (e.g. before committing code)
161
+
- Never
162
+
158
163
## Workarounds
159
164
160
165
### Have you used any of the following mechanisms to improve compilation performance?
@@ -172,7 +177,7 @@ Type: select all that apply (optional)
172
177
- Split crates into smaller crates
173
178
- Reduce the amount of dependencies
174
179
- Disable default Cargo features of dependencies
175
-
- Create a Cargo feature that makes certain dependencies (or their features) optional
180
+
- Create a Cargo feature to opt into building certain dependencies (or their features)
176
181
- Reduce usage of procedural macros
177
182
- Reduce usage of generic code (e.g. by converting it to `dyn Trait` instead)
178
183
- Merge integration tests into a single binary
@@ -190,18 +195,18 @@ Type: select all that apply (optional)
190
195
191
196
### Do you use a nightly compiler to achieve better compilation performance?
192
197
193
-
Please answer `Yes` only if you use the `nightly` toolchain primarily for achieving better compilation performance, not for other reasons.
198
+
Please answer `Yes` only if you use the *nightly* toolchain primarily for achieving better compilation performance, not for other reasons.
194
199
195
200
Type: select one (optional)
196
201
197
202
- Yes
198
-
- No [`NEXT`](#debugging)
203
+
- No [`NEXT`](#debugging-and-profiling)
199
204
200
205
### How does using the nightly compiler help you achieve better compilation performance?
201
206
202
-
Type: open answer (optional)
207
+
Type: free form (optional)
203
208
204
-
## Debugging
209
+
## Debugging and profiling
205
210
206
211
### How often do you use a debugger to debug your Rust code?
207
212
@@ -223,7 +228,7 @@ Type: select one (optional)
223
228
224
229
### Do you require unoptimized builds to have debuginfo by default?
225
230
226
-
`cargo build` with the default `dev` profile produces full debug information (debuginfo) by default. This enables debugging using a debugger, but it can also make compilation times slower (by varying amounts, e.g. 30%). In order to improve compilation performance, this debuginfo could be lowered e.g. to `line-tables-only` by default, which still enables rich backtrace information, but does not allow proper debugging.
231
+
*cargo build* with the default `dev` profile produces full debug information (debuginfo) by default. This enables debugging using a debugger, but it can also make compilation times slower (by varying amounts, e.g. 30%). In order to improve compilation performance, this debuginfo could be lowered e.g. to `line-tables-only` by default, which still enables rich backtrace information, but does not allow proper debugging.
227
232
228
233
Type: select one (optional)
229
234
@@ -259,8 +264,6 @@ Type: select one (optional)
259
264
- 33-64 GiB
260
265
- More than 64 GiB
261
266
262
-
## Other
263
-
264
267
### Is there anything else related to Rust compiler performance that you would like to tell us?
0 commit comments