2021-06-02

学校で教えてほしい極簡単チューニングとはなにか?教えてほしくないこととは何かを説明

do{
}while(flag)

while(true){
 
if(!flag) break;

}

なにがちがうのか?

ものすごい単純に言うと 前者はIFがflagしかないが

後者true判定とflag判定と2つあるため

厳密に言うと 後者のほうが2倍遅い

 

ただ、こういうのは機械最適化してくれるから

人間はどちらかというと、機械最適化やすいように

人間にとって読みにくくとも機械にとってわかりやすいように

書くのも仕事だし

それじゃぁメンテナンスが大変なのである程度遅くとも人が読みやすく書くのも仕事

腕の違いが出るところ

 

教えてほしくないことは、こうすれば良い ↑含む という模範解答は現実にはないため

全体の中での調整となるため、

教科書どおりなど無いため

こうすればいいみたいなことは教えないでほしい

 

というか生徒に変な癖つけて、企業に送り込まないでほしい

だめだといった後者の書き方のほうが良いときもある

  • そんなことより前判定と後判定だから最低試行回数が違う

    • それな 難しいところがそこでwhile(true)は 絶対に成功するので そもそも判定せずに GOTO命令に内部で置き換えるために 判定しないんだなぁこれがという

      • それは単にオプティマイザによるじゃん ソースレベルの議論になってない

        • あくまでもC++で考えているが while(true) をgotoに最適化できないコンパイラって、まともに使われているやつであるの? インタプリタならわかるけどコンパイラだよねぇ?   というか、一...

          • 抽象化されたソースからオーダを議論するのにオプティマイズのレベルを混ぜるのって頭悪そう

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん