アプリ版:「スタンプのみでお礼する」機能のリリースについて

IF文などの判定の時、真の方が処理が速い!とかあるのでしょうか。
また、プログラマーになるために参考になるサイトなどありましたら、教えてもらえないでしょうか。 ご教授の方、よろしくお願いします。

A 回答 (2件)

はい、if文の真と偽とでは処理の総時間が変わることが多々あります。



そんなことを気にしても、減らせる時間はまさしく微々たるものでしかない(うえ、下手すると論理的に分かりにくいソースコードになる)ので、回答者#1さんのおっしゃるように気にしないのが日常生活ではベストですが、勉強のためという意味で、ちょっと付け加えさせていただきます。
ジャンプ命令が来たとき、CPUは分岐予測を行います。この予測が当たれば早く操作を終わらせることが出来ますし、外れれば予測していない方をやり直すことになり、多少の時間ロスがあります。(詳細はCPU関係の話です。パイプラインとかそのあたり)
処理系によっては、どちらを予測した方がよいかというヒントをコンパイラに与えることが出来るものがあります。OSのソースコードでは、こういうものを見ることがあります。

ただ、普通のプログラムでは論理が見やすいようにすることの価値の方がif文なんぞのチューニングよりも圧倒的に高いです。というかif文のスピードの違いなんてアルゴリズムのチューニング効果やバグ減少効果と比較すればゼロと考えるべきです。


せっかくなら、プログラマという小さな目標ではなく、Hackerになろうとしてください。
http://cruel.org/freeware/hacker.html
    • good
    • 0

> IF文などの判定の時、真の方が処理が速い!とかあるのでしょうか。



処理系次第でしょうが「気にすることはない」と思います。
かなりシビアな環境でチューニングしてる場合を除けば、
「変わらないと思ってても十分」だと思います。

もし懸念がアセンブリレベルでの分岐ロスということであれば、
昨今の賢いコンパイラは最適化で勝手に条件を変えてるかもしれませんし、
それに任せる以上、C言語レベルで気にするのは不毛です。
(最適化を無効にするのは本末転倒ですし、
処理系を特定してチューニングするのもあまり賢いとは思えません)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!