- 227 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:16:11.26 ID:y9Wx8uZn.net]
- >>177
> do while のが軽い場合がある > って常識だと思ったが それはお前が何も知らない初心者だから。 do while は初回のチェックが入らない分速い。(逆に言えば、その分だけしか速くない) 君は「なんだか知らないが do-while は速いんだ!」位の理解しかしてないだろ。 そんな馬鹿はC界隈にはいない。 問題は、この「初回チェックしない分速い」のをいちいち取り上げる必要があるか、という点で、 殆どの場合はどうでもいいから do-while は使われない。 ただし、どうしてもケチりたい場合は使われる。 (ルール等で駄目なら手動で初回部分だけインライン展開しても同じだが、それよりは do-while 使った方がいい) 禁止する必要はないけど、使う局面もない、といったところだと思うよ。 初回のチェックが必要ない=その前か上位で初回チェックが必要ないことを保証している、であって、 全くチェックしていないわけではないんだよ。 結果、処理を整理して集約していくと、while文に吸収されることもある。 或いはそうならないとして、ど頭でチェックだけして不要ならショートカットしたい等の場合、 別にチェック+ do-while になるが、それはメトリックスを増やしてしまう。(静的コールグラフ) どのパスを通るかがデータ依存になり、それがかなり大きな区画になってしまうだろ。 それよりはショートカット出来ないけどどんなデータでも同じパス、 whileで弾かれて空振りするだけ、のほうがメンテナンスが遙かに楽なんだよ。 ここら辺はさんざんメンテナンスしてれば分かるようになるし、してないうちには分からない。 お前は相当それ以前だが。 「僕はdo-whileの方が速いケースもあるのを知ってるんだ!」ってのは痛いだけだから止めとけ。 自分でアホだと言っているようなものだ。 そんなことはみんな知ってて、その上で議論している。 コード分岐を増やすのが、1回のチェックを端折るのと釣り合うか?なんだよ。
|

|