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()
的成本。