Fixes from Antonio. 1. I had -D_GLIBCXX_DEBUG=1 -D_GLIBCXX_DEBUG_PEDANTIC=1 in the meson.build. 2. The moa_many_for test had a copy-pasta extra extra for-loop that made it slow. Fix those two and the results match expectation with auto&:for doing better than indexing.

master
Zed A. Shaw 14 hours ago
parent cc88595af8
commit b8b376d927
  1. 2
      meson.build
  2. 93
      tests/perf_tests.cpp

@ -2,7 +2,7 @@ project('sol2_test', 'cpp',
version: '0.1.0', version: '0.1.0',
default_options: [ default_options: [
'cpp_std=c++23', 'cpp_std=c++23',
'cpp_args=-D_GLIBCXX_DEBUG=1 -D_GLIBCXX_DEBUG_PEDANTIC=1', # 'cpp_args=-D_GLIBCXX_DEBUG=1 -D_GLIBCXX_DEBUG_PEDANTIC=1',
]) ])
# use this for common options only for our executables # use this for common options only for our executables

@ -360,56 +360,57 @@ namespace perf_tests {
Stats moa_many_for; Stats moa_many_for;
for(int i = 0; i < sample_number; i++) { for(int i = 0; i < sample_number; i++) {
auto start = moa_many_for.time_start(); auto start = moa_many_for.time_start();
for(auto& el : moa->s1) {
el.a01 += el.a02 + i;
el.a02 += el.a03 + i;
el.a03 += el.a04 + i;
}
for(int i = 0; i < sample_size; i++) {
moa->s1[i].a04 += moa->s2[i].a05 + i;
}
for(auto& el : moa->s2) {
el.a05 += el.a06 + i;
el.a06 += el.a07 + i;
el.a07 += el.a08 + i;
}
for(int i = 0; i < sample_size; i++) {
moa->s2[i].a08 += moa->s3[i].a09 + i;
}
for(auto& el : moa->s3) {
el.a09 += el.a10 + i;
el.a10 += el.a11 + i;
el.a11 += el.a12 + i;
}
for(int i = 0; i < sample_size; i++) { for(int i = 0; i < sample_size; i++) {
for(auto& el : moa->s1) { moa->s3[i].a12 += moa->s4[i].a13 + i;
el.a01 += el.a02 + i;
el.a02 += el.a03 + i;
el.a03 += el.a04 + i;
}
for(int i = 0; i < sample_size; i++) {
moa->s1[i].a04 += moa->s2[i].a05 + i;
}
for(auto& el : moa->s2) {
el.a05 += el.a06 + i;
el.a06 += el.a07 + i;
el.a07 += el.a08 + i;
}
for(int i = 0; i < sample_size; i++) {
moa->s2[i].a08 += moa->s3[i].a09 + i;
}
for(auto& el : moa->s3) {
el.a09 += el.a10 + i;
el.a10 += el.a11 + i;
el.a11 += el.a12 + i;
}
for(int i = 0; i < sample_size; i++) {
moa->s3[i].a12 += moa->s4[i].a13 + i;
}
for(auto& el : moa->s4) {
el.a13 += el.a14 + i;
el.a14 += el.a15 + i;
el.a15 += el.a16 + i;
}
for(int i = 0; i < sample_size; i++) {
moa->s4[i].a16 += moa->s5[i].a17 + i;
}
for(auto& el : moa->s5) {
el.a17 += el.a18 + i;
el.a18 += el.a19 + i;
el.a19 += el.a20 + i;
}
} }
for(auto& el : moa->s4) {
el.a13 += el.a14 + i;
el.a14 += el.a15 + i;
el.a15 += el.a16 + i;
}
for(int i = 0; i < sample_size; i++) {
moa->s4[i].a16 += moa->s5[i].a17 + i;
}
for(auto& el : moa->s5) {
el.a17 += el.a18 + i;
el.a18 += el.a19 + i;
el.a19 += el.a20 + i;
}
moa_many_for.sample_time(start); moa_many_for.sample_time(start);
} }
moa_many_for.dump("moa many for"); moa_many_for.dump("moa many for");
fmt::println("-------------\n"); fmt::println("-------------\n");
samples.moa_many_for.push_back(moa_many_for); samples.moa_many_for.push_back(moa_many_for);

Loading…
Cancel
Save