0 1

Java的一个循环效率问题0

我写了一个简单,其中一个看似普通的循环却出乎了我的意料,是用Java写的。其中yz及pow的底数我现在改了一下:

//方法一:
double w = 0.0, yz = 1.234567;
for (int i = 0; i < currents.length; i++) {
    if (currents[i] > i2) {
        w += yz * currents[i] * Math.pow(1.56, i0/currents[i]);
    }
}
return w;


//方法二:
double w = 0.0, yz = 1.234567;
for (int i = pMax; i < currents.length; i++) {
    w += yz * currents[i] * Math.pow(0.89, i0/currents[i]);
}
return w;

 代码如上,现在问题就是照我的理解方法二应该比方法一快一些才对,而进行了测试方法一需要114ms,方法二需要333ms(进行了多次测试取平均)

我现在不知道到底是什么原因,所以上来请教讨论一下,谢谢各位!

- -|||  没分

2013年8月20日 09:37

3个答案 按时间排序 按投票排序

0 0

采纳的答案

方法一中的循环体实际计算次数要比方法二少吧,所以就快;
算法时间主要花在了计算Math.pow和两次乘法,循环本身的时间比计算时间少很多
因为方法一有计算条件的约束所以计算时间就少花了很多

2013年8月20日 10:08
0 0

两个方法所消耗的时间主要是用在计算上面,虽然第一个if判断比第二多,但是他真正计算的时间比第二方法少,总体来看肯定是第一个方法时间消耗少。其实你可以通过循环的次数从小到大,依次去比较两个方法消耗的时间,应该可以画出一个正太分布图。肯定会有一个临界点,两个方法的时间一样,通过这个可以分析出你想要的结果

2013年8月20日 14:09
0 0

方法一中的if (currents[i] > i2) 这句,满足这个条件才会进去计算。

2013年8月20日 09:52

