成本在RxJava线程切换和科特林数据类副本()操作

问题描述:

我的问题是关于特定操作的成本科特林数据类copy()操作和RxJavaobserveOn()线程切换的成本。成本在RxJava线程切换和科特林数据类副本()操作

我有一个系统产生事件,比如说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) 

因此,这个问题是值得被observeOn这样的操作切换调度为copy()如果事件类已经让我们说15场。应该提及的是,Schedulers.mainThread是用于呈现UI的线程,并且最好是尽可能空置。

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

event.copy(field3 = "") 

相同

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

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

event.copy(field3 = complexCalculation()) 

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