zoukankan      html  css  js  c++  java
  • 装箱和拆箱所引发的性能问题

    C#中的装箱,拆箱操作过程随处可见,装箱:将一个值类型转换成一个oject类型;拆箱:将一个object类型转换成值类型。装箱也就是创建了一个object实例,并将这个值复制给这个object,装箱后object对象中的数据存放在托管堆中,托管堆的地址放在堆栈中,是作为一个复制文件赋值给对象的。

    装箱和拆箱需要进行大量计算,对值类型装箱需要分配一个全新的对象,次之,取消装箱也需要进行大量的计算,减少装箱和拆箱操作对应用程序的性能有很好的途径。所以在.NET Framework 2.0时候微软推出泛型,他有效的解决了这个性能的问题。

    代码
    1 class Program
    2 {
    3 static void Main(string[] args)
    4 {
    5 RunBox();
    6 RunNoBox();
    7 }
    8 /// <summary>
    9 /// 装箱
    10 /// </summary>
    11   public static void RunBox()
    12 {
    13 DateTime startTime = DateTime.Now;
    14 ArrayList list = new ArrayList();
    15 for (int i = 0; i < 5; i++)
    16 {
    17 list.Clear();
    18 for (int j = 0; j < 5000000; j++)
    19 {
    20 list.Add(j);
    21 }
    22 int k;
    23 for (int j = 0; j < list.Count; j++)
    24 {
    25 k = (int)list[i];
    26 }
    27 }
    28 DateTime endTime = DateTime.Now;
    29 Console.WriteLine("开始时间,结束时间,耗费时间"+ startTime.ToString()+","+endTime.ToString()+",'"+(endTime - startTime).ToString());
    30 }
    31 /// <summary>
    32 /// 拆箱
    33 /// </summary>
    34   public static void RunNoBox()
    35 {
    36 DateTime startTime = DateTime.Now;
    37 List<int> list = new List<int>();
    38 for (int i = 0; i < 5; i++)
    39 {
    40 list.Clear();
    41 for (int j = 0; j < 5000000; j++)
    42 {
    43 list.Add(j);
    44
    45 }
    46 int k;
    47 for (int j = 0; j < list.Count; j++)
    48 {
    49 k = list[j];
    50
    51 }
    52
    53 }
    54 DateTime endTime = DateTime.Now;
    55 Console.WriteLine("开始时间,结束时间,耗费时间" + startTime.ToString() + "," + endTime.ToString() + ",'" + (endTime - startTime).ToString());
    56 }
    57 }
    58 }
    怀揣着一点点梦想的年轻人
    相信技术和创新的力量
    喜欢快速反应的工作节奏
  • 相关阅读:
    Acrobat dose not allow connection to:
    如何备份sqlite数据库
    Linux下Perl的安装
    Sqlserver取分组后的第一条数据
    JS根据占比计算名次范围
    eltable单元格换行显示,超出部分省略号
    二 前端框架引入、结构分配和路由定义
    扩展运算符(...)
    eltable动态合并行列
    解决table中换行符<br>被字符化得问题
  • 原文地址:https://www.cnblogs.com/hfliyi/p/1944682.html
Copyright © 2011-2022 走看看