java提高系统性能_使用BigDecimal时提高系统性能的一些优化

有时在项目开发过程中,对数值的精度要求较高时可能就会用到java.math.BigDecimal,使用时发现有些用法效率较低。

1:初始化一个java.math.BigDecimal时尽量用java.math.BigDecimal.valueOf(0)来替代new java.math.BigDecimal().

2:比较两个java.math.BigDecimal对象时,最好用equals(),而不要进行数值转换,如:doubleValue等,测试发现凡涉及到类型转换,性能都要受到较大影响。

下面是自己写的一段测试代码:

import java.math.BigDecimal;

public class TestClass {

public TestClass() {

}

public static void main(String[] args){

StringBuffer test = new StringBuffer();

BigDecimal tempBig = null;

long time1 = System.currentTimeMillis();

for(int i=0;i<200000;i++){

tempBig = new BigDecimal(0);

tempBig = null;

}

long time2 = System.currentTimeMillis();

System.out.println("===="+(time2-time1)+"=======");

System.out.println("====@@@@@@@@@@@@@@@@@@@@@=======");

long time3 = System.currentTimeMillis();

for(int i=0;i<200000;i++){

tempBig = BigDecimal.valueOf(0);

tempBig = null;

}

long time4 = System.currentTimeMillis();

System.out.println("===="+(time4-time3)+"=======");

System.out.println("====@@@@@@@@@@@@@@@@@@@@@=======");

tempBig = BigDecimal.valueOf(0);

BigDecimal ddd = new BigDecimal(1);

long time5 = System.currentTimeMillis();

for(int i=0;i<200000;i++){

if(tempBig.equals(ddd)){

}

}

long time6 = System.currentTimeMillis();

System.out.println("===="+(time6-time5)+"=======");

System.out.println("====@@@@@@@@@@@@@@@@@@@@@=======");

long time7 = System.currentTimeMillis();

for(int i=0;i<200000;i++){

if(tempBig.doubleValue()==0){

}

}

long time8 = System.currentTimeMillis();

System.out.println("===="+(time8-time7)+"=======");

System.out.println("====@@@@@@@@@@@@@@@@@@@@@=======");

}

}


版权声明:本文为weixin_39744606原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。