C#, C♯, C#相談室 Part42at TECHC#, C♯, C#相談室 Part42 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト309:デフォルトの名無しさん 07/09/04 02:52:52 >>307 2.0だとforeachのほうが若干早くなってますね。 foreach (int v in ar) csum += v; for (int i=0; i < 10000; i++) csum += ar[i]; これを下のように書くとforeachと同じスピードになるからそういう最適化をしてるのでしょう。 fixed (int *sp = &ar[0]) { int *ep = sp + 10000; for (int *p = sp; p < ep; p++) csum += *p + j; } ただ、foreachの制御変数が読み取り専用なのは、フェイルセーフのためなのか、 最適化のためなのかは判断がつきません。 310:デフォルトの名無しさん 07/09/04 07:54:38 アンセーーーーーフ!! なるほど、「処理を直接記述されると最適化できないが 抽象度を高くすると最適化しやすい」というやつか forよりforeachの方が早い LINQも早くなるという しかしループ変数への代入を許すとこの最適化が出来なくなるわけか 311:デフォルトの名無しさん 07/09/04 09:28:17 アンマネージドのコードと同期をとりたく、 EventWaitHandle.Handle プロパティで ネイティブのハンドルを取得しようと思ったのですが、 「古い形式です」と起こられてしまいます(警告)。 新しい形式ではどのように書くのでしょうか? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch