diff options
| author | KunoiSayami <[email protected]> | 2023-06-12 00:51:30 +0800 |
|---|---|---|
| committer | KunoiSayami <[email protected]> | 2023-06-12 00:51:30 +0800 |
| commit | e7de21daf6c674633ef1159c2fd042523c1ec32e (patch) | |
| tree | e9fea9b2611fb832898900e7fb698e8a1a4c28f3 /expt_0726.cpp | |
| parent | 5f38ca067108eea5a8c334bd8cbe5866300d585c (diff) | |
refector: Rename last year experimental
Signed-off-by: KunoiSayami <[email protected]>
Diffstat (limited to 'expt_0726.cpp')
| -rw-r--r-- | expt_0726.cpp | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/expt_0726.cpp b/expt_0726.cpp deleted file mode 100644 index 397bc90..0000000 --- a/expt_0726.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include <algorithm> -#include <cassert> -#include <chrono> -#include <cmath> -#include <cstdio> -#include <iostream> -#include <vector> - -constexpr size_t length = 2097152; -std::vector<unsigned long long> population_vector, sample_vector, - original_vector; -// std::vector<std::vector<unsigned long long>> result_storage; -std::vector<bool> result_storage; - -long double sample_cdf(long double x) { - auto it = lower_bound(sample_vector.begin(), sample_vector.end(), x); - if (it == sample_vector.end()) { - return 1; - } - if (it == sample_vector.begin()) { - return 0; - } - auto it_prev = it - 1; - return ((long double)(it_prev - sample_vector.begin()) + - (long double)(x - *it_prev) / (*it - *it_prev)) / - (long double)(sample_vector.size() - 1); -} - -inline long double safe_ceil(long double value) { - auto c = std::ceil(value); - return c == 0 ? 1 : c; -} - -unsigned long long max_value = 0, min_value = 0xfffffffff; - -inline void store_into_vector(unsigned long long value) { - if (max_value < value) { - max_value = value; - } - if (min_value > value) { - min_value = value; - } - population_vector.push_back(value); -} - -constexpr long sample_length = 1024; -constexpr long test_size = 1000000; - -void mian(long scale_size) { - const long split_size = test_size * scale_size; - result_storage.clear(); - result_storage.resize(split_size, false); - - const auto slice_size = 1.0 / (double)(split_size); - - for (long i = 0; i < test_size; i++) { - auto index = (int)safe_ceil(sample_cdf(original_vector[i + sample_length]) / - slice_size) - - 1; - // printf("%Lf\n", index); - if (result_storage[index]) { - while (result_storage[++index]) { - assert(index < split_size); - } - } - result_storage[index] = true; - } -} - -int main(int _argc, char const *_argv[]) { - assert((length & 1) == 0); - assert(length > 1024); - - FILE *file = fopen("normal_distribution.txt", "r"); - assert(file); - for (long long i; fscanf(file, "%lld ", &i) != EOF; store_into_vector(i)) - ; - fclose(file); - - assert(population_vector.size() == length); - - original_vector = population_vector; - - sample_vector = std::vector<unsigned long long>( - original_vector.begin(), original_vector.begin() + sample_length); - sample_vector.push_back(min_value); - sample_vector.push_back(max_value); - - std::sort(sample_vector.begin(), sample_vector.end()); - - for (int i = 2; i <= 16; i++) { - - auto start = std::chrono::high_resolution_clock::now(); - mian(i); - auto end = std::chrono::high_resolution_clock::now(); - - auto element_size_max = 0; - for (auto element : result_storage) { - if (element_size_max < element) { - element_size_max = element; - } - } - assert(element_size_max == 1); - printf("scale: %d, time spend: %ldms\n", i, - std::chrono::duration_cast<std::chrono::microseconds>(end - start) - .count()); - } -} -/* - * Sample output: -scale: 2, time spend: 6749258ms -scale: 3, time spend: 1721671ms -scale: 4, time spend: 611112ms -scale: 5, time spend: 353036ms -scale: 6, time spend: 266654ms -scale: 7, time spend: 267346ms -scale: 8, time spend: 267377ms -scale: 9, time spend: 260396ms -scale: 10, time spend: 267724ms -scale: 11, time spend: 263023ms -scale: 12, time spend: 270249ms -scale: 13, time spend: 265440ms -scale: 14, time spend: 266876ms -scale: 15, time spend: 270683ms -scale: 16, time spend: 273216ms - */
\ No newline at end of file |
