在最美的地方等你 2022-11-15 11:07 采纳率: 100%
浏览 6
已结题

使用相同变量是每次用get()方法效率高还是使用get后的新变量效率高?

获取同一个变量时,是先用get方法获取后取个变量名后使用这个变量名,还是说每次使用的时候都去调用get方法?我纠结的是效率问题以及代码的可读性和简洁性.

以下是我自己写的测试代码,希望您可以通过代码理解我的意思和疑问:

// 第一种get方式
    Invoices invoices = new Invoices();
        invoices.setId(123456789L);
        System.out.println("开始时间" + System.currentTimeMillis());
        System.out.println(invoices.getId());
        System.out.println(invoices.getId());
        System.out.println(invoices.getId());
        System.out.println("结束时间" + System.currentTimeMillis());

// 第二种取值后使用的方式
        Invoices invoices2 = new Invoices();
        invoices2.setId(123456789L);
        Long id = invoices2.getId();
        System.out.println("开始时间" + System.currentTimeMillis());
        System.out.println(id);
        System.out.println(id);
        System.out.println(id);
        System.out.println("结束时间" + System.currentTimeMillis());
运行多次后发现第二种方式似乎消耗时间更短一点,但是差别不是很大.我的Id是Long类型,这种长数字型才稍微体现了一些性能上的差异,但是如果换成字符串且字符串较短则效率无差异.
期望您的解答谢谢.
  • 写回答

2条回答 默认 最新

  • Silwings银翼 2022-11-15 11:33
    关注

    首先,只要你get方法里面没有复杂逻辑,只是一个简单的return this.id;,是基本可以忽略差异的.但是如果是一个有类似要创建一个对象或者查找的方法,那建议可以只执行一次就执行一次.

    第二,你的这个测试代码没有参考价值.如果要统计时间,就不要写输出语句,输出语句是个耗时操作,打印同一个内容两次执行时间也不一致.如果你的测试可以忽略这个时间误差就没事,但是你这个测试用例明显是不能忽略的.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • WaitIKnowYou 2022-11-15 11:31
    关注

    不是,,你这个问题问的有点怪异啊
    第一种方式你打印时 代码执行get方法都去方法里走了一圈 然后return id 你写了三句那就调用了三次
    你get中就一行代码 你多写点代码 比如写一个 延迟3秒后运行 那不就是 9秒 而第二种只需要3秒
    第二种只需要调用一次 get方法 。从次数都能看出来啊 这有啥纠结的

    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 创建了问题 11月15日

悬赏问题

  • ¥15 关于非编程寻迹小车的分析
  • ¥15 java导出EXCEL这里已经执行成功了,但是流浪器没有下载
  • ¥15 帮我把代码改的能正常运行就行
  • ¥50 有限元修正、模型修正、最小二乘法,详细步骤
  • ¥15 用plc编写梯形程序
  • ¥15 关于#物联网#的问题:新大陆AIOT中,按照手册教程进行添加,设置完成后网关一直不上线,显示Never这是网络服务的信息
  • ¥15 这个要用一维热方程但是我不知道怎么运用这个公式
  • ¥15 OpenFOAM多孔介质传热模型建模
  • ¥15 QT 实现 RSTP 语音对讲功能
  • ¥15 用C语言写的一个程序遇到了两个问题第一是偏移正确但读取不到坐标,第二个问题是自己定义的函数实现不了获取指定进程模块。