Командная строка Middle Трейсы и OpenTelemetry обновлено

Где тратится время в трейсе

Условие

На stdin спаны одного трейса в произвольном порядке: <span_id> <parent_id или -> <сервис> <имя> <начало_мс> <конец_мс> (в имени нет пробелов). Корневой спан имеет родителя -. Дочерние спаны одного родителя не пересекаются по времени. Собственное время спана: его длительность минус сумма длительностей его прямых детей. Выведите первой строкой total <длительность корня>, затем три спана с наибольшим собственным временем в формате <собственное_мс> <сервис> <имя> (при равенстве по сервису, затем по имени).

Как подойти

Подсказки: 2
  1. Сумма длительностей детей копится по ключу родителя: ch[$2] += $6 - $5.
  2. Корень единственный спан с родителем -.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.