[libcxx-commits] [libcxx] [libc++] Refactor the sequence container benchmarks (PR #119763)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jan 16 09:54:42 PST 2025
https://github.com/ldionne commented:
Sample output with the latest version of this patch:
```
# | ---------------------------------------------------------------------------------------------------------------------------------------------
# | Benchmark Time CPU Iterations
# | ---------------------------------------------------------------------------------------------------------------------------------------------
# | std::deque<int>::ctor(size)/1024 157 ns 157 ns 4239906
# | std::deque<int>::ctor(size, value_type) (cheap elements)/1024 149 ns 149 ns 4312708
# | std::deque<int>::ctor(Iterator, Iterator) (cheap elements)/1024 155 ns 155 ns 4268006
# | std::deque<int>::ctor(Range) (cheap elements)/1024 134 ns 134 ns 3759903
# | std::deque<int>::ctor(const&) (cheap elements)/1024 724 ns 724 ns 973669
# | std::deque<int>::operator=(const&) (cheap elements)/1024 59.9 ns 59.9 ns 11704903
# | std::deque<int>::assign(input-iter, input-iter) (full container) (cheap elements)/1024 487 ns 487 ns 1436499
# | std::deque<int>::insert(begin) (cheap elements)/1024 11.0 ns 11.0 ns 64027514
# | std::deque<int>::insert(middle) (cheap elements)/1024 53.6 ns 53.6 ns 13210040
# | std::deque<int>::erase(start) (cheap elements)/1024 11.5 ns 11.5 ns 63959651
# | std::deque<int>::erase(middle) (cheap elements)/1024 45.1 ns 45.1 ns 15448480
# | std::deque<int>::push_back() (cheap elements)/1024 0.754 ns 0.754 ns 929171456
# | std::deque<std::string>::ctor(size)/1024 1121 ns 1121 ns 621079
# | std::deque<std::string>::ctor(size, value_type) (cheap elements)/1024 1480 ns 1479 ns 472201
# | std::deque<std::string>::ctor(size, value_type) (expensive elements)/1024 57387 ns 57309 ns 12082
# | std::deque<std::string>::ctor(Iterator, Iterator) (cheap elements)/1024 1400 ns 1399 ns 514615
# | std::deque<std::string>::ctor(Iterator, Iterator) (expensive elements)/1024 56631 ns 56629 ns 12424
# | std::deque<std::string>::ctor(Range) (cheap elements)/1024 1361 ns 1361 ns 506905
# | std::deque<std::string>::ctor(Range) (expensive elements)/1024 56507 ns 56496 ns 12438
# | std::deque<std::string>::ctor(const&) (cheap elements)/1024 1583 ns 1583 ns 447324
# | std::deque<std::string>::ctor(const&) (expensive elements)/1024 57127 ns 57113 ns 12361
# | std::deque<std::string>::operator=(const&) (cheap elements)/1024 727 ns 727 ns 961169
# | std::deque<std::string>::operator=(const&) (expensive elements)/1024 10100 ns 10099 ns 69139
# | std::deque<std::string>::assign(input-iter, input-iter) (full container) (cheap elements)/1024 1002 ns 1002 ns 698032
# | std::deque<std::string>::assign(input-iter, input-iter) (full container) (expensive elements)/1024 10277 ns 10277 ns 68167
# | std::deque<std::string>::insert(begin) (cheap elements)/1024 15.2 ns 15.2 ns 45803425
# | std::deque<std::string>::insert(begin) (expensive elements)/1024 72.2 ns 72.2 ns 9785420
# | std::deque<std::string>::insert(middle) (cheap elements)/1024 452 ns 452 ns 1550041
# | std::deque<std::string>::insert(middle) (expensive elements)/1024 510 ns 510 ns 1379365
# | std::deque<std::string>::erase(start) (cheap elements)/1024 11.1 ns 11.1 ns 63154096
# | std::deque<std::string>::erase(start) (expensive elements)/1024 60.7 ns 60.7 ns 11413292
# | std::deque<std::string>::erase(middle) (cheap elements)/1024 422 ns 422 ns 1678730
# | std::deque<std::string>::erase(middle) (expensive elements)/1024 459 ns 459 ns 1520440
# | std::deque<std::string>::push_back() (cheap elements)/1024 2.97 ns 2.97 ns 232748032
# | std::deque<std::string>::push_back() (expensive elements)/1024 55.1 ns 55.1 ns 12525568
# | ------------------------------------------------------------------------------------------------------------------------------------------------------------
# | Benchmark Time CPU Iterations
# | ------------------------------------------------------------------------------------------------------------------------------------------------------------
# | std::vector<int>::ctor(size)/1024 62.5 ns 62.5 ns 9578675
# | std::vector<int>::ctor(size, value_type) (cheap elements)/1024 61.6 ns 61.6 ns 11241007
# | std::vector<int>::ctor(Iterator, Iterator) (cheap elements)/1024 76.0 ns 76.0 ns 9375460
# | std::vector<int>::ctor(Range) (cheap elements)/1024 76.3 ns 76.3 ns 9188884
# | std::vector<int>::ctor(const&) (cheap elements)/1024 75.6 ns 75.6 ns 9316812
# | std::vector<int>::operator=(const&) (cheap elements)/1024 52.9 ns 52.9 ns 13133208
# | std::vector<int>::assign(input-iter, input-iter) (full container) (cheap elements)/1024 334 ns 334 ns 2109005
# | std::vector<int>::insert(begin) (cheap elements)/1024 56.3 ns 56.3 ns 12439579
# | std::vector<int>::insert(middle) (cheap elements)/1024 29.2 ns 29.2 ns 23941200
# | std::vector<int>::insert(input-iter, input-iter) (insert at front, no realloc) (cheap elements)/1024 3288 ns 3289 ns 214065
# | std::vector<int>::insert(input-iter, input-iter) (insert at front, half filled) (cheap elements)/1024 1640 ns 1640 ns 445732
# | std::vector<int>::insert(input-iter, input-iter) (insert at front, near full) (cheap elements)/1024 1674 ns 1676 ns 422420
# | std::vector<int>::erase(start) (cheap elements)/1024 61.6 ns 57.8 ns 12691966
# | std::vector<int>::erase(middle) (cheap elements)/1024 29.7 ns 29.6 ns 23644016
# | std::vector<int>::push_back() (cheap elements)/1024 0.324 ns 0.324 ns 2161321984
# | std::vector<int>::push_back() (with reserve) (cheap elements)/1024 0.321 ns 0.321 ns 2143887360
# | std::vector<std::string>::ctor(size)/1024 620 ns 619 ns 1128341
# | std::vector<std::string>::ctor(size, value_type) (cheap elements)/1024 843 ns 843 ns 810917
# | std::vector<std::string>::ctor(size, value_type) (expensive elements)/1024 51571 ns 51558 ns 13618
# | std::vector<std::string>::ctor(Iterator, Iterator) (cheap elements)/1024 975 ns 975 ns 730498
# | std::vector<std::string>::ctor(Iterator, Iterator) (expensive elements)/1024 52427 ns 52413 ns 13518
# | std::vector<std::string>::ctor(Range) (cheap elements)/1024 960 ns 960 ns 730201
# | std::vector<std::string>::ctor(Range) (expensive elements)/1024 51903 ns 51899 ns 13290
# | std::vector<std::string>::ctor(const&) (cheap elements)/1024 968 ns 968 ns 728196
# | std::vector<std::string>::ctor(const&) (expensive elements)/1024 52606 ns 52523 ns 13495
# | std::vector<std::string>::operator=(const&) (cheap elements)/1024 1289 ns 1288 ns 543757
# | std::vector<std::string>::operator=(const&) (expensive elements)/1024 10153 ns 10153 ns 68801
# | std::vector<std::string>::assign(input-iter, input-iter) (full container) (cheap elements)/1024 804 ns 804 ns 872296
# | std::vector<std::string>::assign(input-iter, input-iter) (full container) (expensive elements)/1024 10333 ns 10329 ns 68142
# | std::vector<std::string>::insert(begin) (cheap elements)/1024 806 ns 774 ns 949165
# | std::vector<std::string>::insert(begin) (expensive elements)/1024 810 ns 809 ns 852038
# | std::vector<std::string>::insert(middle) (cheap elements)/1024 372 ns 372 ns 1885131
# | std::vector<std::string>::insert(middle) (expensive elements)/1024 430 ns 430 ns 1642329
# | std::vector<std::string>::insert(input-iter, input-iter) (insert at front, no realloc) (cheap elements)/1024 2633 ns 2635 ns 266754
# | std::vector<std::string>::insert(input-iter, input-iter) (insert at front, no realloc) (expensive elements)/1024 30652 ns 30642 ns 22873
# | std::vector<std::string>::insert(input-iter, input-iter) (insert at front, half filled) (cheap elements)/1024 3683 ns 3686 ns 193378
# | std::vector<std::string>::insert(input-iter, input-iter) (insert at front, half filled) (expensive elements)/1024 67043 ns 67040 ns 10477
# | std::vector<std::string>::insert(input-iter, input-iter) (insert at front, near full) (cheap elements)/1024 5045 ns 5049 ns 139478
# | std::vector<std::string>::insert(input-iter, input-iter) (insert at front, near full) (expensive elements)/1024 79903 ns 79890 ns 8747
# | std::vector<std::string>::erase(start) (cheap elements)/1024 768 ns 767 ns 914782
# | std::vector<std::string>::erase(start) (expensive elements)/1024 825 ns 825 ns 857391
# | std::vector<std::string>::erase(middle) (cheap elements)/1024 387 ns 387 ns 1815847
# | std::vector<std::string>::erase(middle) (expensive elements)/1024 437 ns 437 ns 1542081
# | std::vector<std::string>::push_back() (cheap elements)/1024 0.995 ns 0.994 ns 700705792
# | std::vector<std::string>::push_back() (expensive elements)/1024 50.7 ns 50.7 ns 13876224
# | std::vector<std::string>::push_back() (with reserve) (cheap elements)/1024 1.00 ns 1.00 ns 705978368
# | std::vector<std::string>::push_back() (with reserve) (expensive elements)/1024 50.4 ns 50.4 ns 13864960
# `-----------------------------
# | --------------------------------------------------------------------------------------------------------------------------------------------
# | Benchmark Time CPU Iterations
# | --------------------------------------------------------------------------------------------------------------------------------------------
# | std::list<int>::ctor(size)/1024 19568 ns 19557 ns 35065
# | std::list<int>::ctor(size, value_type) (cheap elements)/1024 19848 ns 19757 ns 35019
# | std::list<int>::ctor(Iterator, Iterator) (cheap elements)/1024 20111 ns 19880 ns 34990
# | std::list<int>::ctor(Range) (cheap elements)/1024 19918 ns 19650 ns 36775
# | std::list<int>::ctor(const&) (cheap elements)/1024 19820 ns 19805 ns 34853
# | std::list<int>::operator=(const&) (cheap elements)/1024 1048 ns 1047 ns 662578
# | std::list<int>::assign(input-iter, input-iter) (full container) (cheap elements)/1024 950 ns 950 ns 743408
# | std::list<int>::insert(begin) (cheap elements)/1024 16.2 ns 16.2 ns 43460175
# | std::list<int>::erase(start) (cheap elements)/1024 15.7 ns 15.7 ns 44239958
# | std::list<int>::push_back() (cheap elements)/1024 19.5 ns 19.4 ns 35828736
# | std::list<std::string>::ctor(size)/1024 19835 ns 19826 ns 33362
# | std::list<std::string>::ctor(size, value_type) (cheap elements)/1024 21075 ns 20823 ns 35994
# | std::list<std::string>::ctor(size, value_type) (expensive elements)/1024 73713 ns 73696 ns 9104
# | std::list<std::string>::ctor(Iterator, Iterator) (cheap elements)/1024 20894 ns 20821 ns 33653
# | std::list<std::string>::ctor(Iterator, Iterator) (expensive elements)/1024 76080 ns 76065 ns 9481
# | std::list<std::string>::ctor(Range) (cheap elements)/1024 20677 ns 20675 ns 33837
# | std::list<std::string>::ctor(Range) (expensive elements)/1024 77519 ns 77359 ns 9388
# | std::list<std::string>::ctor(const&) (cheap elements)/1024 21527 ns 21519 ns 33310
# | std::list<std::string>::ctor(const&) (expensive elements)/1024 78045 ns 78042 ns 8960
# | std::list<std::string>::operator=(const&) (cheap elements)/1024 2194 ns 2192 ns 365202
# | std::list<std::string>::operator=(const&) (expensive elements)/1024 11145 ns 11141 ns 63478
# | std::list<std::string>::assign(input-iter, input-iter) (full container) (cheap elements)/1024 1040 ns 1040 ns 671566
# | std::list<std::string>::assign(input-iter, input-iter) (full container) (expensive elements)/1024 10672 ns 10672 ns 66023
# | std::list<std::string>::insert(begin) (cheap elements)/1024 17.5 ns 17.5 ns 40064332
# | std::list<std::string>::insert(begin) (expensive elements)/1024 67.4 ns 67.4 ns 10386219
# | std::list<std::string>::erase(start) (cheap elements)/1024 20.6 ns 20.6 ns 35532093
# | std::list<std::string>::erase(start) (expensive elements)/1024 67.1 ns 67.1 ns 10526632
# | std::list<std::string>::push_back() (cheap elements)/1024 22.0 ns 22.0 ns 30441472
# | std::list<std::string>::push_back() (expensive elements)/1024 72.5 ns 72.5 ns 9376768
# `-----------------------------
```
https://github.com/llvm/llvm-project/pull/119763
More information about the libcxx-commits
mailing list