From b8b376d9272fb09eb8ad32ead7ab0f4a696a2af2 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Wed, 24 Jun 2026 05:11:45 -0400 Subject: [PATCH] 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. --- meson.build | 2 +- tests/perf_tests.cpp | 93 ++++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/meson.build b/meson.build index 6c801b1..27c47b4 100644 --- a/meson.build +++ b/meson.build @@ -2,7 +2,7 @@ project('sol2_test', 'cpp', version: '0.1.0', default_options: [ '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 diff --git a/tests/perf_tests.cpp b/tests/perf_tests.cpp index 0b34b10..2a134f6 100644 --- a/tests/perf_tests.cpp +++ b/tests/perf_tests.cpp @@ -360,56 +360,57 @@ namespace perf_tests { Stats moa_many_for; for(int i = 0; i < sample_number; i++) { 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(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++) { - 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; - } + 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; + } + moa_many_for.sample_time(start); } + moa_many_for.dump("moa many for"); fmt::println("-------------\n"); samples.moa_many_for.push_back(moa_many_for);