相关疑难解决方法(0)

应该避免LINQ,因为它很慢吗?

我有人被告知,因为.net linq是如此之慢,我们不应该使用它,并且想知道其他人是否得出了相同的结论,例如:

花了1443ms做了1000000000比较非LINQ.
花了4944ms与LINQ做了1000000000比较.
(慢243%)

非LINQ代码:

for (int i = 0; i < 10000; i++)
{
    foreach (MyLinqTestClass1 item in lst1) //100000 items in the list
    {
        if (item.Name == "9999")
        {
            isInGroup = true;
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

花了1443ms做了1000000000比较非LINQ.

LINQ代码:

for (int i = 0; i < 10000; i++)  
    isInGroup = lst1.Cast<MyLinqTestClass1>().Any(item => item.Name == "9999");  
Run Code Online (Sandbox Code Playgroud)

花了4944ms与LINQ做了1000000000比较.

我想它可以优化LINQ代码,但想到的是它很容易得到非常慢的LINQ代码,并且考虑到它不应该被使用.鉴于LINQ很慢,那么PLINQ也会很慢,NHibernate LINQ会很慢,所以不应该使用LINQ语句中的任何类型.

有没有人发现LINQ是如此之慢以至于他们希望从未使用它,或者我是否根据这样的基准做出了过于笼统的结论?

.net c# linq performance

57
推荐指数
6
解决办法
2万
查看次数

在.Net中LINQ和Lambda表达的效率和性能是什么?

我使用.Net 3.5和VS 2008一个多月了.像大多数.Net开发人员一样,我已经从.Net 1.0&2.0和VS 2005的多年经验发展而来.就在最近,我发现了LINQ和Lambda表达式的简单性和强大功能,就像我最近的问题一样,例如在列表中查找项目LINQ,使用Lambda或LINQ 类实例转换或映射到另一个实例的列表,并使用Lambda或LINQ 将类列表转换或映射到另一个类列表.

我承认Lambda和LINQ更简单易读,看起来非常强大.在幕后,.Net编译器必须生成大量代码才能实现这些功能.因此,我对转换到新语法有点犹豫,因为我已经知道了实现相同结果的"旧"方法.

我的问题是关于Lambda和LINQ的效率和性能.也许Lambda表达式大多是内联函数,在这种情况下我猜Lambda应该没问题.LINQ怎么样?

让我们将讨论限制为LINQ-to-Objects LINQ-to-SQL(LINQ-to-SQL).任何评论,比较和经验?

.net c# linq lambda .net-3.5

38
推荐指数
3
解决办法
4万
查看次数

LINQ查询有很多开销吗?

IEnumerable<T>轻量级还是重量级的简单LINQ查询?它们如何与手写forforeach循环比较?何时更喜欢LINQ与手动搜索有一般指导原则?

例如:

var lowNums =
    from n in numbers
    where n < 5
    select n;
Run Code Online (Sandbox Code Playgroud)

相比:

List<int> lowNums = new List<int>();

foreach (int n in numbers)
{
    if (n < 5)
    {
        lowNums.Add(n);
    }
}
Run Code Online (Sandbox Code Playgroud)

我和一位同事谈论LINQ,他对使用它表示了一些犹豫.他猜测为了支持LINQ可以做的一切,可能会在"幕后"进行大量工作.

以上示例之间是否存在显着的性能差异?是否有任何好的资源可以谈论集合上的LINQ性能?一个简单的Google搜索linq表现出现了一些看似过时的文章.

.net linq performance

21
推荐指数
4
解决办法
2812
查看次数

标签 统计

.net ×3

linq ×3

c# ×2

performance ×2

.net-3.5 ×1

lambda ×1