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 ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我聯絡。