0

私はクラスファイルを書いていCGPointて、Ivarとしてを含めました。これにより、より小さなObjective-cデータ構造に関連するオーバーヘッドについて疑問に思いました。何かのメモリフットプリントは、CGPointそれへのポインタを作成することを正当化するのに十分重要ですか、それとも2つのCGfloat値へのポインタを作成するだけですか?さらに言えば、必要なのがx / y座標だけの場合は、2つのintをivarとして貼り付けてみませんか?

関連する注記として、「小さなデータ構造」や「些細なデータ構造」などの小さなデータ構造を説明するための命名法はありますか。いくつかのプリミティブで構成された構造体を説明する単語。

4

2 に答える 2

2

小さなオブジェクトには確かに問題がありますが、システムにはすでにいくつかの小さなオブジェクトの最適化が行われていると思われます。

一般に、オブジェクトが必要な場合は、オブジェクトを使用します。そうでない場合は、しないでください。

ただし、より大きな問題は、人間が読みやすく、人間が保守しやすいようにコードを記述することです。パフォーマンス ツール (Instruments など) を使用して、システム リソースの使用率に対処する必要がある場所を特定し、それらの問題に対処する必要があります

もちろん、避けるべき愚かなことは明らかですが、一般的には、クリーンな設計と、読みやすく変更しやすい実装に重点を置いてください。テスト スイートでパフォーマンス ツールを実行すると、問題が多すぎることが簡単にわかります。

于 2012-09-06T17:13:18.460 に答える
0

まず、パフォーマンスの問題が発生するまで、オーバーヘッドについて心配する必要はありません。

ほとんどの (すべてではない) オブジェクト指向言語は、小さな非オブジェクト型と、より大きなオブジェクトベースの型を区別しています。しかし、境界があいまいです。型をどのように表現するかを決定するのに役立つ区別は、それを単純な値と考えるかどうです。または、より複雑な何か、固有の動作を持っているもの、動作するものなどです。

組み込みのプリミティブ型は、ほとんどの場合、整数、文字などの値です。その意味では、複素数、分数、座標などは単純な値です - 構造体を使用してください。ツリー、スタック、階層はそうではありません - オブジェクトを使用してください。

関連するメモでは、「値」の多くの使用を検討してください。 「複合」も検討できます。「ささいな」は良い選択ではなく、間違った意味合いです;-) 他の人は「基本的な」、「些細な」、「構造」、または「記録」と言うかもしれません - 後者の2つは非常に大きな型を参照するためにも使用できます。小さいものに使用されます。

于 2012-09-06T18:46:34.613 に答える