答案 0 :(得分:2)
我的Kotlin项目中没有FqNameUnsafe或FqName。它仅包含在kotlin-reflect(a separate JAR file)中。
如果您不必在应用程序中使用kotlin-reflect,则不要将其包含在类路径中。一般来说,Kotlin编译成非常简单的JVM字节码,并且不会产生很多开销(如果有的话),有时会执行普通Java,因为它可以inline functions(你可以在{{中搜索“开销”) 3}}了解更多详情。)
但是,如果你确实需要使用kotlin-reflect,那么据我所知,没有选项可以调整它是如何做的,你会产生Kotlin Language Documentation(加上特定于Kotlin反射的任何东西)我找不到任何有用的文档。)
答案 1 :(得分:1)
更新(2016-09-13):问题一直是fixed,从Kotlin 1.1开始不会再现。
如果你不经常调用KClass#qualifiedName
或者缓存结果,我想这可能会有所改善。此属性的当前实现(以及使用限定名称的其他人)并没有像应该的那样进行优化。事实上,目前我们没有关注反射实现中的性能,但在Kotlin 1.0之后可能会有所改进。
同时,如果您想跟踪其状态,请在youtrack.jetbrains.com报告此问题(以及您将找到的任何其他问题)。谢谢!