0

我正在创建一个方法,该方法可以从托管一些数据的 SQL 表中获取最短年份,为了节省空间和内存,我创建了返回类型为 int16 的方法。令我惊讶的是,DateTime 对象的 Year、Month 和 Day 属性都是 int 32 类型,我认为这没什么用,而且 a 是浪费内存。微软是否有理由将它们声明为 int32 而不是 int16。

4

2 回答 2

5

.Net DateTime 结构的内部表示不是 d/m/y/s,而是一个 64 位整数,表示自一个纪元以来的滴答数。

这些属性以整数形式返回,因为它们更易于使用并且通常是处理成本最低的数据类型。

于 2013-07-30T08:29:33.670 回答
2

DateTime是单个 64 位值,无论其属性是什么类型。年、月、日都包含在该值中,并且占用的空间比 even 少得多Int16

现在,除了从属性中返回任何东西之外没有太多好处,Int32因为大多数 CPU 处理本机整数大小(int32/int64)而不是更小的整数大小更好 - 因此您可能需要生成更慢/更复杂的代码以节省一些可疑的节省。

如果您确实需要将结果值存储在“天数组”之类的东西中,您显然可以将结果值存储在较小的类型中,但测量性能影响是个好主意——您可能会发现令人惊讶的结果......

于 2013-07-30T08:31:28.170 回答