最適化

1 ななしのよっしん
2013/04/22(月) 01:44:50 ID: 2NpTwuj508
int i = 23;
i = i / 5 * 5;

これを最適化しない場合は「 i の値は 20 」
しかし、最適化をすると「 i の値は 23 」になってしまうことがある
っていうのを最近先生に教えてもらった

2 ななしのよっしん
2013/04/22(月) 01:59:10 ID: gKeR9nLAqC
>>1
それ「最適化」の言葉の使い方ちがう・・・
何の言でやったか知らんけど整数の数値の割り算小数点以下は無視されるのでi/5が4になるだけで、結果的に4*5が計算結果になる
3 ななしのよっしん
2013/04/22(月) 07:16:23 ID: ttHuE5Bb0J
>>2 使い方はあってるよね。

コンパイラとかが最適化で、整数演算の順番を入れ替えたり省略したりするとき、演算結果が変わってしまうことがある。
4 ななしのよっしん
2013/05/15(水) 14:23:59 ID: Z4dQR3WQ45
パーフェクトワールドは?
5 HEROMAN
2013/09/07(土) 22:22:00 ID: 3rTHCX/GwS
最適化繋がりでダンボール戦機Wいれてもいいのよ?
6 ななしのよっしん
2013/12/01(日) 00:26:27 ID: WVYtYqJVec
最適化の教訓 wikipediaより
「細かい効率のことは忘れて、時間の97%について考えよう。時期尚最適化諸悪の根源だ。それでも残り3%についても機会を逃すべきではない」 - Donald E. Knuth
プログラム最適化の第一法則: 最適化するな。プログラム最適化の第二法則(上級者限定): まだするな。」 - Michael A. Jackson
「ボトルネックは思いもよらない場所に存在するので、ボトルネックの箇所を特定するまで性最適化(ハック)してはいけない」 - Robert C. Pike

要するに、速く動作する事より正しく動作することがかに重要であり、駄な最適化をしてバグを埋め込んではいけないという事
どうしても最適化したい場合も、それがボトルネックになっている事を計測してから最適化する事。勘で最適化してはいけない
7 ななしのよっしん
2013/12/01(日) 00:35:32 ID: Iln0OIODrg
と、かようなまでにプログラマという人種は、最適化の誘惑に惑わされ続ける存在である
8 ななしのよっしん
2013/12/01(日) 00:42:01 ID: WVYtYqJVec
一方で、テストする対が複雑になればなるほどパフォーマンスの測定を行う事が困難になるという問題がある。
自分も一度WEBアプリの性測定に付き合わさせられたが、結局どこにボトルネックがあるのか分からずじまいで時間の無駄だった。まあこれはうちの会社の技術準が低いのもあるだろうけど
9 ななしのよっしん
2015/04/14(火) 11:10:29 ID: Iln0OIODrg
>>6
直接的なバグにかぎらず、
・のちのちの変更や拡の妨げになる
・労に対してメリットが微小であるケースがほとんど

ということを忘れがちなことに対する
10 ななしのよっしん
2016/09/03(土) 02:36:48 ID: c7cRg2PI4Y
設計が正しければ理なく美しい実装となり、結果的に自然と最適なコードができる・・・というのが理想ではある。
現実にはCPUプログラム言語は「バグって」おり、トロ臭い結果を出すので人間様が何とかしなきゃいけないという。
11 ななしのよっしん
2019/10/25(金) 12:39:35 ID: sC+QVJOMCJ
今流行りの人工知能の「学習」って最適化のことですよね 学習って呼ぶと機械ノート広げて勉強してるみたいで、一般の人とエンジニアとではかなり伝わってるイメージが違うように思われる