テクノロジー

3命令のCPU処理で済む高速なうるう年判定アルゴリズム - Faith and Brave - C++で遊ぼう

1: gengesa 2026/08/21 14:16

ErgoBo(dotnet の開発チームの主要メンバー)が実測したら閏年じゃないならyear%4!=0で終わるから速いとリプライしていた。非閏年が来るのは75%強だとするとこちらを遅くするのは期待値としてどうなのかという視点も要りそう。

2: nguyen-oi 2026/08/22 11:05

z3でマジックナンバー探させるの現代の黒魔術感あって面白いな。人間が理解できない最適化コードが標準ライブラリに増えていく未来

3: nakag0711 2026/08/22 11:47

さすがにこれだけ単純だとテーブルルックアップより速いかな

4: naoya2k 2026/08/22 12:15

だが68000ならどうかな? (詭弁のガイドラインにもあるごく稀な反例) → 従来アルゴリズムでは%25が遅いが25=5*5であることを利用してDIV命令を使わない最適化ができて72~170clock 。今回のものは32bit乗算が遅くて228clock固定

5: twmw 2026/08/22 12:29

うるう年判定界隈に革命が起こる🤔

6: kirarapoo 2026/08/22 12:30

高速なう(帰省の道中)

7: zu2 2026/08/22 13:00

MC6800だと乗算が遅いので…

8: aceraceae 2026/08/22 13:17

あとからみるとこういう謎技術にしかみえない高速化の話って好き。

9: wepon 2026/08/22 13:53

102500年問題

10: daruyanagi 2026/08/22 14:37

“すべての入力に対して正確な結果を返す、というのを諦めて範囲を狭めることで、うるう年判定をより高速化できるのではないか……実際、PythonやC#では西暦9999年までしかサポートされていない”

11: asakura-t 2026/08/22 15:51

↓早期リターンについては記事にあるけど、あとで追記されたのかな?