Add a slightly simpler MOAS test to use with the Lua test.

master
Zed A. Shaw 1 month ago
parent 6b9ed97f17
commit 89c3848a1b
  1. 55
      tests/perf_tests.cpp

@ -162,6 +162,7 @@ namespace perf_tests {
std::vector<Stats> ls_many_for; std::vector<Stats> ls_many_for;
std::vector<Stats> maos_big_for; std::vector<Stats> maos_big_for;
std::vector<Stats> maos_many_for; std::vector<Stats> maos_many_for;
std::vector<Stats> maos_many_for_2;
}; };
void test_large_soa(Samples& samples, int sample_size, int sample_number) { 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); 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() { 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; Samples mofm;
@ -418,15 +458,17 @@ namespace perf_tests {
Stats ls_many_for; Stats ls_many_for;
Stats maos_big_for; Stats maos_big_for;
Stats maos_many_for; Stats maos_many_for;
Stats maos_many_for_2;
for(size_t i = 0; i < samples.soa_big_for.size(); i++) { 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_big_for[i].mean(),
samples.soa_many_for[i].mean(), samples.soa_many_for[i].mean(),
samples.ls_big_for[i].mean(), samples.ls_big_for[i].mean(),
samples.ls_many_for[i].mean(), samples.ls_many_for[i].mean(),
samples.maos_big_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 // this is potentially total bullshit
soa_big_for.sample(samples.soa_big_for[i].mean()); 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()); ls_many_for.sample(samples.ls_many_for[i].mean());
maos_big_for.sample(samples.maos_big_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.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 // totally not sure if this t-test is legit, must study more
@ -450,6 +493,12 @@ namespace perf_tests {
// the most pathologic case // the most pathologic case
fmt::println("---- {}", soa_big_for.mean() - ls_many_for.mean()); fmt::println("---- {}", soa_big_for.mean() - ls_many_for.mean());
soa_big_for.t_test(ls_many_for); 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{ fuc2::Set TESTS{

Loading…
Cancel
Save