Fix negative hh_mm_ss components - #118
Conversation
Return non-negative hour, minute, and second components for negative durations. Use an overflow-safe magnitude calculation and cover the behavior with a focused chrono regression test.
Compile-time performance diffCompiler: Repetitions: 5 per configuration. psychicstd compile time, main vs this PR (same runner). 🟢 faster · 🔴 slower · 🟡 within noise. A change is colored only when its bootstrap 95% CI excludes 0 and it clears ±5% / 3ms. 🔴 1 slower · 🟡 2 within noise.
🟡 2 benchmark(s) within noise
Reproduce this on your machine: |
rdfind build-time diff (configure / compile / run tests)Compiler: Repetitions: 5 per configuration. rdfind build time with psychicstd, main vs this PR (same runner). 🟢 faster · 🔴 slower · 🟡 within noise. A change is colored only when its bootstrap 95% CI excludes 0 and it clears ±5% / 3ms. No significant changes (🟡 3 within noise). 🟡 3 benchmark(s) within noise
Reproduce this on your machine: |
flatbuffers build-time diff (configure / compile / run tests)Compiler: Repetitions: 1 per configuration. flatbuffers build time with psychicstd, main vs this PR (same runner). 🟢 faster · 🔴 slower · 🟡 within noise. A change is colored only when its bootstrap 95% CI excludes 0 and it clears ±5% / 3ms. No significant changes (🟡 3 within noise). 🟡 3 benchmark(s) within noise
Reproduce this on your machine: |
eigen build-time diff (compile / run tests)Compiler: Repetitions: 2 per configuration. eigen build time with psychicstd, main vs this PR (same runner). 🟢 faster · 🔴 slower · 🟡 within noise. A change is colored only when its bootstrap 95% CI excludes 0 and it clears ±5% / 3ms. No significant changes (🟡 2 within noise). 🟡 2 benchmark(s) within noise
Reproduce this on your machine: |
simdutf build-time diff (compile / run tests)Compiler: Repetitions: 1 per configuration. simdutf build time with psychicstd, main vs this PR (same runner). 🟢 faster · 🔴 slower · 🟡 within noise. A change is colored only when its bootstrap 95% CI excludes 0 and it clears ±5% / 3ms. No significant changes (🟡 2 within noise). 🟡 2 benchmark(s) within noise
Reproduce this on your machine: |
fmt build-time diff (compile / run tests)Compiler: Repetitions: 2 per configuration. fmt build time with psychicstd, main vs this PR (same runner). 🟢 faster · 🔴 slower · 🟡 within noise. A change is colored only when its bootstrap 95% CI excludes 0 and it clears ±5% / 3ms. No significant changes (🟡 2 within noise). 🟡 2 benchmark(s) within noise
Reproduce this on your machine: |
Sanitizer diff (ASan/UBSan)No changes detected. 72 header(s) unchanged
Reproduce this on your machine: |
Compliance diffNo changes detected. 72 header(s) unchanged
Reproduce this on your machine: |
catch2 build-time diff (compile / run tests)Compiler: Repetitions: 3 per configuration. catch2 build time with psychicstd, main vs this PR (same runner). 🟢 faster · 🔴 slower · 🟡 within noise. A change is colored only when its bootstrap 95% CI excludes 0 and it clears ±5% / 3ms. No significant changes (🟡 2 within noise). 🟡 2 benchmark(s) within noise
Reproduce this on your machine: |
cppcheck build-time diff (compile)Compiler: Repetitions: 2 per configuration. cppcheck build time with psychicstd, main vs this PR (same runner). 🟢 faster · 🔴 slower · 🟡 within noise. A change is colored only when its bootstrap 95% CI excludes 0 and it clears ±5% / 3ms. No significant changes (🟡 1 within noise). 🟡 1 benchmark(s) within noise
Reproduce this on your machine: |
Summary
Tests
test_chrono_systemtest_chrono_psychicstdThe full local sanitizer subset also encountered environment-specific LeakSanitizer ptrace aborts in unrelated tests.