Как запустить трассировку производительности несколько раз параллельно? - PullRequest
1 голос
/ 13 октября 2019

У меня есть трассировка Firebase Performance Monitoring, называемая my_trace.

. Теперь я запускаю эту трассировку при загрузке изображения:

void loadImage() {
  final Trace trace = performance.newTrace("my_trace");
  trace.start();
  // ... (loading that happens asynchronously)
  trace.stop();
}

Это прекрасно работает, когда я пытаюсь загрузитьодно изображение, однако, в моем приложении мне нужно загружать много изображений параллельно.
Это означает, что при загрузке моих изображений появляется следующая ошибка:

Trace 'my_trace' has already started, should not start again!

Как правильно запуститьтрассировать несколько раз параллельно, поскольку я хочу записать производительность каждого отдельного процесса загрузки?

Примечание : я не могу использовать HTTPMetric, поскольку трассировка загрузки также содержит преобразование изображений, а не просто загрузку.

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Трассы разрешены для параллельного запуска. Трассы не индексируются по именам трасс. Пока объект трассировки уникален, вы должны иметь возможность запускать трассировки параллельно. Один и тот же объект трассировки не может быть использован повторно.

Например: (неправильный способ использования объекта трассировки)

final Trace trace = performance.newTrace("my_trace");
trace.start();
trace.start(); // This would not work. Fails with the error message that the trace is already started.
// ... (loading that happens asynchronously)
trace.stop();

Например: правильный путь с использованием одного и того же имени трассировки несколько раз параллельно.

final Trace trace1 = performance.newTrace("my_trace");
final Trace trace2 = performance.newTrace("my_trace");
trace1.start();
trace2.start();
// ... (loading that happens asynchronously)
trace1.stop();
trace2.stop();
0 голосов
/ 13 октября 2019

Как говорится в сообщении об ошибке, в любой момент может быть только одна трасса с уникальным именем. Поэтому вам придется либо дождаться окончания первого my_trace, прежде чем запускать второй (запускать их последовательно, а не параллельно), или вам придется сгенерировать уникальное имя для каждой трассы.

Учитывая структуру API, должно быть возможно разрешить параллельную работу нескольких трассировок с одним и тем же именем. Если вы считаете, что Firebase должен рассмотреть возможность этого, я рекомендую вам подать запрос на добавление функции .

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