|
8 | 8 | #include "td/telegram/telegram_api.h" |
9 | 9 | #include "td/telegram/telegram_api.hpp" |
10 | 10 |
|
| 11 | +#include "td/utils/algorithm.h" |
11 | 12 | #include "td/utils/benchmark.h" |
12 | 13 | #include "td/utils/common.h" |
13 | 14 | #include "td/utils/logging.h" |
|
18 | 19 | #include "td/utils/port/RwMutex.h" |
19 | 20 | #include "td/utils/port/Stat.h" |
20 | 21 | #include "td/utils/port/thread.h" |
| 22 | +#include "td/utils/Random.h" |
21 | 23 | #include "td/utils/Slice.h" |
22 | 24 | #include "td/utils/SliceBuilder.h" |
23 | 25 | #include "td/utils/Status.h" |
@@ -676,9 +678,40 @@ class DuplicateCheckerBenchEvenOdd final : public td::Benchmark { |
676 | 678 | } |
677 | 679 | }; |
678 | 680 |
|
| 681 | +BENCH(AddToTopStd, "add_to_top std") { |
| 682 | + td::vector<int> v; |
| 683 | + for (int i = 0; i < n; i++) { |
| 684 | + for (size_t j = 0; j < 10; j++) { |
| 685 | + auto value = td::Random::fast(0, 9); |
| 686 | + auto it = std::find(v.begin(), v.end(), value); |
| 687 | + if (it == v.end()) { |
| 688 | + if (v.size() == 8) { |
| 689 | + v.back() = value; |
| 690 | + } else { |
| 691 | + v.push_back(value); |
| 692 | + } |
| 693 | + it = v.end() - 1; |
| 694 | + } |
| 695 | + std::rotate(v.begin(), it, it + 1); |
| 696 | + } |
| 697 | + } |
| 698 | +} |
| 699 | + |
| 700 | +BENCH(AddToTopTd, "add_to_top td") { |
| 701 | + td::vector<int> v; |
| 702 | + for (int i = 0; i < n; i++) { |
| 703 | + for (size_t j = 0; j < 10; j++) { |
| 704 | + td::add_to_top(v, 8, td::Random::fast(0, 9)); |
| 705 | + } |
| 706 | + } |
| 707 | +} |
| 708 | + |
679 | 709 | int main() { |
680 | 710 | SET_VERBOSITY_LEVEL(VERBOSITY_NAME(DEBUG)); |
681 | 711 |
|
| 712 | + td::bench(AddToTopStdBench()); |
| 713 | + td::bench(AddToTopTdBench()); |
| 714 | + |
682 | 715 | td::bench(TlToStringUpdateFileBench()); |
683 | 716 | td::bench(TlToStringMessageBench()); |
684 | 717 |
|
|
0 commit comments