gpt4 book ai didi

c# - `stackalloc`关键字的实际使用

转载 作者:IT王子 更新时间:2023-10-29 03:34:20 24 4
gpt4 key购买 nike

有没有人在用 C# 编程时实际使用过 stackalloc?我知道它的作用,但它唯一一次出现在我的代码中是偶然的,因为 Intellisense 在我开始输入 static 时提示它,例如。

虽然它与stackalloc的使用场景无关,但实际上我在我的应用程序中做了相当多的遗留互操作,所以我偶尔会诉诸于使用unsafe代码。但尽管如此,我通常会找到完全避免 unsafe 的方法。

而且由于 .Net 中单个线程的堆栈大小为 ~1Mb(如果我错了请纠正我),我对使用 stackalloc 更加谨慎。

是否有一些实际案例可以说:“这正是我不安全并使用 stackalloc 的正确数据和处理量”?

最佳答案

使用 stackalloc 的唯一原因是性能(无论是计算还是互操作)。通过使用 stackalloc 而不是堆分配数组,您可以减少 GC 压力(GC 需要运行的更少),您不需要固定数组,分配速度比堆数组更快,它在方法退出时自动释放(堆分配的数组仅在 GC 运行时释放)。此外,通过使用 stackalloc 而不是 native 分配器(如 malloc 或 .Net 等价物),您还可以获得速度和作用域退出时的自动释放。

在性能方面,如果您使用 stackalloc,由于数据的局部性,您会大大增加 CPU 缓存命中的可能性。

关于c# - `stackalloc`关键字的实际使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/785226/

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