Сколько времени потребовалось для запуска Observable с использованием RxJava (ReactiveX)?

3

Я использую 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)

Как я могу измерить, сколько времени потребовалось для выполнения наблюдаемого?

Благодарим вас заранее

Фрэнсис

Теги:
rx-java
reactive-programming
reactivex

1 ответ

4
Лучший ответ

Вы хотите запустить свой таймер в блоке doOnSubscribe(), а затем завершить его в onTerminated().

Пример может выглядеть примерно так:

long start;
observable()
    .doOnSubscribe(() -> start = System.nanoTime())
    .doOnTerminate(() -> System.out.println(System.nanoTime() - start));

В качестве альтернативы вы можете следить за тем, что Netflix делает с RxNetty, и вернуть время начала как часть объекта, проходящего через цепочку, и использовать его в конце.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню