Скорость выполнения программы на C увеличивается внезапно - PullRequest
0 голосов
/ 30 октября 2018

Я написал программу на C для преобразования температуры из шкалы Фаренгейта в шкалу Цельсия. Когда я запустил свою программу и заметил, что скорость выполнения резко возросла, когда цикл должен был завершиться (что не должно соответствовать моему коду). Я попытался инициализировать цикл с другими значениями, а также изменил окончание цикла, но поведение остается прежним.

Я прикрепляю изображение и публикую ссылку на видео со скоростью исполнения.

Я предоставил видео, чтобы вы могли видеть, что когда цикл пересекает 399999, скорость выполнения увеличивается, и на изображении вы можете увидеть некоторые детали / версию компилятора.

Пожалуйста, скажите мне, почему это происходит. Спасибо.

Ссылка на видео скорости исполнения

Ссылка на изображение моего идеа

Мой код: -

// Program to convert temperature from 
// fahrenheit scale to celsius scale. 

#include <stdio.h>
main()
{
    float faren, celsius;
    for(faren=200000; faren<=900000; faren = faren+20)
    {
        celsius = (5.0/9.0)*(faren-32);
        printf("%.f\t%3.5f\n",faren, celsius);
    }
}

1 Ответ

0 голосов
/ 30 октября 2018

Это только ваша операционная система, выделяющая больше процессорного времени для этого процесса.

В основных терминах и под базовым, я имею в виду действительно базовый, Ваша ОС (в данном случае Windows) устанавливает таймер с заданной продолжительностью, после окончания которого он изменит текущий процесс и переключится на следующий. Вот почему вы чувствуете, что ваш компьютер делает несколько вещей вместе, и вы можете слушать музыку, а также просматривать веб-страницы. (Эта длительность довольно мала и зависит от операционной системы)

Каждый раз, когда операционная система видит, что процесс не завершился в течение данной заданной продолжительности, она будет увеличивать продолжительность ТОЛЬКО для этого процесса, так что в следующий раз, когда наступит очередь этого процесса, у него будет больше времени для завершения.

Теперь, когда ОС увидит, что ваш процесс (Программа, которая выполняется) не завершена после первой продолжительности, в следующий раз она увеличит эту продолжительность для вашего процесса, заставляя ЦП тратить больше времени на ваш процесс.

Это заставит вашу программу (которая не имеет каких-либо ограничений для тактов процессора, потому что это простая программа на C / C ++) через некоторое время ускориться.

...