2013-08-26 19 views
1

我需要在不同的數組中存儲高達1.000.000的double值(在計算運行期間)。到目前爲止,我使用的是NSMutableArray,但它看起來像內存使用量很大。其中一個想法是使用c-array來避免在NSMutableArray中存儲對象。有沒有辦法粗略估計一個NSMutableArray對比和C數組的內存使用情況? (我找不到有關NSNumber -object的大小與諸如double或float之類的原語有關的任何信息)。已使用內存:c-array與NSMutableArray

謝謝。

+3

爲什麼不用儀器運行一些基準測試? – Stavash

+0

當涉及到內存使用情況時,我發現儀器並不總是有用。我希望找到一些理論方法。儀器中是否有方法來查看特定對象的大小,如NSMutableArray對象? – JFS

+0

我在想'sizeof(myArray)'是否能告訴你真實的大小? –

回答

5

很明顯,NSArray的內存消耗量將大於原始C數組。

差異有多大?那麼,對於NSArray中的每個值,每個基元double都必須包含NSNumber,因此每個值至少添加20個B,可能會多一點。

據估計可以在這裏找到:反正Memory size of classes in Objective-C

,在存儲器中存儲1項000 000的值總是有點怪怪的。也許最好將它們存儲在一個文件中,然後在需要時加載它們(例如,使用內存映射文件)。

+0

這些值在計算運行期間被存儲。這是一個數學應用程序。有沒有定義objc中對象的內存使用情況? – JFS

+1

在內存中存儲1000000個值是非常好的。當需要快速訪問時,文件不是解決方案。 – 2013-08-26 11:49:10

+0

@ H2CO3這取決於用例。如果不需要隨機訪問,文件可以非常快,內存映射文件也可以足夠快。 – Sulthan