Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在J2ME中实现最高性能的浮点数据类型_Java_Java Me_Types_Floating Point - Fatal编程技术网

Java 在J2ME中实现最高性能的浮点数据类型

Java 在J2ME中实现最高性能的浮点数据类型,java,java-me,types,floating-point,Java,Java Me,Types,Floating Point,我想在J2ME(MIDP2.0)程序中使用浮点数。 我不需要高精度,所以我正在考虑选择float类型 然而,在我看来,我读过一篇Java文章,其中说处理器更好地支持double,因此速度更快 我用这样的数字做了很多操作,所以性能对我来说很重要 问题是,这些数据类型中哪一种在J2ME中工作得更快?float和double之间的性能差异没有那么大 如果您非常频繁地执行这些操作,那么与float相比,float更好,而且占用的空间也更少 更新: public long sumDouble(){

我想在J2ME(MIDP2.0)程序中使用浮点数。
我不需要高精度,所以我正在考虑选择
float
类型

然而,在我看来,我读过一篇Java文章,其中说处理器更好地支持
double
,因此速度更快

我用这样的数字做了很多操作,所以性能对我来说很重要


问题是,这些数据类型中哪一种在J2ME中工作得更快?

float和double之间的性能差异没有那么大

如果您非常频繁地执行这些操作,那么与float相比,float更好,而且占用的空间也更少

更新:

 public long sumDouble(){

        double[] arr = new double[1000];
        for(int i = 0 ;i < 1000;i++){
            arr[i]=new Random().nextFloat();
        }
        float sum = 0.0f;
        long start = System.currentTimeMillis();
        for(int i = 0 ;i < 1000;i++){
            sum+=arr[i];
        }
        System.out.println(""+sum);
        long end = System.currentTimeMillis();
        return end - start;
    }
    public long sumFloat(){

        double[] arr = new double[1000];
        for(int i = 0 ;i < 1000;i++){
            arr[i]=new Random().nextDouble();
        }
        double sum = 0.0f;
        long start = System.currentTimeMillis();
        for(int i = 0 ;i < 1000;i++){
            sum+=arr[i];
        }
        System.out.println(""+sum);
        long end = System.currentTimeMillis();
        return end - start;
    }
public long-sumDouble(){
double[]arr=新的double[1000];
对于(int i=0;i<1000;i++){
arr[i]=new Random().nextFloat();
}
浮动总和=0.0f;
长启动=System.currentTimeMillis();
对于(int i=0;i<1000;i++){
总和+=arr[i];
}
系统输出打印项次(“+总和);
long end=System.currentTimeMillis();
返回结束-开始;
}
公众长期储蓄存款(){
double[]arr=新的double[1000];
对于(int i=0;i<1000;i++){
arr[i]=new Random().nextDouble();
}
双和=0.0f;
长启动=System.currentTimeMillis();
对于(int i=0;i<1000;i++){
总和+=arr[i];
}
系统输出打印项次(“+总和);
long end=System.currentTimeMillis();
返回结束-开始;
}

尝试在您的真实设备中执行这些方法,以测量性能差异,这并不重要。

所有性能问题的规则都是:测量它。例如,您可以使用float编写程序,测量其性能(显然是在目标平台上),执行serach&replace以加倍,再次测量性能,然后进行比较。。。在emulator中,
double
可能更好,但在实际的手机上,
float
可能会赢。这就是为什么你要在目标设备上进行测量:-)我已经开发了应用程序,包括游戏,实际部署在无数不同的J2ME(JME)设备上。你认为你需要浮点数,但你可能真的不需要。你认为需要用浮点数来解决的问题很可能可以用“整数数学”来解决。你有什么证据吗?