亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-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
主站蜘蛛池模板: 天天舔天天干天天操 | 日韩啊v | 2022国产成人福利精品视频 | 成 人 免费 网站 | 亚洲a在线视频 | 国产一级在线观看 | 日韩国产欧美视频 | 日本特黄特色aaa大片免费欧 | 一级美国乱色毛片 | 久草首页在线观看 | 日一级片 | 人人做人人做人人爱 | 国产乱子伦一区二区三区 | 理论片中文 | 曰韩欧美 | 国产亚洲91 | 制服丝袜怡红院 | 国产午夜大片 | 免费大香伊蕉在人线国产 | 免费老色鬼永久视频网站 | 国产精品手机视频一区二区 | 国产a不卡| 综合网女女网 | 国产精品久久久久久久久久一区 | 亚洲爆乳无码一区二区三区 | 好男人www社区资源在线观看 | 九草视频在线 | 亚洲欧美日韩高清中文在线 | 小明发看看加密通道2021 | 欧美精品国产一区二区 | 亚洲人免费视频 | 日韩视频网| 日本肥妇 | 国产羞羞的视频在线观看免费 | 国产日韩欧美精品 | 在线综合视频 | 亚洲另在线日韩综合色 | 亚洲欧美日韩成人一区在线 | 午夜资源| 国产麻豆精品高清在线播放 | 夜夜骑首页 |