C#10在List, Queue 以及Stack中使用EnsureCapacity方法來提升性能


簡介

在今天的文章中,我們將介紹 C# 10 中引入的一項新功能。這是已添加到 List、Queue 和 Stack 集合中的 EnsureCapacity 方法。我們將討論為什么我們應該使用這個方法以及何時使用它。

那么,讓我們開始吧。

作者:依樂祝

譯文鏈接:https://www.cnblogs.com/yilezhu/p/15182566.html

原文鏈接:https://www.c-sharpcorner.com/article/using-the-ensurecapacity-method-in-c-sharp-lists-queues-and-stacks/

為什么以及何時使用EnsureCapacity 方法

這里我們將首先了解為什么需要使用這種方法以及何時使用。在 List、Queue 和 Stack內部使用的是數組來表示集合。每次我們向這些集合添加更多項時,我們都需要增加這個內部數組的大小。因此,會發生調整大小的操作。由於數組大小進行了調整,因此這是一個性能損失。在我們知道此數組的最大大小或假設我們知道將存儲在我們的 List、Queue 或 Stack 集合中的最大元素數量的情況下,我們可以使用EnsureCapacity 方法預設大小。這將確保最初設置此大小,並且不會調整內部數組的大小,因此我們獲得了性能提升。讓我們在測試應用程序中實現它,

創建一個控制台應用程序來測試EnsureCapacity 方法

我們將首先在 Visual Studio 2022 社區版中創建一個 C# 控制台應用程序,如下所示,

在 Cshaarp 列表、隊列和堆棧中使用確保容量方法

在 Cshaarp 列表、隊列和堆棧中使用確保容量方法

在 Cshaarp 列表、隊列和堆棧中使用確保容量方法

在 Cshaarp 列表、隊列和堆棧中使用確保容量方法

在 Cshaarp 列表、隊列和堆棧中使用確保容量方法

用下面的代碼替換 Program.cs 文件,

var list=new List<int>();
list.EnsureCapacity(5);
for(vari=0;i<5;i++){
    list.Add(i);
    Console.WriteLine(list[i]);
}
thisList.Add(5);
Console.WriteLine(list[5]);

當我們運行此代碼時,我們會看到以下輸出。

在 Cshaarp 列表、隊列和堆棧中使用確保容量方法

因此,我們看到即使超出了 EnsureCapacity 方法中定義的容量,我們仍然可以繼續向列表中添加元素。然而,此時,內部數組又重新調整大小,我們失去了性能增益。這表明我們在設置EnsureCapacity 值時必須非常小心。

總結

在本文中,我們研究了在C#10中對List集合使用EnsureCapacity方法,討論了使用此方法的優點以及何時應該使用它。這同樣適用於隊列和堆棧集合。祝編碼快樂!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM