1. 程式人生 > >C# 程式內的類數量對程式啟動的影響

C# 程式內的類數量對程式啟動的影響

原文: C# 程式內的類數量對程式啟動的影響

最近我在專案寫了幾萬行程式碼,小夥伴擔心會讓程式啟動速度變慢,所以本渣就來做測試。

本渣使用了程式碼建立器,建立了 1000 個垃圾檔案,這些檔案都很簡單。我將這些檔案放在一個控制檯專案裡,沒有做任何的引用,然後使用 dotTrace 測試控制檯啟動的時間

我同時還寫了一個空白的控制檯專案,連輸出都沒有,請看程式碼

using System;
using System.Diagnostics;

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

這應該就是最快的控制檯的程式碼了,這時使用 dotTrace 附加除錯這個專案

在這裡插入圖片描述

附加除錯可以看到執行的時間都不是自己寫的程式碼的時間,總時間是 138ms 實際執行的時間會比這個少。每個人的裝置測試的時間都會不相同,而且每個時間執行的值都不太一樣

在這裡插入圖片描述

我接著運行了2次,收集到的空控制檯視窗的執行時間

空控制檯視窗執行時間

第一次:138ms
第二次:110
ms 第三次: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(); }

然後使用下面程式碼建立隨機的類

{% raw %}

        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);
            }
        }

{% endraw %}

這樣就可以建立 1000 個類,建立一個空白的控制檯專案,引用這些類

然後執行一個有1000個類的空白控制檯專案,第一次執行的時間居然是 67ms 十分少

在這裡插入圖片描述

我同樣執行3次,收集到下面資訊

1000個類的空控制檯視窗執行時間

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

所以如果一個類不被引用,即使一個工程裡有很多的類,對軟體的啟動影響幾乎沒有影響

接著還是和之前一樣,不過修改為空控制檯專案引用 dll 這個 dll 裡面有 1000 個類

空白的專案是 KejerbopaNekereyeresereJemayRouxouqou.exe 引用的 dll 是 MeeLearlerepeda.exe 可以看到有 1000 個類還是比較大

在這裡插入圖片描述

同樣測試三次

引用1000個類的dll 空控制檯視窗執行時間

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

從上面資料可以看到,幾乎沒有任何影響

我搭建了自己的部落格 https://lindexi.gitee.io/ 歡迎大家訪問,裡面有很多新的部落格。只有在我看到部落格寫成熟之後才會放在csdn或部落格園,但是一旦釋出了就不再更新

如果在部落格看到有任何不懂的,歡迎交流,我搭建了 dotnet 職業技術學院 歡迎大家加入

知識共享許可協議
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名林德熙(包含連結:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我聯絡