objective-c小班开销

时间:2012-09-06 16:56:21

标签: objective-c pointers performance abstract-data-type

我正在编写一个类文件,我将CGPoint作为Ivar包含在内。这让我想知道与较小的objective-c数据结构相关的开销。类似于CGPoint的内存占用是否足以证明指向它的指针,或者我只是指向2 CGfloat值的指针?就此而言,如果我需要的只是x / y坐标,为什么不只是像ivars一样坚持2个整体?

在相关的说明中,是否存在描述微小数据结构的术语,如“小数据结构”或“琐碎的数据结构”;一个描述由少数基元组成的结构的词。

2 个答案:

答案 0 :(得分:2)

小对象肯定存在问题,但系统中已经有几个小对象优化。

通常,如果需要对象,请使用对象。如果没有,那就不要。

然而,更大的问题是编写代码,以便人类易于阅读,并且易于人工维护。使用性能工具(如Instruments)来隔离需要解决系统资源利用率的地方,然后 解决这些问题。

当然,有明显的愚蠢的要避免的事情,但总的来说,专注于干净的设计,并且易于阅读/更改实现。在测试套件上运行性能工具应该很容易发现任何错误。

答案 1 :(得分:0)

在遇到性能问题之前,首先不要担心开销。

大多数(但不是全部)面向对象语言在小型,非对象类型和较大的基于对象的类型之间形成鲜明对比;但边界是模糊的。决定如何表示类型的一个有用的区别是,您是否将其视为一个简单的,您可能认为上运行或使用;或更多涉及的东西,可能是具有固有的行为等上运作的东西。

内置的基元类型主要是值:整数,字符等。在那个静脉中,复数,分数,坐标等是简单的值 - 使用结构;树,堆栈,层次结构不是 - 使用对象。

在您的相关说明中,考虑许多人使用“价值”,您也可以考虑"composite"。 “小资”不是一个好的选择,错误的内涵;-)其他人可能会说“基本”,“琐碎”,“结构”或“记录” - 而后两者也可以用来指代他们经常使用的非常大的类型用于小的。