zoukankan      html  css  js  c++  java
  • 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方法,讨论了使用此方法的优点以及何时应该使用它。这同样适用于队列和堆栈集合。祝编码快乐!

    作者:依乐祝(祝雷)

    出处:https://www.cnblogs.com/yilezhu

    联系:1015657114@qq.com .NET Core实战项目交流群:637326624 微信:jkingzhu

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
    DotNetCore实战
  • 相关阅读:
    async&await的前世今生
    如何使用cocos2dx-jsbinding 来处理分辨率适配
    cocos2d-x jsbinding 资源下载实现
    cocos2d-x jsbinding 在线更新策略设计
    xml2js
    快速入门cocos2d-x jsbinding
    cocos2d-x 工程目录结构说明
    Javascript 开发IDE
    认识cocos2d-x jsbinding
    MySQL 灵异事件一则 -- desc报语法错误
  • 原文地址:https://www.cnblogs.com/yilezhu/p/15182566.html
Copyright © 2011-2022 走看看