プログラミングのお題スレ Part22 (854レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
570
(2): デフォルトの名無しさん [] 2025/02/11(火) 20:45:09.89 ID:hMHygfcC(1) AAS
>>561
561(15): デフォルトの名無しさん [] 2025/02/11(火) 10:54:21.93 ID:E5oVpL7o(1/5) AAS
お題
数列が入力されます
ニ番目に小さい数を出力してください

入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7
出力:2
R
外部リンク:ideone.com

C++
外部リンク:ideone.com

それぞれ3通りの方法で、大きなデータでの実行時間を比較
593
(2): デフォルトの名無しさん [] 2025/02/12(水) 22:44:39.40 ID:Qtl/TEf6(2/2) AAS
>>561 571
>>570のC++のf3をint型の最大値を含むデータにも対応させた。

C#にはint?型があるのですっきり書けるが、
外部リンク:ideone.com

C++ではまあまあすっきり書くにはintへのポインタを返すしかないか。
外部リンク:ideone.com
(該当値が複数の位置に存在する場合にそれらのうちのどれへのポインタを返すかについては
こだわらないものとする)
625
(2): デフォルトの名無しさん [] 2025/02/15(土) 22:24:28.09 ID:rssRTGdz(5/9) AAS
>>624
624(1): デフォルトの名無しさん [sage] 2025/02/15(土) 22:09:09.66 ID:qa0m30Tb(2/4) AAS
>>623
それはm1とm2を間接にポインタで持つために遅くなっているf593()
m1とm2を直接に整数で持つため速いf3()はIntMaxに対応できていない
>>621
621(3): デフォルトの名無しさん [] 2025/02/15(土) 21:06:37.89 ID:rssRTGdz(3/9) AAS
>>561
C++
外部リンク:ideone.com
C#のヌル許容型と同じ挙動のnullable型を自作し、>>593のC#のmin2関数をジェネリック化、
ポインタ参照化して移植した。

外部リンク:ideone.com
593のC++のmin2関数と実行速度を比較する¹と30%ほど遅い。文字列型や可変長数値型と
違って最大値が存在する固定長数値型では、それを利用するf593の方が良い。

──
¹ Microsoft C++では100回繰り返しテストが最適化され1回しか実行されない
の速度比較テストに>>570のf3も追加
外部リンク:ideone.com

ポインタで持つf593との比で、整数で持つf570は6%速いだけ。一方、null許容型のf621は29%も遅い。
最大値が存在する型ではそれを利用する方が良いという結論に変わりはない。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.040s