gpt4 book ai didi

Java switch 与 for 循环性能

转载 作者:行者123 更新时间:2023-11-30 06:47:38 25 4
gpt4 key购买 nike

我正在做这样的事情:

The first scenario:

for(int i=0; i<50; i++){
// execute some other code here

switch(myCustomInt){
case 1:
case 2:
case 3:
// execude method1
break;
case 4:
// execute method2
break;
}
}

The second scenario:

 for(int i=0; i<50; i++){
// execute some other code here
}

switch(myCustomInt){
case 1:
case 2:
case 3:
for(int i=0; i<50; i++){
// execute method1
}
break;
case 4:
for(int i=0; i<50; i++){
// execute method2
}
break;
}

The Question:

第一个场景仅运行一次 for 循环,但检查 switch 语句 50 次。

第二个场景运行 for 循环两次,但仅检查一次 switch 语句。

哪种执行方式更好?我知道在当今的技术中,差异很可能可以忽略不计。但我仍然很好奇,从理论上讲,哪一种是更好的执行方法?

谢谢!

最佳答案

请注意,何时 method1 方面存在语义差异。和method2被要求(例如)i == 42相对于 for 中的“其他代码”循环:在第一个中,method1/method2被要求 i == 42所有 i == 43 的“其他代码”之前的迭代通过i == 49迭代完成。在第二个中,50 次循环迭代的所有“其他代码”都是在第一次调用 method1 之前完成的。或method2 .

除了语义差异之外,这真的不重要。做最具可读性和可维护性的事情。这可能意味着第一个,但什么是“可读和可维护”因人而异。 Elliott's point第二个重复循环头两次是很好的做法:它打开了由于更改三个中的一个而不是其他两个中的一个或全部而引起的错误的大门。

性能:这并不重要。第一个要求 switch (myCustomInt)比第二名多被评估49倍。从理论上讲,这种评估需要时间。在实践中,我敢打赌您会非常非常困难地衡量差异,特别是如果 HotSpot(Oracle Java 运行时)确定这是一个热点并积极优化它。

关于Java switch 与 for 循环性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43411636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com