RxJava和Kotlin数据类copy()操作中的线程切换成本

问题描述 投票:0回答:1

我的问题是关于操作成本,特别是Kotlin数据类copy()操作和RxJava observeOn()线程切换的成本。

我有一个系统可以生成事件,比如说Schedulers.mainThread。事件是Kotlin数据类。接下来是业务逻辑,最后,链由copy()操作生成新的数据类。所有结果都必须在Schedulers.mainThread上消耗。所以,链条看起来像这样:

eventSource() //Events are produced on Schedulers.mainThread
.observeOn(Schedulers.computation)
.map { event ->
    other business logic
    event.copy(...)
}
.observeOn(Schedulers.mainThread)
.subscribe(eventConsumer)

因此,如果事件类允许说15个字段,那么问题是由observeOncopy()这样的操作切换调度程序。应该提到的是,Schedulers.mainThread是用于呈现UI的线程,并且最好尽可能地空置。

android multithreading performance kotlin rx-java2
1个回答
2
投票

copy只使用默认参数调用数据类构造函数,用于那些尚未传递的参数,即

event.copy(field3 = "")

是相同的

Event(event.field1, event.field2, "", event.field4, ...)

本身不太可能值得切换调度程序,但当然“其他业务逻辑”可能是,如果你有

event.copy(field3 = complexCalculation())

你需要考虑complexCalculation()的成本。

© www.soinside.com 2019 - 2024. All rights reserved.