Commit aca28f1
authored
[libc++] Optimize __tree copy/move constructor/assignment with allocator (#163558)
This patch applies the same optimization as implemented in #151304 to
the overloads taking an allocator as the second argument.
Apple M4:
```
Benchmark old new Difference % Difference
----------------------------------------------------------- -------------- -------------- ------------ --------------
std::map<int,_int>::ctor(&&,_different_allocs)/0 14.59 12.78 -1.81 -12.41%
std::map<int,_int>::ctor(&&,_different_allocs)/1024 16407.05 6265.11 -10141.94 -61.81%
std::map<int,_int>::ctor(&&,_different_allocs)/32 395.99 199.76 -196.23 -49.56%
std::map<int,_int>::ctor(&&,_different_allocs)/8192 141478.67 53767.84 -87710.83 -62.00%
std::map<int,_int>::ctor(const&,_alloc)/0 12.83 12.71 -0.12 -0.94%
std::map<int,_int>::ctor(const&,_alloc)/1024 9979.71 7849.11 -2130.59 -21.35%
std::map<int,_int>::ctor(const&,_alloc)/32 283.82 266.05 -17.77 -6.26%
std::map<int,_int>::ctor(const&,_alloc)/8192 81418.63 63190.41 -18228.21 -22.39%
std::map<std::string,_int>::ctor(&&,_different_allocs)/0 14.58 12.68 -1.90 -13.00%
std::map<std::string,_int>::ctor(&&,_different_allocs)/1024 19513.56 7806.04 -11707.52 -60.00%
std::map<std::string,_int>::ctor(&&,_different_allocs)/32 477.80 247.28 -230.52 -48.25%
std::map<std::string,_int>::ctor(&&,_different_allocs)/8192 504558.78 69592.21 -434966.56 -86.21%
std::map<std::string,_int>::ctor(const&,_alloc)/0 12.64 12.60 -0.04 -0.33%
std::map<std::string,_int>::ctor(const&,_alloc)/1024 43198.53 37220.54 -5977.99 -13.84%
std::map<std::string,_int>::ctor(const&,_alloc)/32 928.39 867.03 -61.36 -6.61%
std::map<std::string,_int>::ctor(const&,_alloc)/8192 461313.81 389200.82 -72112.99 -15.63%
```1 parent 1f58cbe commit aca28f1
File tree
14 files changed
+202
-132
lines changed- libcxx
- include
- test/benchmarks/containers/associative
14 files changed
+202
-132
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
887 | 887 | | |
888 | 888 | | |
889 | 889 | | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
890 | 902 | | |
891 | 903 | | |
892 | 904 | | |
| |||
995 | 1007 | | |
996 | 1008 | | |
997 | 1009 | | |
998 | | - | |
999 | | - | |
1000 | | - | |
1001 | | - | |
1002 | | - | |
1003 | | - | |
1004 | | - | |
1005 | | - | |
1006 | | - | |
1007 | | - | |
1008 | | - | |
1009 | | - | |
1010 | | - | |
1011 | | - | |
1012 | | - | |
1013 | | - | |
1014 | | - | |
1015 | | - | |
1016 | | - | |
1017 | | - | |
1018 | | - | |
1019 | 1010 | | |
1020 | 1011 | | |
1021 | 1012 | | |
| |||
1388 | 1379 | | |
1389 | 1380 | | |
1390 | 1381 | | |
| 1382 | + | |
1391 | 1383 | | |
1392 | 1384 | | |
1393 | 1385 | | |
1394 | | - | |
1395 | | - | |
| 1386 | + | |
1396 | 1387 | | |
1397 | 1388 | | |
1398 | 1389 | | |
1399 | | - | |
| 1390 | + | |
1400 | 1391 | | |
1401 | 1392 | | |
1402 | | - | |
1403 | | - | |
| 1393 | + | |
| 1394 | + | |
1404 | 1395 | | |
1405 | 1396 | | |
1406 | 1397 | | |
| |||
1414 | 1405 | | |
1415 | 1406 | | |
1416 | 1407 | | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
1417 | 1425 | | |
1418 | 1426 | | |
1419 | 1427 | | |
1420 | 1428 | | |
1421 | 1429 | | |
1422 | 1430 | | |
1423 | | - | |
1424 | | - | |
| 1431 | + | |
| 1432 | + | |
1425 | 1433 | | |
1426 | 1434 | | |
1427 | 1435 | | |
1428 | 1436 | | |
1429 | 1437 | | |
1430 | | - | |
| 1438 | + | |
1431 | 1439 | | |
1432 | 1440 | | |
1433 | 1441 | | |
1434 | 1442 | | |
1435 | | - | |
1436 | | - | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
1437 | 1448 | | |
1438 | 1449 | | |
1439 | 1450 | | |
1440 | | - | |
| 1451 | + | |
1441 | 1452 | | |
1442 | 1453 | | |
1443 | 1454 | | |
1444 | 1455 | | |
1445 | 1456 | | |
1446 | 1457 | | |
1447 | | - | |
1448 | | - | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
1449 | 1463 | | |
1450 | | - | |
| 1464 | + | |
1451 | 1465 | | |
1452 | 1466 | | |
1453 | 1467 | | |
1454 | 1468 | | |
1455 | 1469 | | |
1456 | 1470 | | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
| 1476 | + | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
1457 | 1487 | | |
1458 | 1488 | | |
1459 | 1489 | | |
| |||
1594 | 1624 | | |
1595 | 1625 | | |
1596 | 1626 | | |
1597 | | - | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
1598 | 1633 | | |
1599 | | - | |
1600 | | - | |
1601 | | - | |
1602 | | - | |
1603 | | - | |
1604 | | - | |
1605 | | - | |
1606 | | - | |
1607 | | - | |
1608 | | - | |
1609 | | - | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
1610 | 1641 | | |
1611 | | - | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
1612 | 1647 | | |
1613 | 1648 | | |
1614 | 1649 | | |
| |||
1633 | 1668 | | |
1634 | 1669 | | |
1635 | 1670 | | |
1636 | | - | |
| 1671 | + | |
1637 | 1672 | | |
1638 | | - | |
1639 | | - | |
1640 | | - | |
| 1673 | + | |
| 1674 | + | |
1641 | 1675 | | |
1642 | | - | |
1643 | | - | |
1644 | | - | |
1645 | | - | |
1646 | | - | |
1647 | | - | |
1648 | | - | |
1649 | | - | |
1650 | | - | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
1651 | 1681 | | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
1652 | 1686 | | |
1653 | 1687 | | |
1654 | 1688 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
995 | 995 | | |
996 | 996 | | |
997 | 997 | | |
998 | | - | |
| 998 | + | |
999 | 999 | | |
1000 | 1000 | | |
1001 | 1001 | | |
| |||
1023 | 1023 | | |
1024 | 1024 | | |
1025 | 1025 | | |
1026 | | - | |
1027 | | - | |
1028 | | - | |
1029 | | - | |
| 1026 | + | |
1030 | 1027 | | |
1031 | 1028 | | |
1032 | 1029 | | |
| |||
1426 | 1423 | | |
1427 | 1424 | | |
1428 | 1425 | | |
1429 | | - | |
1430 | | - | |
1431 | | - | |
1432 | | - | |
1433 | | - | |
1434 | | - | |
1435 | | - | |
1436 | | - | |
1437 | | - | |
1438 | | - | |
1439 | | - | |
1440 | | - | |
1441 | 1426 | | |
1442 | 1427 | | |
1443 | 1428 | | |
| |||
1683 | 1668 | | |
1684 | 1669 | | |
1685 | 1670 | | |
1686 | | - | |
| 1671 | + | |
1687 | 1672 | | |
1688 | 1673 | | |
1689 | 1674 | | |
| |||
1712 | 1697 | | |
1713 | 1698 | | |
1714 | 1699 | | |
1715 | | - | |
1716 | | - | |
1717 | | - | |
1718 | | - | |
| 1700 | + | |
1719 | 1701 | | |
1720 | 1702 | | |
1721 | 1703 | | |
| |||
1990 | 1972 | | |
1991 | 1973 | | |
1992 | 1974 | | |
1993 | | - | |
1994 | | - | |
1995 | | - | |
1996 | | - | |
1997 | | - | |
1998 | | - | |
1999 | | - | |
2000 | | - | |
2001 | | - | |
2002 | | - | |
2003 | | - | |
2004 | | - | |
2005 | | - | |
2006 | 1975 | | |
2007 | 1976 | | |
2008 | 1977 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
671 | 671 | | |
672 | 672 | | |
673 | 673 | | |
674 | | - | |
675 | | - | |
676 | | - | |
| 674 | + | |
677 | 675 | | |
678 | 676 | | |
679 | | - | |
| 677 | + | |
680 | 678 | | |
681 | 679 | | |
682 | 680 | | |
| |||
946 | 944 | | |
947 | 945 | | |
948 | 946 | | |
949 | | - | |
950 | | - | |
951 | | - | |
952 | | - | |
953 | | - | |
954 | | - | |
955 | | - | |
956 | | - | |
957 | | - | |
958 | | - | |
959 | | - | |
960 | | - | |
961 | | - | |
962 | 947 | | |
963 | 948 | | |
964 | 949 | | |
| |||
1128 | 1113 | | |
1129 | 1114 | | |
1130 | 1115 | | |
1131 | | - | |
| 1116 | + | |
1132 | 1117 | | |
1133 | 1118 | | |
1134 | | - | |
1135 | | - | |
1136 | | - | |
1137 | | - | |
| 1119 | + | |
1138 | 1120 | | |
1139 | 1121 | | |
1140 | 1122 | | |
| |||
1407 | 1389 | | |
1408 | 1390 | | |
1409 | 1391 | | |
1410 | | - | |
1411 | | - | |
1412 | | - | |
1413 | | - | |
1414 | | - | |
1415 | | - | |
1416 | | - | |
1417 | | - | |
1418 | | - | |
1419 | | - | |
1420 | | - | |
1421 | | - | |
1422 | | - | |
1423 | | - | |
1424 | 1392 | | |
1425 | 1393 | | |
1426 | 1394 | | |
| |||
0 commit comments