Я использую java ReactiveX (RxJava) в scala Play Framework 2.5 для асинхронного общения с couchbase. Я хотел бы знать, сколько времени потребовалось для моего наблюдения для запуска? Я определяю свой наблюдаемый, используя следующий код.
def get(id: String) : Observable[Profile] = {
this.bucket
.async()
// can I have a start time here possibly using map?
.get(id)
.map[Profile](toProfile)
// can I have an end time here possibly using map?
}
Я вызываю его, используя следующий
Thread.sleep(1000)
val observable = get("myID")
Thread.sleep(1000)
// measure start time here
println("observable: " + observable.toBlocking.first())
// measure end time here
Thread.sleep(1000)
Как я могу измерить, сколько времени потребовалось для выполнения наблюдаемого?
Благодарим вас заранее
Фрэнсис
Вы хотите запустить свой таймер в блоке doOnSubscribe()
, а затем завершить его в onTerminated()
.
Пример может выглядеть примерно так:
long start;
observable()
.doOnSubscribe(() -> start = System.nanoTime())
.doOnTerminate(() -> System.out.println(System.nanoTime() - start));
В качестве альтернативы вы можете следить за тем, что Netflix делает с RxNetty, и вернуть время начала как часть объекта, проходящего через цепочку, и использовать его в конце.