C#中List泛型与ArrayList非泛型的性能差异分析

小岛来信
小岛来信
发布时间:2026-10-15| 5人浏览过
原创

在C#开发中,集合类的选择直接影响应用性能。本文通过具体代码示例,对比 List<T> 与 ArrayList 在处理值类型数据时的效率差异,揭示泛型如何避免装箱拆箱带来的开销。

测试环境与核心原理

C#中的 ArrayList 是非泛型集合,其存储类型为 object。当存入值类型(如 int)时,必须进行“装箱”(Boxing)转换为对象;读取时需“拆箱”(Unboxing)还原。这一过程涉及内存分配与类型转换,会带来额外的CPU开销。而 List<T> 是泛型集合,直接在内存中存储原始值类型,无需类型转换,因此在高频操作下效率更高。

代码实现与步骤

第1步:构建基准测试代码

为了准确评估性能,我们需要编写控制变量一致的测试方法。以下代码定义了一个包含百万级循环的测试场景,分别对泛型和非泛型集合进行操作:

using System;
using System.Collections.Generic;
using System.Collections;

namespace ConsoleApplication
{
    class Program
    {
        // 定义总元素数量
        static int length = 1000 * 1000;

        static void Main(string[] args)
        {
            // 设置迭代次数以平滑单次波动
            int iteration = 10;

            // 测试值类型-泛型方法 (Test1)
            CodeTimer.Time("值类型处理-泛型方法", iteration, Test1);

            // 测试值类型-非泛型方法 (Test2)
            CodeTimer.Time("值类型处理-非泛型方法", iteration, Test2);

            Console.ReadKey();
        }

        /// <summary>
        /// 值类型泛型方法
        /// </summary>
        static void Test1()
        {
            List<int> l = new List<int>();
            for (int i = 0; i < length; i++)
            {
                l.Add(i);       // 直接添加,无装箱
                int a = l[i];   // 直接获取,无拆箱
            }
            l = null;
        }

        /// <summary>
        /// 值类型非泛型方法
        /// </summary>
        static void Test2()
        {
            ArrayList a = new ArrayList();
            for (int i = 0; i < length; i++)
            {
                a.Add(i);       // 隐式装箱为object
                int s = (int)a[i]; // 显式拆箱为int
            }
            a = null;
        }
    }
}

第2步:运行测试并观察结果

执行上述代码后,系统会统计每个方法的平均耗时。在实际测试环境中,Test1(泛型)的执行时间通常远少于 Test2(非泛型)。

结果分析

从测试结果可以清晰地看到,在处理相同数量的整数数据时:
1. 泛型 List<int> 直接操作内存中的整数值,速度更快,内存占用更紧凑。
2. 非泛型 ArrayList 因为频繁的装箱和拆箱操作,消耗了更多的CPU周期和时间。

总结

在现代C#开发中,除非必须兼容遗留的非泛型API,否则应始终优先使用 List<T> 等泛型集合。它们不仅提供了编译时的类型安全检查,避免了强制转换错误,还在运行时提供了显著的性能优势,特别是在处理大量值类型数据时。

以上就是C#泛型与非泛型性能比较的详细内容,更多关于C#集合类优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。