Я хочу изобразить производительность небольших выражений, я решаю, что использовать. Рассмотрим приведенный ниже код. Может появиться несколько рекурсивных вызовов.Как измерить производительность небольших выражений?
void foo(void) {
i++;
if(etc(ch)) {
//..
}
else if(ch == TOKX) {
p=1;
baa();
c=0;
p=0;
}
//more ifs
}
Вопрос:
Recursives вызовов может случиться foo()
и i
должен увеличиваться только при p
имеет ненулевое значение (это означает, что она будет использоваться в другой части кода) Нужно ли a if(p) i++;
или оставить только i++;
?
Я должен ответить на вопросы, как это, что я ищу какой-то инструмент. Кто-то может поверить, что это «потеря времени» или сказать, что «optmization - корень зла». Но для подобных случаев я не считаю, что это применимо к моей ситуации. ИМХО. Расскажите нам свое мнение, если вы думаете иначе.
«Идеальный» инструмент, способный показать, сколько времени каждый выражение взято для запуска.
Это заставляет меня думать, как отлаживается программное обеспечение в крупнейших компаниях программного обеспечения, таких как IBM, Microsoft, Sun и т. Д. Возможно, это тема для другой темы. Более полезно, что это здесь, я думаю.
Платформа: Должны быть Linux и MS-Windows.
Как вы думаете, у вас есть глобальные переменные, у вас гораздо больше проблем, чем производительность одного оператора if ... –
@R ..: Спасибо за комментарий. Но глобальные переменные действительно нужны. Может быть, потому что проще. Несколько функций, использующих это значение, все называют друг друга рекурсивно. Пропустить каждую копию по параметру можно было бы слишком много стека. Но поскольку вы упомянули об этом, я рассмотрю вопрос о том, будет ли удалять глобальное значение приращения производительности. – Jack
Это будет «** преждевременная» оптимизация - это корень всего зла ». Оптимизация неплохая; ** преждевременная ** оптимизация - означает, что оптимизация, сделанная до того, как вы знаете, что на самом деле вызывает узкое место, - это плохо. –