setPosition(1,2)比setPosition快得多(new Point(1,2))

时间:2012-04-06 07:10:10

标签: java optimization

两种方法实现:

  

public void setPosiotion(int x,int y){      //没做什么   }

     

public void setPosiotion(Point point){      //没做什么   }

如果我不得不调用setPosition()10亿次,那么不需要创建新Point的方法会更快地工作吗?

2 个答案:

答案 0 :(得分:2)

它可能会产生一些小的差异,但它可能会比你编写更长的表达式的时间要少。有时你的时间和效率更重要。

比写入时间更重要的是维护代码所花费的时间,这是开发代码所花费的时间的3倍。这表明可维护性应该是您的主要关注点。

总之;编写简单,清晰易懂的代码,从长远来看,它通常表现良好并且最有效。

答案 1 :(得分:2)

  

如果我不得不调用setPosition()10亿次,那么不需要创建新Point的方法会更快地工作吗?

这取决于setPosition方法的作用。

  • 如果该方法只使用x中的yPoint值,那么创建/传递Point对象可能会更快。

  • 如果该方法立即创建Point来保存您传递的xy值,那么自己创建Point 可以< / em>要快点。

由于最新的JVM可以使用转义分析来推断Point对象不需要创建为堆对象,因此这很复杂。另一方面,它取决于需要传递xy值的方法调用(等等)的级别。

简而言之,很难预测。


最后,你假设setPosition将被称为十亿次是可疑的...除非你实际上已经分析了应用程序。即使它有效,这些调用仍然对整个应用程序执行时间做出了微不足道的贡献。

首先配置文件,然后优化。