我正在執行自定義繪製意見的ListView活動,有以下代碼:爲什麼android的String.format狗慢?
@Override
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
....
canvas.drawText(String.format("%02d: %dx%d", position, w, h),
10, 15, cached_paint);
}
,沒別的東西在的onDraw方法,所以這是我逼瘋了,爲什麼滾動是如此之差。偶然,我改變了drawText參數,不使用String.format,並且滾動再次是黃油絲。事實上,以下幾乎相同,但表現不錯:
canvas.drawText("" + position + ": " + w + "x" + h,
10, 15, cached_paint);
我驚呆了。爲什麼後者比調用String.format更快?我期望對象連接產生更多的中間對象和一般的垃圾性能,但我發現恰恰相反。實際上,當使用String.format運行時,我從vm獲取了大量分配/釋放消息。
那麼爲什麼String.format的速度顯然會更快(至少當其他編程語言來自對象創建昂貴時)?
對,只是閱讀一些有關可變參數在java中的性能提示:不要使用它們。 – 2011-06-11 19:41:30