Если против фильтра в Сравнении производительности RxJS - PullRequest
0 голосов
/ 08 февраля 2019

Рассмотрим пример с RxJS.

Тип A: [с использованием фильтра]

this.userService.afAuth.authState
      .pipe(filter(user => !!user))
      .subscribe( _ => this.router.navigate(["/anything"]) )

Тип B: [используя if]

this.userService.afAuth.authState
      .subscribe( user => {
        if(!!user) this.router.navigate(["/anything"])
       })

Q1. Как мы можем сравнить производительность?

Q2. Что рекомендуетсяа почему?

1 Ответ

0 голосов
/ 08 февраля 2019

Q1 .Как мы сравниваем производительность?

Вы можете использовать https://jsperf.com/ для создания теста производительности.Я могу вам сказать, что «Тип B» должен работать лучше, потому что задействовано меньше вызовов функций.Это будет заметно только в том случае, если вы часто вызываете функцию действительно (возможно, при 10000 вызовов / секунду в качестве приблизительной оценки).Для типичных случаев использования разницы не будет.

Q2 .Что рекомендуется и почему?

С точки зрения дизайна, рекомендуется «Тип А».Он имеет более декларативный синтаксис и поэтому его легче заменить или использовать повторно.Например, ваш filter канал может быть извлечен в многоразовый канал и использован несколько раз.Если в какой-то момент ваш предикат изменится, вам придется изменить его только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...