第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java中if/etc與Switch語句的相對性能差異是什么?

Java中if/etc與Switch語句的相對性能差異是什么?

回首憶惘然 2019-08-02 07:02:39
Java中if/etc與Switch語句的相對性能差異是什么?考慮到我的web應用程序的性能,我想知道“if/etc”或Switch語句中哪一個在性能方面更好?
查看完整描述

3 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

我完全同意這樣的觀點,即過早優(yōu)化是應該避免的。

但確實,JavaVM有特殊的字節(jié)碼,可以用于Switch()的字節(jié)碼。

看見Wm Spec (查找開關表巫術)

因此,如果代碼是性能CPU圖的一部分,則可能會提高一些性能。



查看完整回答
反對 回復 2019-08-03
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

如果/否則或切換將是性能問題的根源,這是非常不可能的。如果您有性能問題,您應該首先進行性能分析,以確定慢點在哪里。過早優(yōu)化是萬惡之源!

然而,通過Java編譯器優(yōu)化,可以討論開關相對于if/etc的相對性能。首先請注意,在Java中,開關語句在非常有限的域-整數(shù)上運行。通常,您可以按以下方式查看開關語句:

switch (<condition>) {
   case c_0: ...
   case c_1: ...
   ...
   case c_n: ...
   default: ...}

哪里c_0c_1.和c_N是開關語句的目標整數(shù),以及<condition>必須解析為整數(shù)表達式。

  • 如果這個集合是“稠密的”-也就是說,(max(C)i)+1-min(C)i)/n>α,其中0<k<α<1,其中k大于某些經驗值,可以生成跳轉表,這是高效的。

  • 如果這個集合不是很密集,但是n>=β,那么二進制搜索樹可以在O(2*log(N)中找到目標,這仍然是有效的。

對于所有其他情況,開關語句與if/etc語句的等效序列完全一樣有效。α和β的精確值取決于許多因素,并由編譯器的代碼優(yōu)化模塊決定。

最后,當然,如果<condition>不是整數(shù),開關語句是完全無用的。



查看完整回答
反對 回復 2019-08-03
  • 3 回答
  • 0 關注
  • 384 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號