2011-06-23 79 views
0

我正在繪畫應用程序和實施洪水填充。 我使用Objective C實現它,但沒有使用任何Apple框架。基本上算法從平原C移植。Objective C的實現是否比普通C更慢? (優化)

目前有2個實現 - Floodfill4和掃描線填充。 兩人都在iPad上花費5秒左右來填充800x600的矩形。 這裏是我的算法: https://github.com/OgreSwamp/ObjFloodFill/blob/master/src/FloodFill.m

你認爲值得投入一些時間將其移植到純粹的C.我會有顯着的性能增加? 您是否看到其他方式來提高性能?

謝謝!

+2

Objective-C是C的一個嚴格超集。這意味着您的填充應該已經是C程序。如果您在時間關鍵型代碼中使用Objective-C工具,那麼您的算法和工具選擇存在問題,而不是工具本身。換句話說,如果你有一個對時間要求很高的例程,那麼即使在Objective-C程序中,你也應該用「純C」編碼它。 –

+1

可能你想問這裏:http://codereview.stackexchange.com/ – vikingosegundo

+0

C實現沒有多大幫助。對於800x600,它仍然約爲5秒 – OgreSwamp

回答

1

Objective C的主要性能問題是方法調用 - 它比標準C調用慢。 但是,如果你不使用子程序調用很多,它不會影響性能。 但是,對於800x600,5秒對於現代處理器來說非常慢,所以您實際上應該優化您的代碼。

+0

只是看看你的代碼 - 你實際上經常調用子程序,對於每個像素來說,這很慢。 –

+0

但是你會如何提供比較顏色,而不是調用函數。 PS:在C上的實現沒有節省任何重要的時間...... – OgreSwamp

+0

您認爲將RGBA緩衝區轉換爲color結構的array [] []會更快,然後比較color.r,color.g,color。 b爲了平等嗎? – OgreSwamp