【发布时间】:2023-03-10 09:26:01
【问题描述】:
我想知道如果我使用HashMap来收集条件并循环每个if语句,我是否可以达到更高的性能而不是一个一个地编写if-else if语句?
在我看来,一对一的 if-else, if 语句可能会更快,因为在 for 循环中,每个循环都会运行一个条件,例如,计数器是否达到目标数?所以实际上每个 if 语句,它运行 2 个 if 语句。当然内部语句不同,但如果我们只讨论语句性能,我认为一对一类型会更好?
编辑:这只是一个示例代码,我的问题是关于这些语句的用法之间的性能差异。
Map<String, Integer> words = new HashMap<String, Integer>
String letter ="d";
int n = 4;
words.put("a",1);
words.put("b",2);
words.put("c",3);
words.put("d",4);
words.put("e",5);
words.forEach((word,number)->{
if(letter.equals(word){
System.out.println(number*n);
});
String letter ="d";
int n = 4;
if(letter.equals("a"){
System.out.println(number*1);
}else if(letter.equals("b"){
System.out.println(number*2);
}else if(letter.equals("c"){
System.out.println(number*3);
}else if(letter.equals("d"){
System.out.println(number*4);
}else if(letter.equals("e"){
System.out.println(number*5);
}
【问题讨论】:
-
您需要展示您的代码以更好地解释您的意思。您是否在任何条件下使用短路或在满足条件时断开?
-
您很可能将时间浪费在毫无意义的微优化上。 Java 速度来自于 jit 将字节码翻译成机器码。你在这个级别上在 Java 源代码中所做的事情几乎是零影响。编写简单易读和易于理解的代码。并提示:jit 非常擅长将简单的代码翻译成快速的机器指令。
-
@GhostCat 微优化通常毫无意义,但并非总是如此。不应该将任何希望进行微优化的人自动阻止这样做的信念视为一种信条。虽然编译器确实可以进行令人难以置信的优化,但它肯定会根据您在许多情况下编写的代码进行不同的优化。所以你写什么代码很重要。
-
OP“在我看来”你(和我)的意见不值得写在纸上。测量。
-
@mypetlion 因此我说“最有可能”。正如预期的那样,OP 显示了包含打印语句的代码。这告诉我们,他没有真正的性能问题,而是一个想象的问题。衡量这里提供的代码甚至没有意义。
标签: java performance for-loop if-statement hashmap