亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

如何輕松提高Java代碼的性能

2019-11-18 15:37:05
字體:
來源:轉載
供稿:網友

尾遞歸轉換能加快應用程序的速度,但不是所有的JVM都會做這種轉換,很多算法用尾遞歸方法表示會顯得格外簡明。編譯器會自動把這種方法轉換成循環,以提高程序的性能。但在java語言規范中,并沒有要求一定要作這種轉換,因此,并不是所有的Java虛擬機(JVM)都會做這種轉換。

這就意味著在Java語言中采用尾遞歸表示可能導致巨大的內存占用,而這并不是我們期望的結果。Eric Allen在本文中闡述了動態編譯將會保持語言的語義,而靜態編譯則通常不會。他說明了為什么這是一個重要問題,并提供了一段代碼來幫助判定您的即時(JIT)編譯器是否會在保持語言語義的同時做尾遞歸代碼轉換。

尾遞歸及其轉換

相當多的程序包含有循環,這些循環運行的時間占了程序總運行時間的很大一部分。這些循環經常要反復更新不止一個變量,而每個變量的更新又經常依靠于其它變量的值。

假如把迭代看成是尾遞歸函數,那么,就可以把這些變量看成是函數的參數。簡單提醒一下:假如一個調用的返回值被作為調用函數的值立即返回,那么,這個遞歸調用就是尾遞歸;尾遞歸不必記住調用時調用函數的上下文。

由于這一特點,在尾遞歸函數和循環之間有一個很好的對應關系:可以簡單地把每個遞歸調用看作是一個循環的多次迭代。但因為所有可變的參數值都一次傳給了遞歸調用,所以比起循環來,在尾遞歸中可以更輕易地得到更新值。而且,難以使用的break語句也經常為函數的簡單返回所替代。

但在Java編程中,用這種方式表示迭代將導致效率低下,因為大量的遞歸調用有導致堆棧溢出的危險。

解決方案比較簡單:因為尾遞歸函數實際上只是編寫循環的一種更簡單的方式,所以就讓編譯器把它們自動轉換成循環形式。這樣您就同時利用了這兩種形式的優點。

但是,盡管大家都熟知如何把一個尾遞歸函數自動轉換成一個簡單循環,Java規范卻不要求做這種轉換。不作這種要求的原因大概是:通常在面向對象的語言中,這種轉換不能靜態地進行。相反地,這種從尾遞歸函數到簡單循環的轉換必須由JIT編譯器動態地進行。

要理解為什么會是這樣,考慮下面一個失敗的嘗試:在Integers集上,把Iterator中的元素相乘。

因為下面的程序中有一個錯誤,所以在運行時會拋出一個異常。但是,就象在本專欄以前的許多文章中已經論證的那樣,一個程序拋出的精確異常(跟很棒的錯誤類型標識符一樣)對于找到錯誤藏在程序的什么地方并沒有什么幫助,我們也不想編譯器以這種方式改變程序,以使編譯的結果代碼拋出一個不同的異常。

清單1:一個把Integer集的Iterator中的元素相乘的失敗嘗試

import java.util.Iterator;

public class Example {

public int PRodUCt(Iterator i) {

return productHelp(i, 0);

}

int productHelp(Iterator i, int accumulator) {

if (i.hasNext()) {

return productHelp(i, accumulator * ((Integer)i.next()).intValue());

}

else {

return accumulator;

}

}

}

注重product方法中的錯誤。product方法通過把accumulator賦值為0調用productHelp。它的值應為1。否則,在類Example的任何實例上調用product都將產生0值,不管Iterator是什么值。

假設這個錯誤終于被改正了,但同時,類Example的一個子類也被創建了,如清單2所示:

清單2:試圖捕捉象清單1這樣的不正確的調用

import java.util.*;

class Example {

public int product(Iterator i) {

return productHelp(i, 1);

}

int productHelp(Iterator i, int accumulator) {

if (i.hasNext()) {

return productHelp(i, accumulator * ((Integer)i.next()).intValue());

}

else {

return accumulator;

}

}

}

