当我在核心数据中创建模型时,我总是有点困惑于我应该选择哪种整数类型-16,32,64。我几乎总是需要一些简单的基本数字:一个人数在我的家庭,对于我目前的情况。可能会是1-20之间的数字。或者,我在另一个实例中有一个递增的案例ID号...无法想象比几百人更进一步。
这就是交易......很明显,真正的计算机科学家对数字的看法不同,考虑到将要处理数字的架构,处理和存储数据所需的空间,向后兼容性等因素,未来打样等。当我想到数字时,我基本上会想到一个值有多大。因此,当我必须在三种类型的整数之间进行选择时,当我到达我的过程的那一点时,我基本上对自己说,“好吧,这将是一个小数字,让我们只使用Int 16选项......” ,或者“拍摄,我最终可能会得到一个非常大的数字,所以让我们使用Int 64选择。”基本上,我选择这些数据类型时使用的是我在订购薯条时使用的相同逻辑...如果我真的很饿我会选择大型的,如果我感到很愧疚,我会得到小的。
我正在学习,知道我没有以正确的方式思考这个问题,但我真的不知道为什么,而且我不知道选择最佳方案的适当方法。我应该考虑哪些因素...在Int 16,Int 32和Int 64之间选择的最重要标准是什么?
答案 0 :(得分:6)
它并不重要。
假设您正在使用SQLite持久性存储,这三个整数类型都表示为SQLite INTEGER
字段(对于Core Data' s"布尔"类型)。而在SQLite中,字段类型纯粹是建议性的,所以即使这并不意味着什么。因此:它在存储空间方面几乎没有区别。 SQLite将根据整数值的大小来优化自身,而核心数据级别的较大int类型将不起作用。
对于内存使用,可能影响很小。如果使用64位int而不是16位,则需要更多位而不是您需要的位。但除非您拥有非常大的数据集,否则您不太可能有理由关心。
我通常的规则是使用Integer 64作为任何整数值。
答案 1 :(得分:0)
您正确执行:最大预期数量的大小。但是不要太关心它。即使你选择一个“太大”的整数,也不会失败,而只是使用比所需更多的内存。在磁盘上。
我认为不同大小的整数是不合时宜的。