gpt4 book ai didi

c# - Array.Empty() : Why does Rider show an allocation occurred, 但 BenchmarkDotNet 没有?

转载 作者:行者123 更新时间:2023-12-05 01:23:38 25 4
gpt4 key购买 nike

第一张图片中使用的内存工具来自 Rider。据我所知,它显示了对托管堆的分配。第二张图片显示了 BenchmarkDotNet 的结果。

为什么 Rider 显示已进行分配,但 BenchmarkDotNet 却显示未对堆进行分配?

如果我改用下面的代码示例,BenchmarkDotNet 会选择分配:

var i = new int[0];

Rider memory tool results

BenchmarkDotNet results

最佳答案

Array.Empty 指向框架已经静态分配的数组(参见 here )。

当您调用 new int[0] 时,实际上会为您分配一个大小为 0 的新数组。

另见 answer .

关于c# - Array.Empty<int>() : Why does Rider show an allocation occurred, 但 BenchmarkDotNet 没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72088530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com