Recently in 小实验 Category

Java次方运算性能测试

| 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的性能在大运算量的情况下不是特别理想。

 

About this Archive

This page is an archive of recent entries in the 小实验 category.

前端 is the previous category.

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 5.12