关于静态方法与非静态方法的执行效率

关于静态方法与非静态方法的执行效率以前看到许多网友认为静态方法要比实例方法在执行效率上要快一些 当初不敢苟同 自己亲自试了一把 发现静态方法确实要快一些 想要比较静态方法与非静态方法的执行效率 需要对 CLR 在调用静态方法与非静态方法时的不同之处要有一个了解 静态方法是与类相关联的 CLR 在调用一个静态方法时需要做的事情就是找到定义该方法的类型即可实现调用 而在调用非静态方法时 为了保证运行安全 CLR 会对我们的源代码进行

  以前看到许多网友认为静态方法要比实例方法在执行效率上要快一些,当初不敢苟同。自己亲自试了一把,发现静态方法确实要快一些。

  想要比较静态方法与非静态方法的执行效率,需要对CLR在调用静态方法与非静态方法时的不同之处要有一个了解。

关于静态方法与非静态方法的执行效率

  CLR via C#的解释调用一个静态方法时,CLR会定位与定义静态方法的类型对应的类型对象。然后,JIT编译器在类型对象的方法表中查找与被调用的方法对应的记录项,对方法进行JIT编译(如果需要的话),再调用JIT编译的代码。过程图如下:

关于静态方法与非静态方法的执行效率

  一般情况下声明静态方法的类大多是工具类,并且这些静态方法不需要访问类型中的非静态字段和事件,也就是说静态方法与该类型中的非静态字段和事件不具有逻辑上的关联性。如果一个方法声明为静态方法,也意味着不能被重写,该方法失去面向对象的扩展和多态的特性。

总结:静态方法与实例方法在性能和占用内存上没有明显的区别,是否声明为静态方法需要从类型的非静态字段、事件、面向对象扩展和多态这三方面来考虑。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231182.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 1024快乐

    1024快乐1024程序员节日快乐转载于:https://www.cnblogs.com/canmeng/p/9842898.html

    2022年6月24日
    37
  • java循环语句_Java中的循环语句

    java循环语句_Java中的循环语句1.1while循环语句while语句也称为条件判断语句.循环方式:利用一个条件来控制是否要反复执行这个语句.语法:1while(条件表达式){2执行语句3}当条件表达式的返回值为真时,执行”{}”中的语句,当执行完”{}”中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环.注意:不能在while表达式的括号后面不加”{}”!!…

    2022年7月7日
    20
  • Carson带你学Android:最全面的Webview使用详解

    Carson带你学Android:最全面的Webview使用详解前言现在很多App里都内置了Web网页(HypridApp),比如说很多电商平台,淘宝、京东、聚划算等等,如下图那么这种该如何实现呢?其实这是Android里一个叫WebView的组件实现的。今天我将全面介绍WebView的常用用法。目录1.简介WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内

    2022年6月2日
    43
  • BackTrack 5 R3 下编译安装hostapd最新版过程记录

    BackTrack 5 R3 下编译安装hostapd最新版过程记录

    2021年8月22日
    67
  • 两个正序数组 找中位数_leetcode合并两个有序数组

    两个正序数组 找中位数_leetcode合并两个有序数组原题连接给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:nums1 = [0,

    2022年8月9日
    4
  • JS es6的Class类详解

    JS es6的Class类详解文章目录JSes6的Class类详解class基本语法Class的基本语法之constructorClass的基本语法之类的调用方式Class的基本语法之getter和setterClass的基本语法之类的属性名Class的基本语法的特别注意点Class的静态属性和方法Class的私有方法和私有属性构造函数的新属性构造函数的新属性JSes6的Class类详解class基本语法JavaScript语言中,生成实例对象的传统方法是通过构造函数和原型的组合模式.ES6提供了更接近传统语言(java)

    2022年6月10日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号