C#10在List, Queue 以及Stack中使用EnsureCapacity方法來(lái)提升性能
簡(jiǎn)介
在今天的文章中,我們將介紹 C# 10 中引入的一項(xiàng)新功能。這是已添加到 List、Queue 和 Stack 集合中的 EnsureCapacity 方法。我們將討論為什么我們應(yīng)該使用這個(gè)方法以及何時(shí)使用它。
那么,讓我們開(kāi)始吧。
作者:依樂(lè)祝
譯文鏈接: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/
為什么以及何時(shí)使用EnsureCapacity 方法
這里我們將首先了解為什么需要使用這種方法以及何時(shí)使用。在 List、Queue 和 Stack內(nèi)部使用的是數(shù)組來(lái)表示集合。每次我們向這些集合添加更多項(xiàng)時(shí),我們都需要增加這個(gè)內(nèi)部數(shù)組的大小。因此,會(huì)發(fā)生調(diào)整大小的操作。由于數(shù)組大小進(jìn)行了調(diào)整,因此這是一個(gè)性能損失。在我們知道此數(shù)組的最大大小或假設(shè)我們知道將存儲(chǔ)在我們的 List、Queue 或 Stack 集合中的最大元素?cái)?shù)量的情況下,我們可以使用EnsureCapacity 方法預(yù)設(shè)大小。這將確保最初設(shè)置此大小,并且不會(huì)調(diào)整內(nèi)部數(shù)組的大小,因此我們獲得了性能提升。讓我們?cè)跍y(cè)試應(yīng)用程序中實(shí)現(xiàn)它,
創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序來(lái)測(cè)試EnsureCapacity 方法
我們將首先在 Visual Studio 2022 社區(qū)版中創(chuàng)建一個(gè) C# 控制臺(tái)應(yīng)用程序,如下所示,





用下面的代碼替換 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]);
當(dāng)我們運(yùn)行此代碼時(shí),我們會(huì)看到以下輸出。

因此,我們看到即使超出了 EnsureCapacity 方法中定義的容量,我們?nèi)匀豢梢岳^續(xù)向列表中添加元素。然而,此時(shí),內(nèi)部數(shù)組又重新調(diào)整大小,我們失去了性能增益。這表明我們?cè)谠O(shè)置EnsureCapacity 值時(shí)必須非常小心。
總結(jié)
在本文中,我們研究了在C#10中對(duì)List集合使用EnsureCapacity方法,討論了使用此方法的優(yōu)點(diǎn)以及何時(shí)應(yīng)該使用它。這同樣適用于隊(duì)列和堆棧集合。祝編碼快樂(lè)!
