java 后执行的for循环比先执行的for循环速度快

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 后执行的for循环比先执行的for循环速度快相关的知识,希望对你有一定的参考价值。

在测试嵌套for循环效率时发现的问题。
一个main方法中,执行两个嵌套for循环,顺序如下:
第一个for循环:

外层是for (int i=0; i<1000000; i++),
内层是for (int j=0; j<100; j++)。
第二个for循环:
外层是for (in i=0; i<100; i++),
内层是for (int j=0; j<1000000; j++)

分别打印了执行两个嵌套for循环的时间,按理来说,应该是外层数量少的要执行的快,但实际情况下是,不管外层是是否小于内层,都是第二个for循环所花费的时间要少得多,不明白其中的道理,求助!

程序是从main方法入口,然后从上到下去执行的。
执行过程如下:
先执行 第一个for循环,再到第一个for循环的外层第一个,到第一个for循环的内层0-99次。
当第一个for循环的执行完成之后。再执行第二个for循环。
------------------------------------------------------------------------
这里强调一点:程序是从上到下执行的,第一个for循环如果没有执行完成,第二个for循环就不能执行,这有点像上厕所一样,里面的人不完事,外面的就只能一直等。

不理解的可以追问
参考技术A java是解释型的。是面向对象的(c++也是)。从速度上来看,c++能快点。但是我感觉还是java比较好一些。她的一些特性,决定了她的领先地位。 参考技术B 不明白你说什么。第二个循环不就是外层数量少的么?

为啥这个for循环不执行?

把这个循环删掉,直接对GPIO->CRL赋值是可以点亮灯的,但是用for循环后就是不对

从你的描述中,我猜测你在尝试使用 STM32 的 GPIO 控制来点亮一个 LED 灯。我认为你在代码中使用了一个循环,但是当你把这个循环删除后,灯却可以点亮。反之,当你加入循环后,灯却不能点亮。我可以提供一些可能的原因:

    循环导致代码延迟过长,GPIO 只能短暂地输出高电平,灯不会一直亮。在删除循环后,灯可以亮是因为 GPIO 能够足够长时间地输出高电平,使得灯可以被看作一直处于亮的状态。

    循环中的某些变量的值没有正确设置或者没有正确更新。这可能导致 GPIO 控制的电平不正确,从而导致灯无法点亮。

    为了更好地帮助你解决问题,我需要更多的上下文信息,比如你的硬件平台、你的代码实现、你所期望的输出结果等等。如果你能提供更多信息,我将非常乐意为你提供帮助。

参考技术A 如果在for循环中直接赋值,可能会出现一些不可预料的问题。尤其是当设备在某个particular时间点改变GPIO->CRL值时,LED可能会受到影响而不会点亮。因此,使用for循环赋值之前,最好先用GPIO->ODR去检查s哪些位被置位以及清除再置位。

以上是关于java 后执行的for循环比先执行的for循环速度快的主要内容,如果未能解决你的问题,请参考以下文章

Java for 循环

for循环语句执行顺序

Java 循环结构

04 循环结构概述和for语句的格式及其使用

为啥这个for循环不执行?

java学习之路之javaSE基础3