相关推荐

    js,java提高编程效率之【for循环优化】.pdf

    针对这个问题,可以对for循环进行优化,将数组长度预先存储在一个变量中,避免多次访问数组长度: ```javascript for(var i = 0, len = arrays.length; i ; i++) { // 操作数组 } ``` 这里,我们在初始化循环变量...

    关于Java中的循环

    `while`循环是Java中最基本的一种循环结构,它首先检查一个条件表达式是否为真(true),如果为真,则执行循环体内的代码。这个过程会一直重复,直到条件表达式变为假(false)为止。`while`循环的基本语法如下: `...

    java基础for循环练习题

    比如,遍历一个整型数组并打印: ```java int[] numbers = {1, 2, 3, 4, 5}; for (int num : numbers) { System.out.println(num); } ``` 3. **在数组中的应用** `for`循环常用于遍历数组,无论是基本类型...

    Java中增强for循环的实现原理和坑详解

    在增强for循环中,Java编译器会将其转换为一个普通的for循环,使用迭代器来遍历集合或数组。迭代器会在遍历过程中维护一个索引,指向当前要遍历的元素。这样,增强for循环可以简洁地遍历集合或数组,提高编程效率。 ...

    Java中一个线程执行死循环有什么后果

    首先,我们要理解死循环的概念:一个死循环就是程序中的某个循环条件始终为真,导致循环无法自然终止,持续消耗CPU资源。 标题所提及的场景是一个Java多线程环境,涉及到两个线程——ThreadA和ThreadB,它们分别...

    java初级—循环练习题答案

    在这个"java初级—循环练习题答案"中,我们将探讨几种常见的Java循环:for、while和do-while。 1. **for循环**: for循环是最常用的循环类型之一,适用于已知迭代次数的情况。其基本语法是: ``` for (初始化; ...

    java循环结构学习教案.pptx

    Java循环结构学习教案 本节课程主要讲解Java中的循环结构,包括while循环、do-while循环和for循环。通过学习本节课程,学生将能够理解循环的含义,学会使用while循环、do-while循环和for循环结构,并能够使用调试...

    Java代码循环的优化

    在Java中,当进行数值比较时,如果可能的话,应尽可能地将其中一个值设置为0来进行比较。这是因为大多数处理器在处理与0的比较时会更加高效。例如,在循环条件中使用 `i 或者 `i &gt; 0` 比使用 `i 或者 `i &gt; 1` 更加...

    java实现多层嵌套循环参数转换

    首先,多层嵌套循环的基本概念是指在一个循环体内部嵌套另一个或多个循环,使得内层循环会根据外层循环的迭代次数多次执行。例如,如果你有一个二维数组或树形结构,你可以用两层`for`循环来遍历所有的元素。以下是...

    java技巧java中可以用来循环遍历任何一个集合的通用方法

    本文将详细介绍一种在Java中循环遍历任何一个集合的通用方法,并通过示例代码来具体说明其实现过程及注意事项。 #### 1. 集合遍历的重要性 集合框架是Java中非常基础且重要的组成部分之一,它提供了存储和管理对象...

    java循环语句(典型的循环语句)

    迭代器提供了`hasNext()`方法来检查是否还有更多元素,以及`next()`方法来获取下一个元素。 在实际编程中,根据需求选择合适的循环结构能有效提高代码的效率和可读性。熟练掌握这些循环语句,对于编写高质量的Java...

    java json-lib解决无循环的探索例子

    Java中的json-lib库是处理JSON数据的一个常用工具,它提供了将Java对象转换为JSON字符串以及从JSON字符串反序列化回Java对象的功能。然而,在处理复杂的嵌套数据结构时,如果不小心可能会导致无限循环的问题。 在...

    Java程序设计基础:for循环.pptx

    ### Java程序设计基础:深入解析for循环 #### 一、for循环概述 在Java程序设计中,循环控制结构是...`for`循环作为Java编程语言中的一个重要组成部分,掌握其使用对于提高编程效率和编写高质量的代码具有重要意义。

    练习Java循环的一些源代码例子

    6. **循环嵌套**:一个循环可以嵌套在另一个循环内部,形成多层循环。这在处理二维数组、矩阵或其他需要多层次遍历的情况时很有用。 通过上述知识点,我们可以编写出各种满足不同需求的循环逻辑。在实际编程中,...

    基于java的循环双链表

    循环双链表是一种数据结构,它在单链表的基础上增加了前后指针,使得链表的首尾相连,形成一个环状。在Java编程中,我们可以使用面向对象的设计思想来实现循环双链表。通常,这样的数据结构会包含三个主要部分:一个...

    java循环队列的分析和实例介绍.pdf

    ### Java循环队列的深入解析与实践应用 #### 循环队列概念解析 循环队列,作为一种高效的数据结构,广泛应用于计算机科学中,尤其是在Java编程语言中,它以其独特的性能优势,在各种算法和系统设计中占据了...

    java代码运行效率

    1. **资源控制**:通过线程同步控制资源的并发访问,确保同一时刻只有一个线程访问资源,从而避免资源争用导致的问题。 2. **节省内存空间**:单例模式限制了实例的数量,只允许一个实例存在,这样可以有效减少内存...

    Java数组链表效率-Java数组和链表三种遍历效率对比 数组和链表.pdf

    Java 数组链表效率对比 Java 中的数组和链表是两种常用的数据结构,它们都可以用来存储和操作数据。然而,在实际开发中,选择合适的数据结构和遍历方式对程序的性能和效率有着非常重要的影响。下面我们将对 Java 中...

    循环链表的java实现

    在Java中实现循环链表,我们需要定义一个节点类(Node)来存储数据和指向下一个节点的引用,同时在链表类(CircularLinkedList)中维护头节点和当前大小。以下是实现的关键点: 1. **节点类(Node)**:创建一个内部...

    Java for循环标签跳转到指定位置的示例详解

    总结一下,Java中的for循环标签是一个强大的工具,它允许我们更精确地控制循环的流程。通过结合`break`或`continue`语句,我们可以跳出或跳转到循环的特定位置,这对于处理复杂逻辑或嵌套循环的情况尤其有用。在编写...

Global site tag (gtag.js) - Google Analytics