[我的确感谢,为什么两个LocalDateTime
实例之间的差异表示为句点而不是持续时间,但是我找不到Period
是类而不是结构的原因。
我正在帮助移植完成很多工作的代码库:
DateTime t1;
DateTime t2;
TimeSpan diff = t2-t1;
// After port, with a surprising allocation
LocalDateTime t1;
LocalDateTime t2;
Period diff = t2-t1;
似乎有点perf / GC陷阱,我很好奇,为什么Period是类而不是结构?
Period
成为类的主要原因是它会很大-它具有6个long
字段和4个int
字段。那将是64个字节-大量作为方法参数传递等等。虽然Noda Time中的其他一些结构“相当大”,但它们却不那么大。但是值得注意的是,这两段代码做了根本不同的事情。相当于TimeSpan
的Noda时间不是Period
;它是Duration
,它是一个[LocalDateTime
值转换为UTC中的Instant
值(或避免使用LocalDateTime
开头),然后取这两个时刻之间的差。