2017-12-27 510 views
0

我的問題是關於特定操作的成本科特林數據類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的線程,並且最好是儘可能空置。

回答

2

copy只是調用默認參數的數據類的構造函數對於那些你沒有通過,即

event.copy(field3 = "") 

相同

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

它本身是不太值得切換調度程序,但當然「其他業務邏輯」可能是,如果你有

event.copy(field3 = complexCalculation()) 

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