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

Cost of thread switching in RxJava and Kotlin data class copy() operation

我的问题是关于运营成本,特别是 Kotlin data class copy() 运营的成本和 RxJava observeOn() 线程切换。

我有一个系统可以在 Schedulers.mainThread 上生成事件。事件是 Kotlin data classes。接下来是业务逻辑,最后,链通过copy()操作产生新的数据class。所有结果都必须在 Schedulers.mainThread 上使用。所以,一条链看起来像这样:

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

因此,如果事件 class 有 15 个字段,那么问题是值得通过 observeOn 切换调度程序以执行 copy() 等操作。需要说明的是,Schedulers.mainThread是用来渲染UI的线程,越空越好

copy 只是调用数据 class 构造函数,其中包含您尚未传递的参数的默认参数,即

event.copy(field3 = "")

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

就其本身而言,不太可能值得切换调度程序,但当然 "other business logic" 很可能值得,如果你有

event.copy(field3 = complexCalculation())

您需要考虑 complexCalculation() 的费用。