是否有一种非分配方式来获取两个LocalDateTime点之间的差?

问题描述 投票:0回答:1

[我的确感谢,为什么两个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是类而不是结构?

nodatime
1个回答
0
投票

Period成为类的主要原因是它会很大-它具有6个long字段和4个int字段。那将是64个字节-大量作为方法参数传递等等。虽然Noda Time中的其他一些结构“相当大”,但它们却不那么大。但是值得注意的是,这两段代码做了根本不同的事情。相当于TimeSpan的Noda时间不是Period;它是Duration,它是一个[结构。如果不需要日历计算,则可能需要考虑将两个LocalDateTime值转换为UTC中的Instant值(或避免使用LocalDateTime开头),然后取这两个时刻之间的差。

© www.soinside.com 2019 - 2024. All rights reserved.