使用System.Linq时占用了多少空间?

时间:2014-05-05 08:10:01

标签: c# performance linq unity3d

List<T>上的Linq函数非常棒,但是,在我正在处理的这个特定文件中,只有一行使用它。所以我想知道这个库在导入使用时占用了多少空间? (我正在使用First函数。)

如果它占用太多空间,那么创建一个自定义for循环代替迭代是有意义的。但是使用Linq时我的代码更清晰。

对于内存使用,我认为使用Linq并使用for并没有真正发挥那么大的作用,所以如果我想在移动设备上的Unity3D中使用它,我想知道磁盘空间的使用情况。如果任何人都可以提供一种方法来确定任何系统库的磁盘大小,那将非常有用!

4 个答案:

答案 0 :(得分:7)

using指令并未真正将任何内容导入应用程序。它只是使用命名空间的语言构造。如果程序集实际包含在构建中,那么真正重要的是什么。 Look here

  

命名空间:System.Linq

     

程序集:System.Core(在System.Core.dll中)

所以真正重要的是如果包括这个组件。是的,它默认包含在系统中安装的常用程序集中,因此只需使用Linq就不会使文件变大。

编辑:问题似乎是针对单声道和Unity。理论上,如果您不使用外部库(以及一些.net&#39; s),您可以在不使用System.Core.dll的情况下构建.net应用程序。但很可能你必须使用的其他库依赖于它。现在关于单声道,它看起来像单声道System.Core作为特殊组件,没有必要引用它,它显然是自动完成的:

using System;
using System.Linq;

namespace t1
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine (typeof(Enumerable).Assembly.Location);
        }
    }
}

就像dmcs Program.cs一样构建。此外,如果您在Xamarin工作室中创建空解决方案,它也可以工作,只有System.dll在引用中。

答案 1 :(得分:4)

您的计算机上安装了.NET框架。它没有链接到您的.exe二进制文件。它仅被引用,这是非常不同的。

编辑:

在Baldricks问题的后续问题中,在使用Unity的移动设备上,应该特别注意其他依赖关系。他们将捆绑加入&#34;播放器&#34;并添加下载大小。

  

删除不必要的代码依赖项。

http://docs.unity3d.com/Documentation/Manual/iphone-playerSizeOptimization.html

另一方面,LINQ需要System.Core.dll,这对.NET应用程序至关重要。因此,您的赌注很高,已经包含在内,LINQ不会增加现有的下载量。

答案 2 :(得分:1)

using指令只是引用计算机中现有的.Net Framework。它不会总是导致直接链接或拉动构建中的程序集。 参考组件确实会导致尺寸增长。 但是,using指令并不告诉编译器包含引用的程序集。 但是,通过在项目中引用它们,您告诉csc编译器在编译时要在哪里找到要链接的程序集。 因此,除非我通过项目引用它们,否则不会引用程序集,除非它们在代码中实际引用。

答案 3 :(得分:1)

只需尝试使用 unity 的2020.1版本,并且在linq中使用函数后,构建大小就不会更改。

所以没有影响。