2010-02-12 38 views
1

我一直在編程的C/C++爲20年,但我是新來的Objective-C和可可和有關於的NSMutableArray和NSArray的性能的一些問題。出現性能問題的NSMutableArray和NSArray的

我需要一個很像stl list容器的容器,但是coco似乎沒有一個,從MSMutableArray中間插入和移除元素看起來很慢,但將它當作stl向量處理並不那麼快。

此外,MSMutableArray似乎只能存儲對象,所以要簡單數據類型,行int的跟蹤或浮動即被創建對象,並將其存儲在額外的開銷。

我目前正在寫一個遊戲性能危急。我總是可以爲我的遊戲引擎的膽量投入C++,但是我非常喜歡Objective-C,我不願意放棄它。

是否有快速stl像容器的Objective-C,我應該使用?

有沒有關於如何實現這些的很好的在線文檔,所以我可以嘗試圖解爲什麼性能如此之慢?

謝謝!

回答

2

基礎集合類一樣的NSMutableArray不保證使用任何特定的實現,事實上,我相信他們會真正改變他們的數據結構來優化速度,它們所包含的項目數。你可以閱讀更多here,但基本上我不會擔心底層算法。

您可以創建用C自己的數據結構(或去,如果你想要的Objective-C++路線),這將節省每一個包裹在原始一個NSNumber的內存和性能開銷。當然,你首先需要運行性能工具來確保問題確實存在,而不僅僅是浪費時間。

+0

鏈接死了:( – Lewis42 2017-06-13 19:15:49

0

如果你真的在乎性能,我建議,以避免通過Objective-C的使用基礎數據結構的運行時系統消除了編譯時進行優化的機會,和你說,你總是需要框元。

你可以使用的Objective-C++和使用std::list<id>

如果必須使用的Objective-C,見CHDataStructures,其中包含CHSinglyLinkedList類型。