// And, in a separate file:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品九九久久久久久久| 91精品国产乱码久久久久久久久| 国产精品美女999| 欧美日韩国产999| 91高清视频免费观看| 国产精品高潮呻吟久久av野狼| 日韩欧美视频一区二区三区| 国产深夜精品福利| 国产精品91久久久| 欧美日韩另类在线| 在线看欧美日韩| 精品久久久久久久久久久久| 欧美激情xxxx| 亚洲网在线观看| 精品综合久久久久久97| 国产精品久久国产精品99gif| 中日韩美女免费视频网址在线观看| 亚洲xxxx在线| 国产精品日韩在线一区| 国产欧美精品va在线观看| 日韩av毛片网| 一区二区成人精品| 美女av一区二区三区| 久久亚洲私人国产精品va| 欧美日韩一二三四五区| 亚洲精品视频免费在线观看| 久久综合久中文字幕青草| 欧美日韩国产91| 日本高清视频精品| 亚洲色图欧美制服丝袜另类第一页| 亚洲理论在线a中文字幕| 成人黄色免费片| 欧美综合国产精品久久丁香| 在线观看日韩视频| 欧美影院成年免费版| 国产亚洲欧洲黄色| 国产亚洲欧美视频| 久热99视频在线观看| 精品国产拍在线观看| 日韩麻豆第一页| 国产精品高潮在线| 亚洲网站在线观看| 68精品国产免费久久久久久婷婷| 97香蕉超级碰碰久久免费的优势| 国产精品久久久久久久久久| 高潮白浆女日韩av免费看| 欧美成人午夜免费视在线看片| 国产丝袜精品视频| 午夜精品一区二区三区在线视频| 日韩欧美有码在线| 95av在线视频| 成人在线中文字幕| 91亚洲国产精品| 亚洲欧美国产制服动漫| 国产精品日韩在线播放| 久久久久久久国产精品| 欧美大全免费观看电视剧大泉洋| 欧美日韩国产中文字幕| 国产精品免费视频xxxx| 亚洲毛片在线观看| 久久久精品欧美| 亚洲成人动漫在线播放| 在线观看精品国产视频| 91系列在线播放| 国内精品久久久久久久久| 亚洲男人第一av网站| 欧美一区二区影院| 亚洲人成伊人成综合网久久久| 日韩欧美在线免费| 国产精品网站入口| 精品无人区乱码1区2区3区在线| 久久久久久久影视| 亚洲伊人久久综合| 精品国内产的精品视频在线观看| 久久精品美女视频网站| 国产精品福利片| 欧美专区中文字幕| 国产日韩欧美在线播放| 久久国产精品久久国产精品| 欧美日韩免费区域视频在线观看| 久久视频在线直播| 亚洲欧美激情在线视频| 日本一区二三区好的精华液| 成人激情视频免费在线| 最新中文字幕亚洲| 国产视频在线观看一区二区| 欧美一区深夜视频| 69av在线播放| 国产精品三级网站| 2019亚洲男人天堂| 久久久久久久久久久免费精品| 久久成人av网站| 久久999免费视频| 欧美专区在线观看| 91精品久久久久久久久青青| 97视频色精品| 国产精品盗摄久久久| 亚洲成人免费网站| 日韩欧美在线看| 国产亚洲一区二区在线| 国产精品亚洲片夜色在线| 中文字幕日韩有码| 亚洲一区二区三区久久| 成人美女免费网站视频| 91伊人影院在线播放| 亚洲第一精品夜夜躁人人爽| 免费97视频在线精品国自产拍| 92福利视频午夜1000合集在线观看| 自拍偷拍免费精品| 精品夜色国产国偷在线| 国产婷婷色综合av蜜臀av| 亚洲欧美在线免费观看| 亚洲欧美日韩一区二区三区在线| 欧美激情aaaa| 欧美成人四级hd版| 久青草国产97香蕉在线视频| 欧美激情在线视频二区| 日韩免费在线电影| 日韩一区二区福利| 亚洲高清免费观看高清完整版| 国产成人在线亚洲欧美| 亚洲精品国产精品乱码不99按摩| 国产亚洲精品一区二区| 国产又爽又黄的激情精品视频| 国产成人+综合亚洲+天堂| 在线丨暗呦小u女国产精品| 欧美视频13p| 欧美最猛性xxxxx免费| 久久精品福利视频| 欧美一区二粉嫩精品国产一线天| 欧美另类极品videosbestfree| 精品福利在线观看| 国产精品小说在线| 日韩电影在线观看永久视频免费网站| 国产97免费视| 精品久久久在线观看| 美日韩丰满少妇在线观看| 亚洲精品视频免费在线观看| 国产精品吊钟奶在线| 中文字幕欧美日韩| 欧美激情一区二区三区高清视频| 日韩精品极品在线观看播放免费视频| 91精品啪在线观看麻豆免费| 亚洲国产高潮在线观看| 日韩av在线免费看| 7777免费精品视频| 日本一本a高清免费不卡| 欧美亚洲一级片| 黄色一区二区在线| 66m—66摸成人免费视频| 97av在线视频| 社区色欧美激情 | 色樱桃影院亚洲精品影院| 成人免费视频网| 欧美亚洲视频一区二区| 美女视频黄免费的亚洲男人天堂| 欧美激情亚洲激情| 午夜精品久久久久久久99热| 538国产精品一区二区在线| 国产精品99免视看9| 日韩av网址在线| 少妇高潮 亚洲精品| 免费99精品国产自在在线| 91日韩在线播放|