C#って死滅する理由がないよね! Part4
■ このスレッドは過去ログ倉庫に格納されています
0236デフォルトの名無しさん
NGNGそうゆう意味で言うと、C# にはインデクサがあるので、
(C++ の operator[] みたいなの)
foreach を for にすれば速くなるわけじゃないよ。
(あくまでも C# 内での比較ね)
実装が配列のものに対して foreach アクセスするオーバーヘッドは小さいし、
場合によっては最適化もかなりできるはず。
実装がリストの物に対して for アクセスするオーバーヘッドは大きすぎる。
だから C# 内では、for のが速いから foreach 不要とはならないし、
実装を気にしないでいいっていうメリットは大きいと思うよ。
ただ暗黙のキャストが入るのがちょっとイヤだけど、これは今の所
仕方ないのかな。
どっちが速いかは結局使うライブラリの実装や最適化の影響が大きいし。
結構最近は最適化もすごいから本当の配列に対する foreach は、
機械語レベルではポインタアクセスの場合と同じコードになってるかもよ。
(境界チェックとか外せばだけど。小さめの組み込みなら外すでしょ)
いやしかし、ホントに組み込みとかドライバ開発で C# 使える日が来て欲しい
もんだよ・・・
■ このスレッドは過去ログ倉庫に格納されています