2016-07-03 5 views
0

スウィフトのディクショナリを正確に使用するメモリ量が何らかの形で記載されていますか?スウィフトのディクショナリのメモリサイズを予測する

私は答えを探していましたが、トピックで見つけたすべての情報はあいまいです。私もSwiftのソースコードを読んで自分でそれを理解しようとしましたが、それは私にとっては複雑すぎます。

+0

Swift標準ライブラリの 'sizeOf'関数を見てください。 https://developer.apple.com/reference/swift/1539562-sizeofと 'sizeOfValue'https://developer.apple.com/reference/swift/1539618-sizeofvalue – Adolfo

+1

Adolfoありがとうございます。私はすでに考えましたが、それらの関数は辞書のサイズを返しません。辞書が構造体として定義されていても、その記憶域は動的に割り当てられているため、これらの関数では考慮されません。それらは常に "バッキング"ストレージへのポインタのサイズである8を返します。 – George

+0

@George私の答えを確認できますか?それは私のために働いています。 –

答えて

1

declaration of Dictionaryを検査することができます。これは、かなり大きなファイルですが、しばらくの間、それを見た後、私は辞書で使用されるバイトの量はこれらの制約を次の信じている:それは理解することはヘラ困難だから

bytes > (strideof(Key) + strideof(Value)) * 4/3 * capacity 
bytes is a power of 2 

私は100%わからないんだけどソースを自分で書いていない。見てくださいherehereherehere。サイズを変更するたびに自分でコンパイルしてprintsと入力することは可能でしょうが、私はそれをするのに気を使うことはできません。なぜあなたはそれのサイズが必要ですか?

+0

ソースコードを読む際の指針をいただきありがとうございます。私にとっても理解しづらいものです。忍耐 私は、アクセス時間が非常に重要だがメモリ効率も関連する、いくつかの操作をサポートするデータ構造を計画しているので、サイズを予測したいと思います。私が検討しているアプローチの1つに、多くの「小さな」辞書を使用する方法があります。しかし、彼らが私が望むより多くのメモリを使用している(私はそれが起こると思われる)私はより良いアプローチを探す必要があります。 – George

+2

@Georgeすべてのデータ構造にはアクセス時間とメモリ効率があり、DictsとArraysではアクセスはO(1)、メモリ使用量はO(n)ですが、絶対値は使用できません。微調整されます。しかし、データ構造は必要以上に多くのメモリを必要としません。あなたが何をしようとしているのか、私に教えてもらえれば、もっと助けてくれるでしょう。 – Kametrixom

+0

私は確信していませんが、いくつか試した後、私はあなたが正しいと思います。 – George

関連する問題