Оценка времени компиляции функций contexPR в режиме отладкиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Оценка времени компиляции функций contexPR в режиме отладки

Сообщение Anonymous »

Я играл со следующим фрагментом кода, чтобы понять Contexpr . < /p>

#include

///////////////////
bool runtimeIsPalindrome(const char* s, int len)
{
if(len < 2)
return true;
else
return s[0] == s[len-1] && runtimeIsPalindrome(&s[1], len-2);
}

///////////////////
constexpr bool compileTimeIsPalindrome(const char* s, int len)
{
return len < 2 ? true : s[0] == s[len-1] && compileTimeIsPalindrome(&s[1], len-2);
}

///////////////////
int main()
{
constexpr char c[] = "helloworlddlrowolleh";
for(size_t nn=0;nn

С помощью Runtimeispalindrome < /code> версия ... < /p>

clear; g++ -std=c++11 plaindrome.cpp; time ./a.out
real 0m8.333s
user 0m8.322s
sys 0m0.005s
< /code>

с CompiletimeIspalIndrome < /code> версия ... < /p>

clear; g++ -std=c++11 plaindrome.cpp; time ./a.out
real 0m8.257s
user 0m8.247s
sys 0m0.004s
< /code>

... но с помощью static_assert (compiletimeispalindrome < /code> версия, которую я действительно, кажется, соблюдаю какое -то время компиляции ... < /p>
< Br />clear; g++ -std=c++11 plaindrome.cpp; time ./a.out
real 0m0.265s
user 0m0.263s
sys 0m0.001s
< /code>

Почему оценка времени компиляции работает только тогда, когда я пробую утверждение в этом примере? < /p>

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

Подробнее здесь: https://stackoverflow.com/questions/221 ... debug-mode
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»