Вычисление, какой компилятор быстрее с точки зрения цикла - PullRequest
1 голос
/ 08 апреля 2019

У меня просто простой вопрос, немного глупый, но мне просто нужно кое-что прояснить для предстоящего экзамена, чтобы я не допустил глупой ошибки.В настоящее время я посещаю занятия по организации и дизайну компьютеров и узнаю о времени выполнения, ИПЦ, тактах и ​​т. Д.

Для решения проблемы я должен рассчитать количество циклов для двух компиляторов и выяснить, какиеодин быстрее и на сколько задано количество инструкций и циклов для каждой инструкции.Моя главная проблема - определить, насколько быстрее работает компилятор.

Например, допустим, это два компилятора:

Compiler 1 has 3 load instructions, 4 store instructions, and 5 add 
instructions.

Compiler 2 has 5 load instructions, 4 store instructions, and 3 add 
instructions 

Инструкция загрузки занимает 2 цикла, инструкция сохранения - 3 цикла, а инструкция добавления - 1 цикл

Итак, что бы я сделал это, сложите инструкции (3 + 4 + 5) и (5 + 4 + 3), которые равны 12 инструкциям.

Затем я вычислил бы циклы, умножив количество инструкций на циклы и сложив их все вместе, как это

Compiler 1: (3*2)+(4*3)+(5*1) = 23 cycles 
Compiler 2: (5*2)+(4*3)+(3*1) = 25 cycles 

Так что, очевидно, компилятор 1 работает быстрее, поскольку он требует меньше циклов.Чтобы узнать, насколько быстрее компилятор 1 против компилятора 2, я бы просто разделил соотношение циклов?

Мои вычисления были 23/25 = 0,92, поэтому компилятор 1 работает в 0,92 раза быстрее, чем компилятор 2 (на 92% быстрее).

Мой одноклассник обсуждал это со мной и утверждал, что это будет 25/23, что означает, что это будет в 1,08 раза быстрее.

Я знаю, что я также могу рассчитать это, разделив циклы по следующим инструкциям:

23 cycles/12 instructions = 1.91 
25 cycles/12 instructions = 2.08 
and then 1.91/2.08 = 0.92 which is the same as the above answer. 

Я не уверен, какой путь будет правильным.

Мне также было интересно, если количество инструкций отличается для второго компилятора, скажем, 15 инструкций.Будет ли достаточно рассчитать соотношение циклов?

Или я должен был бы разделить циклы на инструкции (циклы / инструкции), но поставить 15 инструкций для обоих?

(ex. 23/15 and 25/15?) and then divide the quotients of both to get 
the times faster? I also get the same number(0.92) in that case. 

Спасибо за любые разъяснения.

Ответы [ 2 ]

3 голосов
/ 08 апреля 2019

Первый компилятор будет в 1,08 раза быстрее второго компилятора, что на 8% быстрее (потому что 1,0 + 0,08 = 1,08).

0 голосов
/ 08 апреля 2019

Вероятно, оба вычисления неточны, так как современные / многоядерные процессоры, компилятор, который генерирует больше команд, могут на самом деле создавать более быстрый код.

...