2013-03-15 74 views
2

最近我一直在研究JVM字節碼,我想知道是否重構性能關鍵代碼以利用Tload_ <n>指令(aload_0,aload_1,aload_2等) )而不是兩個操作數Tload指令會淨任何可觀的性能好處?JVM字節碼指令Tload_ <n> vs Tload

這完全屬於「你永遠不會需要的微觀優化」的範疇,但將其視爲學術好奇。如果一個方法可以將其局部變量表保存在7個條目之下,那麼性能優勢(如果有的話)可能會體現出來嗎?我認爲這可能只會導致稍微小一點的字節碼。

高質量鏈接到閱讀字節碼級別優化材料的獎勵點!

回答

5

由於Java字節碼的最初目的,這裏的短負載主要是因爲它們的原因。該語言最初是爲機頂盒設計的,並且製作得儘可能緊湊,因此爲了節省RAM/ROM,使用經常使用的指令的特殊短版本被認爲是值得的。

還有,在解釋,在微不足道的性能優勢,解釋程序可以單獨建在必要的補償編碼

然而,在JITCed代碼沒有任何區別 - 所有的OPS會摺疊成相同的邏輯,這可能利用短機器指令進行短偏移,但與短短的字節碼不在同一邊界。

+0

(沒有引用,但我爲IBM iSeries編寫了解釋器和字節碼編譯器。) – 2013-03-15 01:29:41

+0

偉大的信息!一個小小的歷史背景可以很快解釋第一眼看起來很奇怪的事情:-) – 2013-03-15 01:39:43