Closed petsernik closed 3 years ago
Добавил строчку, которая соответствует трём тактам, в цикл с 1e4 итерациями, а выполнение цикла увеличилось на 4e4 такта, что тоже кажется подозрительным
Мой вывод получился такой, x:=0
(в общем виде <var> <assignOp> <var>
) выполняется за 4 такта (что отвечает на все мои предыдущие вопросы), вот примеры тестов, которые я делал:
здесь 10 присваиваний:
а вот здесь уже 100:
Действительно, разобрались в чате и выяснили, что каждая строка выполняется на один такт больше, чем стоимость в тактах, написанная в interpr -d
. (Кроме фора, который вообще особый случай.)
Теперь вопрос: как предлагается это исправить и почему?
Продолжение в #32.
Выполним какую-нибудь простую операцию, например,
a.pr
x:=0
с помощью цикла несколько раз, посмотрим сколько тактов выводит при этом программа с помощью командыinterpr -d program.pr
со случайными входными данными. По идее оба представленных ниже кода должны выполняться за 9e4 такта (i:=0; i<1e4; x:=0; i+=1; i<1e4; x:=0; i+=1;...
), а выполняются за 12e4. Получается, что в каждой итерации цикла 3 каких-то лишних такта учитываются. Почему так?b.pr