EDIT:
Я хотел бы поблагодарить вас всех за быстрые ответы ^^ Sleep () работает, как и предполагалось, и мой процессор больше не поглощается этой программой! Я оставлю этот вопрос как есть, но чтобы все знали, что проблема с процессором была решена целесообразно и профессионально: D
Помимо этого, я обязательно позабочусь о том, чтобы микрооптимизации были сведены к минимуму перед лицом более крупных и важных проблем!
=============================================== =================================
По какой-то причине моя программа, консольный будильник, который я сделал для смеха и практики, чрезвычайно загружает процессор. Он потребляет около 2 МБ оперативной памяти, что уже довольно мало для такой маленькой программы, но иногда он опустошает мой процессор с более чем 50% ресурсов.
Большую часть времени моя программа ничего не делает, кроме обратного отсчета секунд, поэтому я полагаю, что эта часть моей программы вызывает большую нагрузку на мой процессор, хотя я не знаю почему. Если это так, не могли бы вы порекомендовать способ сделать его на меньше , или, возможно, использовать библиотеку вместо этого, если проблема не может быть легко решена?
/* The wait function waits exactly one second before returning to the *
* called function. */
void wait( const int &seconds )
{
clock_t endwait; // Type needed to compare with clock()
endwait = clock() + ( seconds * CLOCKS_PER_SEC );
while( clock() < endwait ) {} // Nothing need be done here.
}
В случае, если кто-нибудь просматривает CPlusPlus.com, это подлинная функция копирования / вставки функции clock (), которую они написали в качестве примера для clock (). Многое почему комментарий //Nothing need be done here
такой тусклый. Я не совсем уверен, что именно часы () делает.
Остальная часть программы вызывает две другие функции, которые активируются только каждые шестьдесят секунд, в противном случае возвращаются к вызывающему и отсчитывают еще одну секунду, так что я не думаю, что это слишком сильно загружает процессор - хотя я бы не знал, это моя первая попытка оптимизации кода.
Первая функция - очистка консоли с использованием system("cls")
, которая, я знаю, действительно очень медленная и не очень хорошая идея. Я буду менять эту поспешность, но, поскольку она активируется только каждые 60 секунд, и наблюдается заметный скачок задержки, я знаю, что это не проблема в большинстве случаев.
Вторая функция перезаписывает содержимое экрана с обновленным оставшимся временем также только каждые шестьдесят секунд.
Я отредактирую функцию, которая вызывает wait, clearScreen и отображает, если ясно, что эта функция не является проблемой. Я уже пытался ссылаться на большинство переменных, чтобы они не копировались, а также избегать endl
, так как я слышал, что это немного медленнее по сравнению с \n
.