首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的if / else与switch语句的相对性能差异是什么?

Java中的if / else与switch语句的相对性能差异是什么?
EN

Stack Overflow用户
提问于 2018-03-01 00:48:41
回答 2查看 0关注 0票数 0

担心我的web应用程序的性能,我想知道哪些“if / else”或switch语句对性能更好?

EN

回答 2

Stack Overflow用户

发布于 2018-03-01 09:34:10

这是微观优化和过早优化,这是邪恶的。而是担心代码的可读性和可维护性。如果有两个以上的if/else块粘在一起或者其大小不可预测,那么您可能会高度考虑一个switch声明。

或者,您也可以抓住多态。先创建一些界面:

代码语言:javascript
复制
public interface Action { 
    void execute(String input);
}

并掌握所有的实现Map。您可以静态或动态地执行此操作:

代码语言:javascript
复制
Map<String, Action> actions = new HashMap<String, Action>();

最后替换if/elseswitch像这样的东西(留下像nullpointers琐碎的检查):

代码语言:javascript
复制
actions.get(name).execute(input);

它可能比微if/else或小switch,但代码至少可以更好地维护。

在讨论Web应用程序时,可以使用HttpServletRequest#getPathInfo()操作键(最终编写一些代码将pathinfo的最后一部分拆分为循环,直到找到操作为止)。你可以在这里找到类似的答案:

  • 使用定制的面向Servlet的框架,太多的servlet,这是一个问题
  • Java前端控制器

如果您一般担心Java EE Web应用程序的性能,那么您可能会发现这篇文章也很有用。还有其他一些领域比仅对微型原始Java代码进行优化提供了更多的性能增益。

票数 0
EN

Stack Overflow用户

发布于 2018-03-01 10:05:24

我完全同意这样的观点,即不成熟的优化是可以避免的。

但是,Java VM确实具有可用于switch()的特殊字节码。

请参阅WM规格lookupswitchtableswitch

如果代码是性能CPU图的一部分,那么可能会有一些性能提升。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档