diff --git a/tests/perf_tests.cpp b/tests/perf_tests.cpp index ceb5f3a..4f46485 100644 --- a/tests/perf_tests.cpp +++ b/tests/perf_tests.cpp @@ -162,6 +162,7 @@ namespace perf_tests { std::vector ls_many_for; std::vector maos_big_for; std::vector maos_many_for; + std::vector maos_many_for_2; }; void test_large_soa(Samples& samples, int sample_size, int sample_number) { @@ -383,6 +384,45 @@ namespace perf_tests { } samples.maos_many_for.push_back(maos_many_for); + + Stats maos_many_for_2; + for(int sample = 0; sample < sample_number; sample++) { + auto start = maos_many_for.time_start(); + + for(auto& el : maos->s1) { + el.a01 += el.a02 + sample; + el.a02 += el.a03 + sample; + el.a03 += el.a04 + sample; + } + + for(auto& el : maos->s2) { + el.a05 += el.a06 + sample; + el.a06 += el.a07 + sample; + el.a07 += el.a08 + sample; + } + + for(auto& el : maos->s3) { + el.a09 += el.a10 + sample; + el.a10 += el.a11 + sample; + el.a11 += el.a12 + sample; + } + + for(auto& el : maos->s4) { + el.a13 += el.a14 + sample; + el.a14 += el.a15 + sample; + el.a15 += el.a16 + sample; + } + + for(auto& el : maos->s5) { + el.a17 += el.a18 + sample; + el.a18 += el.a19 + sample; + el.a19 += el.a20 + sample; + } + + maos_many_for.sample_time(start); + } + + samples.maos_many_for_2.push_back(maos_many_for); } void test_all_performance() { @@ -408,7 +448,7 @@ namespace perf_tests { } } - fmt::println("soa_bf soa_mf ls_bf ls_mf maos_bf maos_mf"); + fmt::println("soa_bf soa_mf ls_bf ls_mf maos_bf maos_mf maos_mf2"); Samples mofm; @@ -418,15 +458,17 @@ namespace perf_tests { Stats ls_many_for; Stats maos_big_for; Stats maos_many_for; + Stats maos_many_for_2; for(size_t i = 0; i < samples.soa_big_for.size(); i++) { - fmt::println("{:.2f} {:.2f} {:.2f} {:.2f} {:.2f} {:.2f}", + fmt::println("{:.2f} {:.2f} {:.2f} {:.2f} {:.2f} {:.2f} {:.2f}", samples.soa_big_for[i].mean(), samples.soa_many_for[i].mean(), samples.ls_big_for[i].mean(), samples.ls_many_for[i].mean(), samples.maos_big_for[i].mean(), - samples.maos_many_for[i].mean()); + samples.maos_many_for[i].mean(), + samples.maos_many_for_2[i].mean()); // this is potentially total bullshit soa_big_for.sample(samples.soa_big_for[i].mean()); @@ -435,6 +477,7 @@ namespace perf_tests { ls_many_for.sample(samples.ls_many_for[i].mean()); maos_big_for.sample(samples.maos_big_for[i].mean()); maos_many_for.sample(samples.maos_many_for[i].mean()); + maos_many_for_2.sample(samples.maos_many_for_2[i].mean()); } // totally not sure if this t-test is legit, must study more @@ -450,6 +493,12 @@ namespace perf_tests { // the most pathologic case fmt::println("---- {}", soa_big_for.mean() - ls_many_for.mean()); soa_big_for.t_test(ls_many_for); + + fmt::println("--- MAOS many_for vs many_for_2"); + maos_many_for.t_test(maos_many_for_2); + + fmt::println("--- MAOS big_for vs many_for_2"); + maos_big_for.t_test(maos_many_for_2); } fuc2::Set TESTS{