Commit 216e200
fs: buffer dir entries in opendir()
Read up to 32 directory entries in one batch when `dir.readSync()`
or `dir.read()` are called.
This increases performance significantly, although it introduces
quite a bit of edge case complexity.
confidence improvement accuracy (*) (**) (***)
fs/bench-opendir.js mode='async' dir='lib' n=100 *** 155.93 % ±30.05% ±40.34% ±53.21%
fs/bench-opendir.js mode='async' dir='test/parallel' n=100 *** 479.65 % ±56.81% ±76.47% ±101.32%
fs/bench-opendir.js mode='sync' dir='lib' n=100 10.38 % ±14.39% ±19.16% ±24.96%
fs/bench-opendir.js mode='sync' dir='test/parallel' n=100 *** 63.13 % ±12.84% ±17.18% ±22.58%
PR-URL: #29893
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>1 parent e16e3d5 commit 216e200Copy full SHA for 216e200
File tree
Expand file treeCollapse file tree
5 files changed
+143
-45
lines changedOpen diff view settings
Filter options
- benchmark/fs
- lib/internal/fs
- src
- test/parallel
Expand file treeCollapse file tree
5 files changed
+143
-45
lines changedOpen diff view settings
Collapse file
benchmark/fs/bench-opendir.js
Copy file name to clipboard+51Lines changed: 51 additions & 0 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
| 1 | + |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | + |
| 9 | + |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | + |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | + |
| 22 | + |
| 23 | + |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | + |
| 29 | + |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | + |
| 37 | + |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | + |
| 42 | + |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | + |
| 50 | + |
| 51 | + |
Collapse file
+26-1Lines changed: 26 additions & 1 deletion
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
24 | 24 | |
25 | 25 | |
26 | 26 | |
| 27 | + |
27 | 28 | |
28 | 29 | |
| 30 | + |
29 | 31 | |
30 | 32 | |
31 | 33 | |
32 | 34 | |
33 | 35 | |
34 | 36 | |
35 | 37 | |
| 38 | + |
36 | 39 | |
37 | 40 | |
38 | 41 | |
39 | 42 | |
40 | 43 | |
41 | 44 | |
42 | 45 | |
43 | | - |
| 46 | + |
| 47 | + |
44 | 48 | |
45 | 49 | |
46 | 50 | |
| ||
49 | 53 | |
50 | 54 | |
51 | 55 | |
| 56 | + |
| 57 | + |
| 58 | + |
| 59 | + |
52 | 60 | |
53 | 61 | |
54 | 62 | |
| ||
59 | 67 | |
60 | 68 | |
61 | 69 | |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | + |
| 78 | + |
62 | 79 | |
63 | 80 | |
64 | 81 | |
65 | 82 | |
66 | 83 | |
| 84 | + |
| 85 | + |
67 | 86 | |
68 | 87 | |
69 | 88 | |
| ||
78 | 97 | |
79 | 98 | |
80 | 99 | |
| 100 | + |
| 101 | + |
| 102 | + |
| 103 | + |
| 104 | + |
81 | 105 | |
82 | 106 | |
83 | 107 | |
| ||
90 | 114 | |
91 | 115 | |
92 | 116 | |
| 117 | + |
93 | 118 | |
94 | 119 | |
95 | 120 | |
|
Collapse file
+52-40Lines changed: 52 additions & 40 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
59 | 59 | |
60 | 60 | |
61 | 61 | |
62 | | - |
63 | | - |
| 62 | + |
| 63 | + |
64 | 64 | |
65 | 65 | |
66 | 66 | |
| ||
160 | 160 | |
161 | 161 | |
162 | 162 | |
163 | | - |
| 163 | + |
| 164 | + |
| 165 | + |
| 166 | + |
| 167 | + |
| 168 | + |
| 169 | + |
| 170 | + |
| 171 | + |
| 172 | + |
| 173 | + |
| 174 | + |
| 175 | + |
| 176 | + |
| 177 | + |
| 178 | + |
| 179 | + |
| 180 | + |
| 181 | + |
| 182 | + |
| 183 | + |
| 184 | + |
| 185 | + |
| 186 | + |
| 187 | + |
| 188 | + |
| 189 | + |
| 190 | + |
| 191 | + |
| 192 | + |
| 193 | + |
164 | 194 | |
165 | 195 | |
166 | 196 | |
| ||
170 | 200 | |
171 | 201 | |
172 | 202 | |
173 | | - |
174 | 203 | |
175 | 204 | |
176 | 205 | |
| ||
182 | 211 | |
183 | 212 | |
184 | 213 | |
185 | | - |
186 | | - |
187 | | - |
188 | | - |
189 | | - |
190 | | - |
191 | | - |
192 | | - |
193 | | - |
| 214 | + |
| 215 | + |
| 216 | + |
| 217 | + |
| 218 | + |
| 219 | + |
| 220 | + |
194 | 221 | |
| 222 | + |
195 | 223 | |
196 | | - |
197 | | - |
198 | | - |
199 | | - |
200 | | - |
201 | | - |
202 | | - |
203 | | - |
204 | | - |
| 224 | + |
205 | 225 | |
206 | 226 | |
207 | 227 | |
| ||
217 | 237 | |
218 | 238 | |
219 | 239 | |
220 | | - |
| 240 | + |
221 | 241 | |
222 | 242 | |
223 | | - |
| 243 | + |
224 | 244 | |
225 | 245 | |
226 | 246 | |
| ||
240 | 260 | |
241 | 261 | |
242 | 262 | |
243 | | - |
244 | 263 | |
245 | 264 | |
246 | | - |
247 | | - |
248 | | - |
249 | | - |
250 | | - |
251 | | - |
| 265 | + |
| 266 | + |
| 267 | + |
| 268 | + |
| 269 | + |
| 270 | + |
252 | 271 | |
253 | | - |
| 272 | + |
254 | 273 | |
255 | 274 | |
256 | 275 | |
257 | | - |
258 | | - |
259 | | - |
260 | | - |
261 | | - |
262 | | - |
263 | | - |
264 | | - |
| 276 | + |
265 | 277 | |
266 | 278 | |
267 | 279 | |
|
Collapse file
+2-2Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
25 | 25 | |
26 | 26 | |
27 | 27 | |
28 | | - |
29 | 28 | |
30 | 29 | |
31 | 30 | |
| ||
46 | 45 | |
47 | 46 | |
48 | 47 | |
49 | | - |
| 48 | + |
| 49 | + |
50 | 50 | |
51 | 51 | |
52 | 52 | |
|
Collapse file
test/parallel/test-fs-opendir.js
Copy file name to clipboardExpand all lines: test/parallel/test-fs-opendir.js+12-2Lines changed: 12 additions & 2 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
58 | 58 | |
59 | 59 | |
60 | 60 | |
61 | | - |
| 61 | + |
| 62 | + |
| 63 | + |
62 | 64 | |
63 | 65 | |
64 | 66 | |
65 | 67 | |
66 | 68 | |
67 | 69 | |
68 | | - |
| 70 | + |
| 71 | + |
| 72 | + |
69 | 73 | |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | + |
70 | 78 | |
| 79 | + |
71 | 80 | |
| 81 | + |
72 | 82 | |
73 | 83 | |
74 | 84 | |
|
0 commit comments