軟體效能的設計(三)資料型別對軟體效能的影響 (轉)
的設計(三)資料型別對軟體效能的影響
劉彥清·yesky
BadRegExpMatcher要求Bot將輸入文字由字元陣列轉換為一個String,從而導致了不必要的物件建立。然而,滑稽的是為了更方便地使用輸入文字,BadRegExpMatcher會立即將String物件轉換為一個字元陣列,這樣不但會生成另一個物件,還意味著你在費了九牛二虎之力得到的結果,跟最初提供的資料沒有什麼二樣,MailBot和BadRegExpMatcher都不要求使用String物件,String物件似乎僅僅是為也在之間文字資料而存在的。
在上面的BadRegExpMatcher例子中,String僅僅是一種供交換用的型別,無論是呼叫程式還是被呼叫程式都不需要使用供交換用的資料型別來表示資料,但它們可以很方便地把它與其他的資料型別進行轉換。儘管在定義介面時採用供交換用的資料型別可以在保持靈活性的前提下降低複雜性,但有時會帶來效能上的損失。
供交換用資料型別的一個最常見的例子是JC ResultSet介面,沒有一種的介面會用 ResultSet表示返回的結果,但JDBC程式可以很方便地把資料庫返回的結果轉換為JDBC ResultSet型資料。同樣,也沒有一種客戶端軟體用DBC ResultSet型資料表示資料記錄,但你也可以不費什麼勁兒就將ResultSet型資料轉換為所需要的資料型別。在JDBC中我們可以接受這種"多此一舉",因為它具有標準性和跨資料庫的可移植性等好處。無論如何,由供交換用資料型別所帶來的效能損失都是一個值得注意的問題。
在RegExpMatcher中,在定義介面時使用String物件對減少複雜性或增加可移植性的幫助並不大,對效能卻有著相當大的影響,這麼做是得不償失的。在設計介面時使用可互換型別往往很有吸引力,因為這樣能夠使介面看起來更"乾淨"一些,但你應該確信你為此所作的折衷是明智的。有時━━就象RegExpMatcher那樣,呼叫程式可以使用多種輸入、輸出格式,應該考慮如何能夠更方便地滿足它們的需求。
值得指出的是,對使用可互換型別對效能的影響進行量化不是一件容易的事兒。如果對呼叫BadRegExpMatcher的程式碼進行分析,它將指派執行時間庫建立輸入用的String物件,這個String物件是為滿足BadRegExpMatcher的需求而生成的。如果要衡量一個元件對效能的真正影響,不僅需要評估程式碼的資源利用情況,還需要評估建立呼叫的程式碼以及呼叫返回的程式碼的資源利用情況,要使用標準的分析工具完成這些分析工作是非常困難的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989500/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 軟體測試對軟體質量的影響有那些?
- 【太陽軟體】動態換ip軟體:反爬蟲對抗對資料分析的影響爬蟲
- 影響MySQL效能的硬體因MySql
- 影響MySQL效能的硬體因素MySql
- 軟體教練說:效能優化與效能設計,“相親相愛”的一對優化
- 軟體測試對軟體質量有哪些影響?
- 人工智慧對軟體測試的影響人工智慧
- 容器化對資料庫的效能有影響嗎?資料庫
- 磁碟排序對Oracle資料庫效能的影響PT排序Oracle資料庫
- 伺服器核心硬體的效能如何影響伺服器的整體效能?伺服器
- 軟體效能測試包含哪些測試型別?權威第三方軟體測評中心分享型別
- 軟體架構, 軟體框架,設計模式的區別架構框架設計模式
- 軟考資料-軟體設計師
- 關於資料庫開啟大頁對效能的影響資料庫
- 軟體效能測試的優勢
- 大型網站的HTTPS實踐(三)——HTTPS對效能的影響網站HTTP
- APM效能監控軟體的監控型別服務及監控流程型別
- 軟體效能測試有哪些效能指標?可做效能測試的軟體檢測機構安利指標
- DB2 HADR對效能的影響DB2
- 雲對基礎設施和軟體的影響和改變是深遠的資料技術AIAI
- 低程式碼開發對軟體開發流程的影響
- 勒索軟體攻擊影響
- Mysql BLOB、BLOB與TEXT區別及效能影響、將BLOB型別轉換成VARCHAR型別MySql型別
- 三維視覺化設計軟體,可以實現資料視覺化的軟體有哪些視覺化
- 小程式對實體行業轉型有何影響?行業
- Haystack Analytics:COVID-19對軟體工程師的影響報告軟體工程工程師
- Sort_Buffer_Size 設定對伺服器效能的影響伺服器
- 軟體設計技巧:產品規劃會影響並應指導你的設計 - james
- 軟體效能測試的幾個階段
- 淺談軟體效能提升相關的概念
- 軟體效能測試的內容有那些?
- 如何解決SQL Server資料庫的軟硬體效能瓶頸OCSQLServer資料庫
- 軟體設計師:資料結構資料結構
- 分支對程式碼效能的影響和優化優化
- 怎麼減少行鎖對效能的影響?
- RVS — 面向目標硬體的軟體效能測試工具
- 軟體有兩種型別的值型別
- Go高效能程式設計-瞭解記憶體對齊以及Go中的型別如何對齊保證Go程式設計記憶體型別
- 中介軟體的型別:不同的風格型別