Мне нужно рассчитать, сколько времени уходит на постройку каждого субниндзя.
Есть ли другой способ, кроме времени для каждого модуля?
&
Есть ли способ экспортировать $subninja как переменную, например $out?
С уважением, giorag.
Изменить: если бы было возможно добавить это как функцию в ниндзя (рассчитывая время сборки каждого подмодуля), было бы здорово!
Вы можете добавить фальшивую цель (например, с именем 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.
Самый полезный комментарий
Вы также можете просмотреть файл
.ninja_log
, в котором указано время начала и окончания для всех ребер в первом и втором столбцах.