创建对象和委托比一个大方法慢得多?

 往事如烟zhang_214 发布于 2023-02-04 12:03

这个问题与记忆和主要表现有关.最近几天我反思这个话题,这不是我需要使用的东西,只是好奇.我创建了一个简单的例子:

1)一个不使用委托且没有内部类的类:

public class NoInnerClass {
public void theMethod(int times){
    for(int i=0; i

2)一个类调用四个内部类.最后一个与theMethod方法中的NoInnerClass相同

public class InnerMain {
    private Inner1 inner1 = new Inner1();

    public void theMethod(int times){
        inner1.doIt(times);
    }
}

...

public class Inner4 {
public void theMethod(int times){
    for(int i=0; i

我测量了这两种类型的调用之间的时间差(以毫秒为单位).差异并不大 - 超过一毫秒.但是,如果我们有更复杂的内部对象和更多的委托调用,我们肯定会有更大的差异.

所以问题是:

两种方法之间使用的内存时间和内存量的差异是否会显着增加

如果有,是否有任何关于此的文章(我找不到多少)

或许今天的JVM非常聪明,我们不应该考虑它

提前感谢您的回答.

1 个回答
  • 你发现的差异(超过一毫秒)可能是你的基准测试技术的一个神器.而且,在不知道整个运行时间的情况下谈论毫秒是没有意义的:如果时间是几百毫秒,则差异很小; 如果时间本身是一位数毫秒,则差异很大; 如果时间以秒为单位,那么差异就是测量误差.

    现代JVM优化了对这种效率水平的虚拟调用,您可以看到的任何差异都很难衡量.使用您可用的所有编码技术(包括虚拟调用)专注于使代码尽可能清晰,并且只有在您的探查器告诉您有必要时才开始优化,这样做要好得多.

    2023-02-04 12:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有