You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实时应用密集评估循环:容器实例化vs直接传参的性能对比

C#实时循环场景下两种实现方案的性能对比

方案A:循环外直接初始化参数并传入

Parameters parameters = new Parameters(); // 外部构造函数
while (true)
{
    Evaluate(parameters);
}

方案B:通过容器类缓存参数

容器类定义:

public class Container
{
    private Parameters parameters;
    
    public Container()
    {
        parameters = new Parameters(); // 外部构造函数
    }

    public void Evaluate()
    {
        Evaluate(parameters);
    }
}

调用代码:

Container container = new();
while (true)
{
    container.Evaluate();
}

内存占用分析

两种方案仅会创建1个Parameters实例,方案B多了一个Container实例,但Container只包含一个引用字段,额外内存开销可以忽略(64位系统下仅8字节)。整体内存占用几乎完全一致。

垃圾回收(GC)表现

两种方案都不会在循环过程中分配新的短生命周期对象,初始化阶段的对象分配仅发生一次。循环运行时无新对象产生,不会触发GC,对GC压力为零。

执行效率对比

两者的执行逻辑本质相同:

  • 方案A直接传递局部变量引用给Evaluate;
  • 方案B通过容器实例的字段访问获取Parameters再传递。

JIT编译器会对这种简单的字段访问进行内联优化,最终生成的机器码几乎完全一致,不存在可感知的性能差异。

结论

两种方案在效率、内存占用和GC表现上无实质性差异,选择哪种取决于架构需求:

  • 若需封装参数与评估逻辑,方案B更符合面向对象设计;
  • 若仅需简单复用参数,方案A更简洁直观。

内容的提问来源于stack exchange,提问作者Opaweynch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:23:24