《.net 框架程序设计》里的几句代码,我重新整理了一下,写成函数,这样下面的反编译代码看起来更方便点:
dahuzizyd的专栏 http://blog.csdn.net/dahuzizyd/public void Boxing()
{
Int32 v = 5;
Console.WriteLine("{0},{1},{2}",v,v,v);
}
public void Boxing1()
{
Int32 v = 5;
object o = v;
Console.WriteLine("{0},{1},{2}",o,o,o);
} 两个函数的输出结果是一样的,但是哪一个函数更好呢?
第一个显然更简单,但是在性能上第二个好,看看反编译的代码:
Boxing函数:
.method public hidebysig instance void Boxing() cil managed
{
// Code Size: 31 byte(s)
.maxstack 4
.locals (
int32 V_0)
L_0000: ldc.i4.5
L_0001: stloc.0
L_0002: ldstr "{0},{1},{2}"
L_0007: ldloc.0
L_0008: box int32
L_000d: ldloc.0
L_000e: box int32
L_0013: ldloc.0
L_0014: box int32
L_0019: call void [mscorlib]System.Console::WriteLine(string, object, object, object)
L_001e: ret
}
Boxing1函数的:
.method public hidebysig instance void Boxing1() cil managed
{
// Code Size: 23 byte(s)
.maxstack 4
.locals (
int32 V_0,
object V_1)
L_0000: ldc.i4.5
L_0001: stloc.0
L_0002: ldloc.0
L_0003: box int32
L_0008: stloc.1
L_0009: ldstr "{0},{1},{2}"
L_000e: ldloc.1
L_000f: ldloc.1
L_0010: ldloc.1
L_0011: call void [mscorlib]System.Console::WriteLine(string, object, object, object)
L_0016: ret
}
第一个函数有三次装箱操作,第二个只有一次,在内存和时间消耗上都要小些。
这么简单的代码,在性能上都有这么大的差异,以前写的程序里还不知道有多少有问题的代码
版权声明:CSDN是本Blog托管服务提供商。如本文牵涉版权问题,CSDN不承担相关责任,请版权拥有者直接与文章作者联系解决。
分享到:
相关推荐
基于GNN的代码性能预测器 此存储库需要Python 3.5+和解unzip包。 下载所需数据 我们使用GNN尝试学习预测使用LLVM编译器进行两组优化的应用程序的性能差异。 下面描述了所使用的数据集。 为此,我们使用以下方案中...
lombok.jar是一款可以帮助用户在设计Java 程序的时候需要运用的一款简单代码工具,当您在开发程序的时候,利用lombok.jar可以让您消除POJO的臃肿效果,为您的代码进行瘦身优化操作,编辑代码的时候,由于技术和思维...
虽然jQuery使用简单,但它毕竟是一门新的技术,与传统的JavaScript在性能与语法上存在诸多差异,需要相应的书籍来引导开发者们迅速而有效地掌握它,并能真正付诸实践。综观现在已经出版的中文类jQuery图书,不是...
目前的自然语言处理模型仍然难以理解程序的正确性、性能和安全性等方面的要求,因此生成的代码可能会出现各种错误和漏洞。此外,生成的代码还需要进行调试、测试、优化和维护等工作,这些工作仍然需要程序员的参与。...
时间 一个轻量级的模块(2KB gzip),可在Node&浏览器上运行,以毫秒为单位来衡量和可视化代码性能。 没有依赖! mstime使用 (高分辨率计时器)来测量起点和终点之间的差异。 mstime有一个简单的插件系统,可让您...
这个项目适合所有对几种编程语言的性能差异感兴趣的人。 它还可以用于比较多种语言的语法。 作为奖励,还包括一些函数式逻辑编程语言。 目前基准支持: C C++ 目标-C C# D 帕斯卡 Java Scala 路亚 JavaScript 动作...
程序开发过程中用于测试性能和参数的代码文件有: * `\bin\tune.py` 用于测试CS:GO(《反恐精英:全球攻势》)鼠标加速与鼠标灵敏度设置对程序参数的影响 使用的第三方模型平台有: -------- 该资源内项目源码是...
FREEZE是一个java实体层高性能分布式存储框架,分布式存储可通过简单的配置完成,开发人员可不关心数据存储位置及数据库类型差异;支持OR自动映射;支持字段过滤查询及模糊查询;支持自定义sql语句;配置简单、代码...
<br>7、 Sql模板和ORMap直接生成.cs原代码,编译为可执行代码,各种ORMap映射文件无需再随主程序集一起部署,提高了代码的安全性,提高了代码的可调试性,也提高了ORMap的性能。 <br> <br>下面三张表格...
本地差异特权各种本地差分隐私(LDP)技术的实现主要集中于... :warning_selector: 虽然大多数代码都已完成,但许多代码仍未记录 :warning_selector:去做 其他:文档!!! 将Apple实施与仿真框架分离到差异仓库中 Goog
为了进行公平的比较并评估算法之间的性能差异,您应指出在算法的训练和/或设计过程中使用的训练集,对于私有数据集,则应说明这些数据集。 Docker容器 为了确保最大的兼容性和可分发性,我们希望对Docker使用容器...
与传统的MMD方法相比,JPDA具有更简单的形式,并且在测量不同域之间的差异方面更有效。 在六个图像分类数据集上的实验证明了JPDA的有效性。 表1中显示了Multi-PIE数据集的平均精度。在大多数任务中,JPDA优于所有...
学习数据结构了解数据结构和算法,以及它们对代码性能的影响为什么呢?数据结构和算法在任何一种编程语言中都扮演着重要角色。更好地了解了两者之后,您可以选择最适合您的需求并极大地加快应用程序的速度。更好的...
与原始实现有几个(有意的)差异: 为简单起见,延迟线缓冲区是动态分配的。这可能会对性能产生影响,一旦通用常量可用,我想将缓冲区设为静态。 内部使用 64 位处理,而原始处理是 32 位。我可能会在某个时候使...
鉴于基准测试中的微小变化会对性能产生很大影响,因此通用框架会隔离代码的测量部分。这简化了重新运行实验和移植到新系统的过程。AdaptMemBench 的优势通过一系列常见计算内核的案例研究来展示,包括:流模式、多维...
% 1,costas loop在不同的应用场合(诸如,符号速率,动态应力,多谱勒,信道环境等等),其环路设计就会有非常大的差异. % 比如,在某些情况下,环路滤波的前或后,可能要进行环滤更新操作.以匹配NCO的需要.但通常的科环并不...
用于以各种方式处理可视化中的样式,分析或视觉差异的代码。 该代码是进行的学术项目的一部分,该项目是学术论文 ”的一部分。 本文提供了更多详细信息,但是该项目的核心是用户可以创建图表的 JSON规范以及支持...
2. 易于学习和使用:Matlab具有简单易用的语法和直观的编程环境,使得算法开发者可以更快速地实现和测试他们的算法。Matlab的语法与数学表达式和矩阵操作非常相似,这使得算法的表达更加简洁、清晰。 3. 快速原型...
其实查看jQuery的源代码,发现each的代码很简单,但为什么性能和原生的for循环相差几十倍呢? jQuery的each的核心代码 for (; i < length; i++) { value = callback.call(obj[i], i, obj[i]); if (value === ...