Commit e47bec1
committed
Avoid closures to improve compile times.
`HashMap` and `HashSet` are used widely, and often instantiated many
times. As a result, small differences in how the code is written can
have a significant effect on how much LLVM IR is generated, which
affects compile times.
This commit avoids a lot of small closures by replacing calls to
`Option::map`, `Option::ok_or_else`, `Option::unwrap_or_else` and
`Result::unwrap_or_else` with `match` expressions. Although this makes
the code less concise, it improves compile times. For example, several
of the benchmarks in rustc-perf compile up to 3.5% faster after this
change is incorporated into std.
Every change is accompanied by a short comment to explain why a `match`
is used. This may seem excessive, but without these comments it would be
easy for a well-meaning person in the future to change some or all of
these back to the original versions without understanding the
consequences.1 parent 7593ec9 commit e47bec1
3 files changed
+139
-60
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
802 | 802 | | |
803 | 803 | | |
804 | 804 | | |
805 | | - | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
806 | 810 | | |
807 | 811 | | |
808 | 812 | | |
| |||
831 | 835 | | |
832 | 836 | | |
833 | 837 | | |
834 | | - | |
835 | | - | |
836 | | - | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
837 | 841 | | |
838 | | - | |
839 | | - | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
840 | 846 | | |
841 | 847 | | |
842 | 848 | | |
| |||
869 | 875 | | |
870 | 876 | | |
871 | 877 | | |
872 | | - | |
873 | | - | |
874 | | - | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
875 | 881 | | |
876 | | - | |
877 | | - | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
878 | 886 | | |
879 | 887 | | |
880 | 888 | | |
| |||
933 | 941 | | |
934 | 942 | | |
935 | 943 | | |
936 | | - | |
937 | | - | |
938 | | - | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
939 | 949 | | |
940 | 950 | | |
941 | 951 | | |
| |||
1004 | 1014 | | |
1005 | 1015 | | |
1006 | 1016 | | |
1007 | | - | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
1008 | 1022 | | |
1009 | 1023 | | |
1010 | 1024 | | |
| |||
1561 | 1575 | | |
1562 | 1576 | | |
1563 | 1577 | | |
1564 | | - | |
1565 | | - | |
1566 | | - | |
1567 | | - | |
| 1578 | + | |
| 1579 | + | |
1568 | 1580 | | |
1569 | | - | |
1570 | | - | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
1571 | 1585 | | |
1572 | 1586 | | |
1573 | 1587 | | |
| |||
2030 | 2044 | | |
2031 | 2045 | | |
2032 | 2046 | | |
2033 | | - | |
2034 | | - | |
2035 | | - | |
2036 | | - | |
| 2047 | + | |
| 2048 | + | |
| 2049 | + | |
| 2050 | + | |
| 2051 | + | |
| 2052 | + | |
| 2053 | + | |
| 2054 | + | |
2037 | 2055 | | |
2038 | 2056 | | |
2039 | 2057 | | |
| |||
2054 | 2072 | | |
2055 | 2073 | | |
2056 | 2074 | | |
2057 | | - | |
2058 | | - | |
2059 | | - | |
2060 | | - | |
| 2075 | + | |
| 2076 | + | |
| 2077 | + | |
| 2078 | + | |
| 2079 | + | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
2061 | 2083 | | |
2062 | 2084 | | |
2063 | 2085 | | |
| |||
2113 | 2135 | | |
2114 | 2136 | | |
2115 | 2137 | | |
2116 | | - | |
| 2138 | + | |
| 2139 | + | |
| 2140 | + | |
| 2141 | + | |
| 2142 | + | |
2117 | 2143 | | |
2118 | 2144 | | |
2119 | 2145 | | |
| |||
2133 | 2159 | | |
2134 | 2160 | | |
2135 | 2161 | | |
2136 | | - | |
| 2162 | + | |
| 2163 | + | |
| 2164 | + | |
| 2165 | + | |
| 2166 | + | |
2137 | 2167 | | |
2138 | 2168 | | |
2139 | 2169 | | |
| |||
2153 | 2183 | | |
2154 | 2184 | | |
2155 | 2185 | | |
2156 | | - | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
| 2189 | + | |
| 2190 | + | |
2157 | 2191 | | |
2158 | 2192 | | |
2159 | 2193 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
402 | 402 | | |
403 | 403 | | |
404 | 404 | | |
405 | | - | |
406 | | - | |
407 | | - | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
408 | 415 | | |
409 | 416 | | |
410 | 417 | | |
| |||
425 | 432 | | |
426 | 433 | | |
427 | 434 | | |
428 | | - | |
429 | | - | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
430 | 440 | | |
431 | 441 | | |
432 | 442 | | |
| |||
445 | 455 | | |
446 | 456 | | |
447 | 457 | | |
448 | | - | |
449 | | - | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
450 | 463 | | |
451 | 464 | | |
452 | 465 | | |
453 | 466 | | |
454 | 467 | | |
455 | | - | |
456 | | - | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
457 | 473 | | |
458 | 474 | | |
459 | 475 | | |
| |||
671 | 687 | | |
672 | 688 | | |
673 | 689 | | |
674 | | - | |
675 | | - | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
676 | 694 | | |
677 | 695 | | |
678 | 696 | | |
| |||
682 | 700 | | |
683 | 701 | | |
684 | 702 | | |
685 | | - | |
686 | | - | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
687 | 707 | | |
688 | 708 | | |
689 | 709 | | |
| |||
711 | 731 | | |
712 | 732 | | |
713 | 733 | | |
714 | | - | |
715 | | - | |
716 | | - | |
717 | | - | |
718 | | - | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
719 | 739 | | |
720 | 740 | | |
721 | 741 | | |
| |||
1065 | 1085 | | |
1066 | 1086 | | |
1067 | 1087 | | |
1068 | | - | |
1069 | | - | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
1070 | 1093 | | |
1071 | 1094 | | |
1072 | 1095 | | |
| |||
1087 | 1110 | | |
1088 | 1111 | | |
1089 | 1112 | | |
1090 | | - | |
1091 | | - | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
1092 | 1118 | | |
1093 | 1119 | | |
1094 | 1120 | | |
| |||
1121 | 1147 | | |
1122 | 1148 | | |
1123 | 1149 | | |
1124 | | - | |
1125 | | - | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
1126 | 1155 | | |
1127 | 1156 | | |
1128 | 1157 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
687 | 687 | | |
688 | 688 | | |
689 | 689 | | |
690 | | - | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
691 | 695 | | |
692 | 696 | | |
693 | 697 | | |
| |||
951 | 955 | | |
952 | 956 | | |
953 | 957 | | |
954 | | - | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
955 | 963 | | |
956 | 964 | | |
957 | 965 | | |
| |||
1365 | 1373 | | |
1366 | 1374 | | |
1367 | 1375 | | |
1368 | | - | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
1369 | 1381 | | |
1370 | 1382 | | |
1371 | 1383 | | |
| |||
1392 | 1404 | | |
1393 | 1405 | | |
1394 | 1406 | | |
1395 | | - | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
1396 | 1412 | | |
1397 | 1413 | | |
1398 | 1414 | | |
| |||
0 commit comments