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

我的问题是关于操作的成本,特别是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个字段,那么这个问题是值得通过observeOn来切换调度observeOn ,例如copy() 。 应该提到的是, Schedulers.mainThread是用于渲染UI的线程,最好是空置的。

copy只是调用数据类的构造函数的默认参数为那些你没有通过,即

 event.copy(field3 = "") 

是相同的

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

就其本身而言,切换调度程序是不太可能的,但是当然“其他业务逻辑”可能也是如此

 event.copy(field3 = complexCalculation()) 

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