Kotlin - 与使用 start >= Instant && Instant <= end 相比检查范围内的 Instant

Kotlin - checking Instant in range compared to using start >= Instant && Instant <= end

例如,如果一个 Instant 在其他两个 Instant 的开始和结束范围内,你想在 Kotlin 中检查,你可以简单地执行以下操作:

import java.time.Instant
 
val start = Instant.parse("2000-10-23T00:00:00Z");
val end = Instant.parse("2020-10-23T23:59:59Z");
 
 
val toTest = Instant.parse("2010-10-24T00:00:00Z");
 
if(toTest in start..end) println("Yes") else println("No")

我认为这很容易理解

您也可以按照标准方式编写以下内容来进行检查:

import java.time.Instant
 
val start = Instant.parse("2000-10-23T00:00:00Z");
val end = Instant.parse("2020-10-23T23:59:59Z");
 
val toTest = Instant.parse("2020-10-24T00:00:00Z");
 
val result = start <= toTest && toTest <= end
if(result) println("Yes") else println("No")

我现在的问题是,范围解决方案消耗的资源或额外开销是否存在差异。

出于某种原因,使用标准方法进行检查是否更好?某个范围内的瞬间?

Is there a difference in consumed resources or in additional overhead with the range solution?

范围解决方案实际上是 creates a ClosedRange<Instant> object,因为 .. 运算符。然后 in 做与第二个代码片段完全相同的事情 - start <= toTest && toTest <= end.

所以范围解决方案确实做了一些额外的事情,但在几乎所有情况下,这一点额外的工作不会是减慢应用程序速度的主要因素。不会有太大关系的。

Is it better for some reason to use the standard way for checking

是的,因为它更简洁易读。它更清楚地表明你的意图,说“如果这个瞬间是 in 这个 range”而不是“如果这个瞬间小于这个瞬间并且大于那个瞬间”。