Commit 477053d
Optimize planning / stop cloning Strings / Fields so much (2-3% faster planning time) (#18415)
## Which issue does this PR close?
<!--
We generally require a GitHub issue to be filed for all bug fixes and
enhancements and this helps us generate change logs for our releases.
You can link an issue to this PR using the GitHub syntax. For example
`Closes #123` indicates that this PR will close issue #123.
-->
- Closes #18413
## Rationale for this change
Avoid a bunch of clones / String copies during planning
## What changes are included in this PR?
Change several methods on DFSchema to return `&FieldRef` rather than
`&Field` which permits `Arc::clone` rather than a deep `Field` clone
## Are these changes tested?
yes by CI
I also ran benchmarks that show a small but consistent speedup in the
planning benchmarks
## Are there any user-facing changes?
Yes, there are several API changes in DFSchema that now return
`FieldRef` rather than `Field` which allows using `Arc::clone` rather
than `clone`. I have updated the upgrading guide too
---------
Co-authored-by: Jeffrey Vo <jeffrey.vo.australia@gmail.com>1 parent 5519b61 commit 477053d
File tree
11 files changed
+214
-85
lines changed- datafusion
- common/src
- core/src
- dataframe
- expr/src
- sql/src
- expr
- substrait/src/logical_plan/consumer
- rel
- docs/source/library-user-guide
11 files changed
+214
-85
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
| 21 | + | |
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
| |||
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
64 | 71 | | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
65 | 113 | | |
66 | 114 | | |
67 | 115 | | |
| |||
130 | 178 | | |
131 | 179 | | |
132 | 180 | | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
133 | 207 | | |
134 | 208 | | |
135 | 209 | | |
| |||
149 | 223 | | |
150 | 224 | | |
151 | 225 | | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
152 | 254 | | |
153 | 255 | | |
154 | 256 | | |
| |||
161 | 263 | | |
162 | 264 | | |
163 | 265 | | |
164 | | - | |
| 266 | + | |
165 | 267 | | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
| 268 | + | |
| 269 | + | |
171 | 270 | | |
| 271 | + | |
172 | 272 | | |
173 | 273 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
50 | 55 | | |
51 | | - | |
| 56 | + | |
| 57 | + | |
52 | 58 | | |
53 | 59 | | |
54 | 60 | | |
| |||
346 | 352 | | |
347 | 353 | | |
348 | 354 | | |
349 | | - | |
| 355 | + | |
350 | 356 | | |
351 | 357 | | |
352 | 358 | | |
353 | 359 | | |
354 | | - | |
355 | | - | |
356 | | - | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
357 | 365 | | |
358 | 366 | | |
359 | 367 | | |
360 | | - | |
361 | | - | |
362 | | - | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
363 | 371 | | |
364 | 372 | | |
365 | 373 | | |
| |||
410 | 418 | | |
411 | 419 | | |
412 | 420 | | |
413 | | - | |
| 421 | + | |
414 | 422 | | |
415 | 423 | | |
416 | 424 | | |
417 | 425 | | |
418 | | - | |
| 426 | + | |
419 | 427 | | |
420 | 428 | | |
421 | 429 | | |
| |||
428 | 436 | | |
429 | 437 | | |
430 | 438 | | |
431 | | - | |
| 439 | + | |
432 | 440 | | |
433 | 441 | | |
434 | 442 | | |
| |||
440 | 448 | | |
441 | 449 | | |
442 | 450 | | |
443 | | - | |
| 451 | + | |
444 | 452 | | |
445 | 453 | | |
446 | | - | |
| 454 | + | |
447 | 455 | | |
448 | 456 | | |
449 | 457 | | |
| |||
459 | 467 | | |
460 | 468 | | |
461 | 469 | | |
462 | | - | |
| 470 | + | |
463 | 471 | | |
464 | 472 | | |
465 | 473 | | |
466 | | - | |
467 | 474 | | |
468 | 475 | | |
469 | 476 | | |
470 | 477 | | |
471 | 478 | | |
472 | 479 | | |
473 | 480 | | |
474 | | - | |
| 481 | + | |
475 | 482 | | |
476 | 483 | | |
477 | | - | |
478 | 484 | | |
479 | 485 | | |
480 | 486 | | |
| |||
499 | 505 | | |
500 | 506 | | |
501 | 507 | | |
502 | | - | |
| 508 | + | |
503 | 509 | | |
504 | 510 | | |
505 | 511 | | |
| |||
528 | 534 | | |
529 | 535 | | |
530 | 536 | | |
531 | | - | |
| 537 | + | |
532 | 538 | | |
533 | 539 | | |
534 | 540 | | |
| |||
538 | 544 | | |
539 | 545 | | |
540 | 546 | | |
541 | | - | |
| 547 | + | |
542 | 548 | | |
543 | 549 | | |
544 | 550 | | |
| |||
550 | 556 | | |
551 | 557 | | |
552 | 558 | | |
553 | | - | |
| 559 | + | |
554 | 560 | | |
555 | 561 | | |
556 | 562 | | |
| |||
1220 | 1226 | | |
1221 | 1227 | | |
1222 | 1228 | | |
1223 | | - | |
| 1229 | + | |
1224 | 1230 | | |
1225 | 1231 | | |
1226 | 1232 | | |
| |||
1241 | 1247 | | |
1242 | 1248 | | |
1243 | 1249 | | |
1244 | | - | |
| 1250 | + | |
1245 | 1251 | | |
1246 | 1252 | | |
1247 | 1253 | | |
1248 | 1254 | | |
1249 | 1255 | | |
1250 | | - | |
| 1256 | + | |
1251 | 1257 | | |
1252 | 1258 | | |
1253 | 1259 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| |||
320 | 320 | | |
321 | 321 | | |
322 | 322 | | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
323 | 333 | | |
324 | 334 | | |
325 | 335 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| 52 | + | |
52 | 53 | | |
53 | 54 | | |
54 | 55 | | |
| |||
2241 | 2242 | | |
2242 | 2243 | | |
2243 | 2244 | | |
2244 | | - | |
| 2245 | + | |
2245 | 2246 | | |
2246 | 2247 | | |
2247 | 2248 | | |
| |||
2413 | 2414 | | |
2414 | 2415 | | |
2415 | 2416 | | |
2416 | | - | |
| 2417 | + | |
2417 | 2418 | | |
2418 | 2419 | | |
2419 | 2420 | | |
| |||
2450 | 2451 | | |
2451 | 2452 | | |
2452 | 2453 | | |
2453 | | - | |
| 2454 | + | |
2454 | 2455 | | |
2455 | 2456 | | |
2456 | 2457 | | |
| |||
0 commit comments