我正在尝试开发一个使用Kotlin和Project反应堆的演示应用程序,我想在像Flux或Mono这样的对象上嵌入一些功能,比如Flux。
我确实喜欢这样:
private inline fun Flux<Account>.map(noinline transformer: (Account) -> AccountDTO): Flux<AccountDTO> {
return this.map(transformer)
}但这并不好,因为我收到了IDEA发出的以下警告:
Expected performance impact of inlining 'private open inline fun Flux<Account>.map(noinline transformer: (Account) -> AccountDTO): Flux<AccountDTO> defined in com.freesoft.reactiveaccountservice.api.controller.AccountController' is insignificant. Inlining works best for functions with parameters of functional types.有没有人知道我如何实现这个内联函数,或者实现它是否重要?
Tx!
发布于 2019-05-20 06:49:54
只要您只是调用在Java中定义的非内联map,就不会有任何好处。原则上,您可以查看Java定义,并将其转换为Kotlin,并将其转换为内联map的定义,但是(不加检查),我希望它只是类似于return new MapFlux(...)的东西,这两者都不会受益,因为lambda需要存储在字段中。
因此,您需要在Kotlin重新实现相当一部分库。
发布于 2019-05-19 19:11:56
通常,您希望内联lambda函数,这些函数被传递到高阶函数中,因为它减少了运行时开销。当您内联lambda时,将不会在运行时创建匿名类和函数引用对象。在您的例子中,内联不会提高性能,因为它是一个常规函数。您可以通过示例这里阅读完整的说明。
https://stackoverflow.com/questions/56210976
复制相似问题