Java次方运算性能测试

| No Comments | No TrackBacks

背景:最近工作中使用聚类算法进行数据分类,采用欧氏距离计算特征矢量的相似度,由于数据维度太大,运算比较耗时,除去使用各种办法减小运算次数外,需要对每一行代码进行优化。

由于每次迭代需要上百亿次的平方运算,原来的代码采用的Math.pow的方法进行平方运算,如果这一个步骤每次都可以节省一些时间,那么对于上百亿次的运算来讲,运算时间将大大缩减。

 

采用了三种运算方式,进行对比,结果如下(实验数据使用浮点数):

平方运算(耗时单位:ms):

运算次数/耗时 1亿次 2亿次 4亿次 8亿次 16亿次
Math.pow 1245 2499 5003 9972 19932
StrictMath.pow 1905 3893 7789 15531 31437
x*x 35 69 140 286 549

 

 
三次方运算(耗时单位:ms):
 
运算次数/耗时 1亿次 2亿次 4亿次 8亿次 16亿次
Math.pow 19177 38576 77039 154462 312001
StrictMath.pow 20296 40507 80848 162794 332476
x*x*x 36 70 140 301 587

通过实验结果可以看出,pow的性能在大运算量的情况下不是特别理想。

 

No TrackBacks

TrackBack URL: https://www.thinkjam.org/tjmanage/trackbacks/1276

Leave a comment

About this Entry

This page contains a single entry by meteor published on November 20, 2012 10:08 AM.

数据可视化工具:d3js was the previous entry in this blog.

Java虚拟机:32位编译与64位运行问题 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Categories

Pages

  • About
  • Contact
OpenID accepted here Learn more about OpenID
Powered by Movable Type 7.6.0