Ninja: Время сборки тайминга на субниндзя

Созданный на 22 дек. 2015  ·  9Комментарии  ·  Источник: ninja-build/ninja

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

Я столкнулся с 2 основными проблемами:

  1. Я действительно не могу найти способ определить время целей, кроме времени каждой команды, обернув ее сценарием времени.
  2. Я не могу связать правило с определенным субниндзя.

Есть ли другой способ, кроме времени для каждого модуля?
&
Есть ли способ экспортировать $subninja как переменную, например $out?

С уважением, giorag.

Изменить: если бы было возможно добавить это как функцию в ниндзя (рассчитывая время сборки каждого подмодуля), было бы здорово!

Самый полезный комментарий

Вы также можете просмотреть файл .ninja_log , в котором указано время начала и окончания для всех ребер в первом и втором столбцах.

Все 9 Комментарий

Вы можете добавить фальшивую цель (например, с именем sub_all ) в зависимости от всех целей, определенных в вашем файле subninja. Затем для определения времени вы можете сделать: time ninja sub_all

Моя цель не в том, чтобы засечь время всего процесса сборки, а просчитать время каждого субниндзя отдельно.
Цель этого, в конце концов, состоит в том, чтобы выяснить, почему некоторым субниндзя требуется больше времени, чем обычно, чтобы построить

Думаю, я понял. Когда вы передаете цель в качестве аргумента ниндзя (например, sub_all ), он создает только эту цель.

Вы можете повторить этот процесс для всех ваших субниндзя.

Вы также можете просмотреть файл .ninja_log , в котором указано время начала и окончания для всех ребер в первом и втором столбцах.

Он указан во всех версиях ниндзя? Моя версия ниндзя наверное
1.3 что ли...

2015-12-28 20:22 GMT+02:00 Илья Попов, [email protected] :

Вы также можете посмотреть файл .ninja_log, в котором перечислены начало и конец
раз для всех ребер в первом и втором столбцах.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/ninja-build/ninja/issues/1080#issuecomment-167620057 .

Я только что проверил 1.3.4, и это так. Что ты видишь в своих .ninja_log ? Что он говорит в первой строке (которая является комментарием)? Это " # ninja log v5 "?

Меня сейчас нет на рабочем месте, завтра отвечу

2015-12-29 11:54 GMT+02:00 Илья Попов, [email protected] :

В 1.3.4 есть. Что вы видите в своем .ninja_log? Что он говорит в
первая строка (которая является комментарием)? Это "#ниндзя лог v5"?


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/ninja-build/ninja/issues/1080#issuecomment-167758376 .

См. также https://groups.google.com/forum/#!topic/ninja -build/aD82sxwD3_o - больше похоже на вопрос в службу поддержки, чем на проблему в самом ниндзя, поэтому закрываю это.

Вот некоторые материалы AWK, которые показывают время сборки для каждой цели, усредненное по вашей истории сборки.

#!/usr/bin/awk -f

!/^#/ {
    TIMES[$4] += ($2 - $1)/1000
    COUNT[$4] += 1
}

END {
    for (TGT in TIMES)
        AVG[TGT]=TIMES[TGT]/COUNT[TGT]
    asorti(AVG, SORTED, "@val_num_desc")
    for (num in SORTED)
        print AVG[SORTED[num]] " " SORTED[num]
}

После сохранения, скажем, как show-ninja-build-stats где-нибудь в вашем $PATH и chmod +x -ing его, вы можете просто запустить show-ninja-build-stats < .ninja_log в своем каталоге сборки.

Спасибо за совет по проверке этого файла журнала, @ilyapopov.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги