gpt4 book ai didi

Scala - TypeTags、ClassTags 和 WeakTypeTags 的运行时性能

转载 作者:行者123 更新时间:2023-12-04 12:40:36 27 4
gpt4 key购买 nike

简介 :

... TypeTag[T] encapsulates the runtime type representation of some compile-time type T. ...
... TypeTags are always generated by the compiler. ... [1]


TypeTag位于 scala.reflect.** 包。
另一个 SO answer提到使用 java 反射会在您的应用程序中产生运行时性能开销。

问题 : TypeTag到什么程度年代, ClassTag s 和 WeakTypeTag s 在运行时使用 java 反射?它们是在编译时生成的,但在使用时会导致运行时性能开销吗?

示例 :
def isOfType[A : ClassTag : TypeTag, E : ClassTag : TypeTag](actual: A, expected: E): Boolean = {
actual match {
case _ : E if typeOf[A] =:= typeOf[E] => true
case _ => false
}
}

assert( isOfType(List.empty[Int], List.empty[Int]))
assert(!isOfType(List.empty[String], List.empty[Int]))

虽然标签是在编译时生成的,但运行时我能感觉到延迟。类型比较是否在底层使用了性能不佳的 java 反射?

最佳答案

嗯,你可以看看here .在您的情况下,不涉及 Java 反射,但 =:=最终委托(delegate)给 isSameType2 ,这是非常重要的。它确实首先检查引用相等性。

关于Scala - TypeTags、ClassTags 和 WeakTypeTags 的运行时性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29710941/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com