diff options
| author | Tyge Løvset <[email protected]> | 2022-04-07 16:38:47 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-04-07 16:38:47 +0200 |
| commit | 40cd61ca7d5f9d32931b3a2313aef65e13c950b6 (patch) | |
| tree | ae0a2139a43ecd2798c0f7f6f29d52b4a0486470 /benchmarks/misc | |
| parent | 03e36c56d8f61a6cbf2ca124134915999594fc91 (diff) | |
| download | STC-modified-40cd61ca7d5f9d32931b3a2313aef65e13c950b6.tar.gz STC-modified-40cd61ca7d5f9d32931b3a2313aef65e13c950b6.zip | |
More refactoring of cbits.h + minor changes in examples/benchmark.
Diffstat (limited to 'benchmarks/misc')
| -rw-r--r-- | benchmarks/misc/sso_bench2.cpp | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/benchmarks/misc/sso_bench2.cpp b/benchmarks/misc/sso_bench2.cpp index 91ffe6ca..7d3bf5ca 100644 --- a/benchmarks/misc/sso_bench2.cpp +++ b/benchmarks/misc/sso_bench2.cpp @@ -2,7 +2,7 @@ #include <iostream> #include <vector> #include <chrono> -#include <stc/alt/cstr.h> +//#define STC_USE_SSO 1 #define i_val_str #include <stc/cstack.h> @@ -29,8 +29,7 @@ static void sromutrio(uint64_t seed) { } -static const char CHARS[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=+"; -static const int ARRAY_SIZE = sizeof(CHARS) - 1; +static const char CHARS[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=+-"; static const int BENCHMARK_SIZE = 10000000; static const int MAX_STRING_LENGTH = 20; @@ -39,7 +38,7 @@ using time_point = std::chrono::high_resolution_clock::time_point; void addRandomString_STD(std::vector<std::string>& vec, const int length) { std::string s(length, 0); - char* p = s.data(); + char* p = &s[0]; for (int i = 0; i < length; ++i) { p[i] = CHARS[romutrio() & 63]; } @@ -60,10 +59,13 @@ void addRandomString_STC(cstack_str& vec, const int length) { template <class L, typename R> void benchmark(L& vec, const int length, R addRandomString) { time_point t1 = std::chrono::high_resolution_clock::now(); - - for (int i = 0; i < BENCHMARK_SIZE; i++) { - addRandomString(vec, length); - } + + if (length == 0) + for (int i = 0; i < BENCHMARK_SIZE; i++) + addRandomString(vec, (i*13 & 31) + 1); + else + for (int i = 0; i < BENCHMARK_SIZE; i++) + addRandomString(vec, length); time_point t2 = std::chrono::high_resolution_clock::now(); const auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count(); @@ -74,6 +76,23 @@ void benchmark(L& vec, const int length, R addRandomString) { int main() { sromutrio(1234); std::cerr << "length\ttime\tstd::string\n"; + for (int k = 0; k < 4; k++) { + std::vector<std::string> vec; vec.reserve(BENCHMARK_SIZE); + benchmark(vec, 0, addRandomString_STD); + std::cout << '\t' << vec[0] << '\n'; + } + + sromutrio(1234); + std::cerr << "\nlength\ttime\tSTC string\n"; + for (int k = 0; k < 4; k++) { + cstack_str vec = cstack_str_with_capacity(BENCHMARK_SIZE); + benchmark(vec, 0, addRandomString_STC); + std::cout << '\t' << cstr_str(&vec.data[0]) << '\n'; + cstack_str_drop(&vec); + } + + sromutrio(1234); + std::cerr << "length\ttime\tstd::string\n"; for (int length = 1; length <= MAX_STRING_LENGTH; length++) { std::vector<std::string> vec; vec.reserve(BENCHMARK_SIZE); benchmark(vec, length, addRandomString_STD); |
