gpt4 book ai didi

c# - IL 的 'short' 符号的目的是什么?

转载 作者:太空狗 更新时间:2023-10-29 22:11:57 25 4
gpt4 key购买 nike

每次我在 IL 中遇到它们:br_S、ldc_i4_S、ldarg_S 等等......所以我只需要问这个问题:

我的意思是...如果您正在使用从 IL 到本地汇编程序的 JIT 语言,那么它在性能方面应该并不重要,对吧?那么使用这些“速记”符号的目的是什么?仅仅是因为 IL 二进制文件中的字节数较少(例如作为一种压缩机制)还是有其他原因?

如果它只是作为一种压缩机制,为什么不使用像 deflate 这样的压缩算法呢?

最佳答案

当然,这是一个微优化。但是微观优化的黄金法则在这里非常适用,当你可以一遍又一遍地应用优化时,它们就会变成宏观。这里确实是这种情况,方法体很小,所以绝大多数分支都是短的,方法的参数和局部变量数量有限,所以一个字节就足以解决它们,常量 0 到 9 经常出现在一个真正的程序。

将它们全部加起来,您就可以对大型程序集进行宏观优化,减少许多千字节。哪些在运行时很重要,那就是不必页面错误进入 RAM 的 IL。一个 jitted 程序中的热启动时间总是一个问题,并且已经从各个可能的角度受到攻击。

一般来说,.NET Framework 是不懈地微优化的。很大程度上是因为 Microsoft 无法假设他们的代码不会位于程序的关键路径上。

关于c# - IL 的 'short' 符号的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30550492/

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