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”而不是“如果这个瞬间小于这个瞬间并且大于那个瞬间”。
例如,如果一个 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”而不是“如果这个瞬间小于这个瞬间并且大于那个瞬间”。