当前位置: 首页 > 编程笔记 >

C#程序中类数量对程序启动的影响详解

隆璞
2023-03-14
本文向大家介绍C#程序中类数量对程序启动的影响详解,包括了C#程序中类数量对程序启动的影响详解的使用技巧和注意事项,需要的朋友参考一下

前言

最近我在项目写了几万行代码,小伙伴担心会让程序启动速度变慢,所以本渣就来做测试。 本渣使用了代码创建器,创建了 1000 个垃圾文件,这些文件都很简单。我将这些文件放在一个控制台项目里,没有做任何的引用,然后使用 dotTrace 测试控制台启动的时间。

我同时还写了一个空白的控制台项目,连输出都没有,请看代码

using System;
using System.Diagnostics;

namespace KejerbopaNekereyeresereJemayRouxouqou
{
 class Program
 {
 static void Main(string[] args)
 {
  
 }
 }
}

这应该就是最快的控制台的代码了,这时使用 dotTrace 附加调试这个项目

附加调试可以看到运行的时间都不是自己写的代码的时间,总时间是 138ms 实际运行的时间会比这个少。每个人的设备测试的时间都会不相同,而且每个时间运行的值都不太一样

我接着运行了2次,收集到的空控制台窗口的运行时间

空控制台窗口运行时间

第一次:138ms
第二次:110ms
第三次:116ms

写一个空白的类是很简单的,我使用了下面的代码创建随机的类的名

 class WhairchooHerdo
 {
  public string LemgeDowbovou()
  {
   var zarwallsayKeesar = (char) _ran.Next('A', 'Z' + 1);
   var lardurDairlel = new StringBuilder();
   lardurDairlel.Append(zarwallsayKeesar);
   for (int i = 0; i < 5; i++)
   {
    lardurDairlel.Append((char)_ran.Next('a', 'z'));
   }

   return lardurDairlel.ToString();
  }

  private Random _ran = new Random();
 }

然后使用下面代码创建随机的类

  private static void RelawcereMirouxayTibe()
  {
   var terebawbemTitirear = new WhairchooHerdo();

   for (int i = 0; i < 1000; i++)
   {
    var pereviCirsir = terebawbemTitirear.LemgeDowbovou();

    var nemhaSibemnoosa = $@"
using System;
using System.Collections.Generic;
using System.Text;

namespace LecuryouWuruhempa
{{
 class {pereviCirsir}
 {{
  public string Foo {{ get; set; }}
 }}
}}";

    var jisqeCorenerairTurpalhee = new DirectoryInfo("林德熙临时文件");

    jisqeCorenerairTurpalhee.Create();

    File.WriteAllText(Path.Combine(jisqeCorenerairTurpalhee.FullName, pereviCirsir + ".cs"), nemhaSibemnoosa);
   }
  }

这样就可以创建 1000 个类,创建一个空白的控制台项目,引用这些类

然后运行一个有1000个类的空白控制台项目,第一次运行的时间居然是 67ms 十分少

我同样运行3次,收集到下面信息

1000个类的空控制台窗口运行时间

第一次:67ms
第二次:102ms
第三次:117ms

所以如果一个类不被引用,即使一个工程里有很多的类,对软件的启动影响几乎没有影响

接着还是和之前一样,不过修改为空控制台项目引用 dll 这个 dll 里面有 1000 个类

空白的项目是 KejerbopaNekereyeresereJemayRouxouqou.exe 引用的 dll 是 MeeLearlerepeda.exe 可以看到有 1000 个类还是比较大

同样测试三次

引用1000个类的dll 空控制台窗口运行时间

第一次:113ms
第二次:103ms
第三次:117ms

从上面数据可以看到,几乎没有任何影响

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。

 类似资料:
  • 我正在通过阅读高性能Spark来学习如何配置Spark应用程序,其中提到的一句话让我感到困惑: 根据我的经验,设置Spark驱动程序内存的良好启发式方法只是不会导致驱动程序内存错误的最低可能值,即为执行程序提供最大可能的资源。 我的理解是驱动程序存在于它自己的节点中,而执行程序独立存在于工作节点上。我本以为我可以最大限度地利用驱动程序内存,而不必担心它会影响执行程序。 这本书的建议是真的吗?如果是

  • 本文向大家介绍C#中Try-Catch语句真的影响程序性能吗?,包括了C#中Try-Catch语句真的影响程序性能吗?的使用技巧和注意事项,需要的朋友参考一下 很多帖子都分析过Try-Catch的机制,以及其对性能的影响。 但是并没有证据证明,Try-Catch过于损耗了系统的性能,尤其是在托管环境下。记得园子里有位网友使用StopWatch分析过Try-Catch在不同情况下,与无Try-Cat

  • 我的目标操作系统将是Windows7。 如有任何帮助,不胜感激,谢谢。

  • 本文向大家介绍C# WindowsForm程序同时启动多个窗口类,包括了C# WindowsForm程序同时启动多个窗口类的使用技巧和注意事项,需要的朋友参考一下 C# WindowsForm程序同时启动多个窗口类,具体内容如下 最后在Program的类中调用这个类即可 运行后的截图如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我有一个golang程序,可通过https将大量数据上传到OpenStack对象存储。它依靠golang标准库来完成工作。我想使用速率来限制数据的上传,但是使用细流运行代码似乎没有任何效果(好像我根本没有使用细流)。 为什么会这样?trick流或golang是否有一些限制,阻止它们一起工作?有没有我没想到的陷阱? 这是我的设置: 我知道这仅适用于动态链接的可执行文件(请参阅细流文档的第

  • 本文向大家介绍C / C ++程序中的mbrtowc()函数,包括了C / C ++程序中的mbrtowc()函数的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论C ++ STL中std::mbrtowc()函数的工作,语法和示例。 什么是std::mbrtowc()? std::mbrtowc()函数是C ++ STL中的内置函数,在<cwchar>头文件中定义。mbrtowc()