Anyの拡張メソッドを使用したときのパフォーマンスが従来のforループの方法よりも向上していますか?リスト上のAnyなどを使用したときのパフォーマンスの向上
答えて
要するに、パフォーマンスはわずかにより劣る可能性があります。
実際には、このアプローチの簡潔さと明快さは、ループよりも保守上の利点があり、バグが発生しにくくなります。それの
考えるこの方法:あなたは50個のループを書いて、そのうちの一つに短絡評価を忘れてしまった場合、あなたはあなたがインデックス付きのコレクションのために、すべての50
**いくつかの追加の考え方、** **正しく使用されている場合、Parallel LINQはいくつかのパフォーマンス上の利点を提供するかもしれません。私はどこにでも 'AsParallel'を投げつけようとはしていません。しかし、それは考慮する別のオプションです。 – vcsjones
で.Any
を使用したほうが良いことができていたと思います次:それはインデクサーを提供しないよう
for(int i = 0; i < col.Length;i++)
{
if (predicate(col[i]))
return true;
}
return false;
が、非インデックス付きIEnumerable<T>
ため、これは、不可能です。
public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
if (predicate == null)
{
throw Error.ArgumentNull("predicate");
}
foreach (TSource local in source)
{
if (predicate.Invoke(local))
{
return true;
}
}
return false;
}
がIEnumerable<T>
のすべての要素を反復処理として、あっすべき性能利得が存在しない:これは、(反射を介して)フレームワークに実装することであろう。しかし、この方向の「最適化」は早すぎる最適化の対象となります。パフォーマンスに問題がある場合、この関数よりもアルゴリズムで修正される可能性が高くなります。
'.Any()'を使うと、各項目に対して関数ポインタが呼び出されます。これにより、パフォーマンス上のペナルティが発生します。問題は、どのアプローチが高速になるかではありません(インライン 'foreach'は、関数ポインタ呼び出しの不足と、代理人が他にはできないコンパイラの最適化の可能性があるため確実に速くなります)早いforeachがあるでしょう。 – cdhowie
- 1. データフレームとSQLを使用したPysparkのパフォーマンスの向上
- 2. パフォーマンスの向上
- 3. リスト使用時のエリクサーでのパフォーマンスの向上
- 4. C#リストのパフォーマンスを向上させる
- 5. vlookupとreplace - パフォーマンスの向上
- 6. PythonとOpenGLのパフォーマンス向上
- 7. CURLを使用したPHPプロキシグラバーチェッカーのパフォーマンスの向上
- 8. パフォーマンスの向上は
- 9. スパークストリーミングジョブのパフォーマンス向上
- 10. ウェブサービスのパフォーマンス向上
- 11. パフォーマンスの向上は
- 12. 2sumのパフォーマンス向上
- 13. ISNULL:パフォーマンスの向上?
- 14. Windowsアプリケーションのパフォーマンスを向上
- 15. asp.netページのパフォーマンスを向上
- 16. WPF DataGridのパフォーマンスを向上
- 17. Postgresqlクエリのパフォーマンスを向上
- 18. C++でのパフォーマンスの向上
- 19. Symfony2のAppCacheのパフォーマンス向上
- 20. ASP.NETユーザーコントロールのパフォーマンスの向上
- 21. クエリでのパフォーマンスの向上
- 22. hibernateとgwtを使用するとパフォーマンスが向上します
- 23. スライドショーのパフォーマンスが向上
- 24. Pg-promiseパフォーマンスの向上:オンコンフリクト
- 25. SQLite WALのパフォーマンス向上
- 26. ARMアセンブラNEON - パフォーマンスの向上
- 27. パフォーマンスの向上Spark ORC
- 28. MySQLクエリのパフォーマンス向上
- 29. SQL ServerとEntity Frameworkのパフォーマンスの向上
- 30. WHEREとJOINを使用しないSELECTステートメントのパフォーマンスを向上させます。
「古いforループの方法」のサンプルを提供してください。どのようなループでも一般的に使用することができるので、enumerables上のすべての作業はわかりません。おそらく、私は疲れて何かを見逃しているでしょう。 –