亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 >
Rope:理論與實(shí)踐
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/4 15:49:37 ] 推薦標(biāo)簽:

這個(gè)測(cè)評(píng)的方法是,從輸入字符串中選取隨機(jī)范圍的字符附加到它本身。這個(gè)測(cè)試的有趣之處在于:StringBuffer正是為了執(zhí)行快速附加而優(yōu)化的。圖 3 顯示了這個(gè)測(cè)評(píng)的結(jié)果。

不幸的是,圖 3 的視圖顯示 String的性能非常糟糕。但是,如預(yù)期所料,StringBuffer的性能非常好。

圖 4 從比較中撤出 String的結(jié)果,調(diào)整了圖表的比例,更清楚地顯示了 Rope和 StringBuffer性能的對(duì)比。

圖 4 顯示了圖 3 中不太明顯的 Rope和 StringBuffer之間的巨大區(qū)別。Rope很少能突破 x 軸。但是真正有趣的是 StringBuffer的圖 —驟然上升后保持穩(wěn)定上升,而不是平滑地上升。(作為練習(xí),在閱讀下一段之前請(qǐng)?jiān)囍忉屢幌略颉#?/p>

原因與 StringBuffer的空間分配方式有關(guān)。它們?cè)谄鋬?nèi)部數(shù)組的末尾分配額外的空間,以便有效地附加字符。但是在空間用盡之后,必須分配全新的數(shù)組,并將所有數(shù)據(jù)復(fù)制到新數(shù)組。新數(shù)組一般根據(jù)當(dāng)前長度調(diào)整大小。隨著計(jì)劃長度的增加,生成的 StringBuffer的長度也會(huì)增加。隨著逐漸到達(dá)重新設(shè)置大小的閾值,花費(fèi)的時(shí)間也隨著額外的重新設(shè)置大小和復(fù)制而驟升。然后下幾個(gè)計(jì)劃長度的性能穩(wěn)定期(即緩慢提升的時(shí)間)也逐漸升高。因?yàn)槊總(gè)計(jì)劃項(xiàng)增加的字符串長度總數(shù)大體相同,所以隨后的穩(wěn)定期比例可以作為重新設(shè)置底層數(shù)組大小的參考指標(biāo)。根據(jù)這些結(jié)果,可以準(zhǔn)確地估算出這個(gè) StringBuffer實(shí)現(xiàn)大約在 1.5 左右。

結(jié)果小結(jié)

迄今為止,已經(jīng)用圖表展示了 Rope、String和 StringBuffer之間的性能差異。表 5 提供了所有字符變換測(cè)評(píng)的計(jì)時(shí)結(jié)果,使用了 480 ?計(jì)劃長度。

 

變換 / 數(shù)據(jù)結(jié)構(gòu) 時(shí)間(單位:納秒)
插入  
String 18,447,562,195
StringBuffer 6,540,357,890
Rope 31,571,989
在前部添加  
String 22,730,410,698
StringBuffer 6,251,045,63
Rope 57,748,641
在后面添加  
String 23,984,100,264
StringBuffer 169,927,944
Rope 1,532,799
刪除(從初始文本中刪除 230 個(gè)隨機(jī)范圍)  
String 162,563,010
StringBuffer 10,422,938
Rope 865,154

正則表達(dá)式的性能優(yōu)化

正則表達(dá)式在 JDK 1.4 版本中引入,是許多應(yīng)用程序中廣泛使用的一個(gè)功能。所以,正則表達(dá)式在 rope 中執(zhí)行良好至關(guān)重要。在 Java 語言中,正則表達(dá)式用 Pattern表示。要將 Pattern與 CharSequence的區(qū)域匹配,要使用模式實(shí)例構(gòu)建 Matcher對(duì)象,將 CharSequence作為參數(shù)傳遞給 Matcher。

操縱 CharSequence可為 Java 的正則表達(dá)式庫提供的靈活性,但也帶來了一個(gè)嚴(yán)重的缺陷。CharSequence只提供了一個(gè)方法來訪問它的字符:charAt(x)。像我在概述一節(jié)中提到過的,在擁有許多內(nèi)部節(jié)點(diǎn)的 rope 上隨機(jī)訪問字符的時(shí)間大約為 O(log n),所以遍歷時(shí)間為 O(nlog n)。為了演示這個(gè)缺陷帶來的問題,我測(cè)評(píng)了在長度為 10,690,488 的字符串中尋找模式 “Crachit*” 的所有實(shí)例所花費(fèi)的時(shí)間。所用的 rope 是使用插入測(cè)評(píng)的同一個(gè)變換序列構(gòu)建的,深度為 65。表 6 顯示了測(cè)評(píng)的結(jié)果。

 

技術(shù) 時(shí)間(單位:納秒)
String 75,286,078
StringBuffer 86,083,830
Rope 12,507,367,218
重新均衡后的 Rope 2,628,889,679

顯然,Rope的匹配性能很差。(明確地講,對(duì)有許多內(nèi)部節(jié)點(diǎn)的 Rope是這樣。對(duì)于扁平 rope,性能幾乎與底層字符表示的性能相同。)即使在顯式地均衡過 Rope之后,雖然匹配快了 3.5 倍,Rope的性能還是沒有達(dá)到與 String或 StringBuffer相同的水平。

上一頁1234下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 一级毛片在线完整免费观看 | 亚洲国产成人久久精品动漫 | 久久婷婷色 | 老司机午夜剧场 | 久久99精品一级毛片 | 日韩高清在线观看 | 国产欧美一区二区三区精品 | 国产aaaaaa| 亚洲日本韩国在线 | 黄a在线| 欧美激情在线观看一区二区三区 | 欧美一级一级做性视频 | aaa免费视频 | 欧美成人免费做真爱大片 | 日韩在线视频精品 | 人人爽人人看 | 国产欧美成人 | 人人干夜夜操 | 视频二区国产 | 午夜性爽快免费视频播放 | 日本特级黄录像片 | 国产成+人+亚洲+欧美综合 | 一级做a爰片性色毛片黄书 一级做a爰片性色毛片16美国 | 色播在线永久免费视频 | 国产日韩欧美在线观看 | 韩国伦理片中文字幕 | 污视在线看 | 色综合色 | 久久成人免费播放网站 | 日日草草 | 亚洲国产精品久久网午夜 | 99爱在线视频这里只有精品 | 国产精品嫩草影院奶水 | 看中国一级毛片 | 在线播放亚洲视频 | 700av第一福利在线导航 | 丝袜久久 | 亚洲 午夜在线一区 | 一级a级国产不卡毛片 | 欧美理论在线 | www.精品|