這幾天
由於工作的原因對以前開發的系統進行了測試
這個系統主要作用就是傳輸數據
將一個數據庫的數據搬到另外一個數據庫中
期間可能需要通過Internet
而目標的接收者也不一定再線的這麼一個咚咚
測試了兩種數據庫
分別對其進行數據轉入轉出處理
常被人說你寫的程序效率低
不可用
其實不然
這次測試發現原來配置非常重要:
) 編碼 由於程序使用Java寫的
又要兼容各個不同的數據庫
因而需要對字符串型的數據進行編碼轉換
String str = new String(rs
getString(i)
getByte(databaseEncoding));
當數據量小的時候
察覺不出來
當數據量大時就發現這個消耗有些驚人
if(databaseEncoding
equals(fileEncoding)){
return new String(rs
getString(i)
getByte(databaseEncoding));
}
經過更改後
當fileEncoding和databaseEncoding時
數據處理效率提高
倍以上
)硬盤 在做測試時
當數據庫與應用在同一台機器上時
發現硬盤燈從來就沒有熄滅過
移開應用程序到另外一台機
重現測試
發現性能至少提高
%
這和我以前的經驗相反
經過分析發現
原來我使用的是筆記本
硬盤只有
rpm
當數據量大時
硬盤根本應付不過來
分開應用後
JDBC寫入數據的網絡通信開銷要小於硬盤資源爭奪的開銷
速度當然提上去了
看來不同環境下同一應用
做測試結論不一定都相同
)綜合損耗 做測試時
發現系統最優性能既不是數據較小時
也不是數據最大時
而是在一個中間值
分析發現
程序運行有一些
綜合損耗
這些綜合損耗不論你數據大或小都客觀存在
如取數據連接
格式校驗等
當數據量小時
這些損耗占的時間比重就多
而當數據量大時
雖然這些綜合損耗占的比重少
但是數據量大占的
動態損耗就多了
只有在中間某一個值時
兩種損耗都不是特別顯現時
系統運行的效率達到了最高值
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26779.html