2012-11-27 79 views
4

在java中,在Canvas類中,我聽到有人解釋一次,當你從1到2,從2到3變大時,更大的緩衝策略效率會更高,但是3以上則沒有什麼區別。爲什麼緩衝策略的大小在3以上會顯着提高速度,以及從createBufferStrategy(2)到createBufferStrategy(3)的增加如何工作?不同的緩衝區策略大小如何影響性能?

+0

我可以看到兩個(甚至三個)緩衝區如何幫助使動畫看起來更平滑,但是我也想知道速度如何增加(如果有的話)。 – TacticalCoder

+0

你有解釋的來源嗎? –

回答

3

當且僅當您不想撕裂動畫時,纔會出現性能問題:在這種情況下,您必須等待系統,以便在再次更改此緩衝區之前完成緩衝區的顯示。

所以,有1個緩衝區,你必須等待,無所事事。 使用2個緩衝區時,您可以在顯示第一個緩衝區時在另一個緩衝區中寫入數據,但如果速度夠快,最終可能會在開始下一個幀之前等待。使用3個緩衝區,您可以再次執行某些操作而不是等待。

在完全顯示第一個緩衝區之前完成第三個緩衝區的繪製的可能性較小,因此增益在3緩衝區之上非常低。

請注意,您使用的緩衝區越多,託管這些緩衝區所需的內存就越多。這在普通電腦上不是問題,但可以用於手機應用程序。