Ведь каждая из эти операции делается за свое определенное число таков ЦП. Та же операция деления самая затратная
И вообще, я не понимаю если честно
У меня частота процессора 3.8 ГГц. Я в матлаб ввел цикл с 3 800 000 000 операций a=a+1. По логике, он должен за секунду управляться. Но, нет, tic toc показывает 3 сек. Почему?
Другие языки программирования и технологии
Почему в матлабе операции + - * и / производятся за одинаковое время?
Это 1 такт, но операции сами длиной и много тактов бывают
https://habr.com/ru/company/otus/blog/343566/
Да, а если множество ядер, то может и распараллеливается что-то
https://habr.com/ru/company/otus/blog/343566/
Да, а если множество ядер, то может и распараллеливается что-то
Алексей Митрофанов
Нет, матлаб это одноядерная прога. Одна вкладка - одно ядро
>По логике, он должен за секунду управляться.
А что с загрузкой данных в регистры и выгрузкой результата в память после каждой операции? Добавь еще 2 mov'а - вот и получишь свои 3 секунды.
А что с загрузкой данных в регистры и выгрузкой результата в память после каждой операции? Добавь еще 2 mov'а - вот и получишь свои 3 секунды.
Во первых, тактовая частота не имеет однозначной связи со скоростью выполнения команд: каждая команда выполняется несколько тактов, но при этом на одном ядре процессора одновременно могут выполняться несколько команд (конвейер).
Во вторых, Матлаб - не компилятор, генерирующий машинный код. И выполнение в нём каждой команды - это достаточно большой блок программного кода, в котором собственно сложение или умножение занимает очень незначительную часть времени выполнения. Потому ты разницу и не видишь.
Во третьих, a=a+1 - это не одна операция, а три: прочитать значение из a, увеличить его на 1, записать значение в a.
Во вторых, Матлаб - не компилятор, генерирующий машинный код. И выполнение в нём каждой команды - это достаточно большой блок программного кода, в котором собственно сложение или умножение занимает очень незначительную часть времени выполнения. Потому ты разницу и не видишь.
Во третьих, a=a+1 - это не одна операция, а три: прочитать значение из a, увеличить его на 1, записать значение в a.
Aleksej Ott
a=a+1 компилятор должен суметь соптимизировать до инкремента и регистров (если бы речь шла не о матлабе), а вот отдельно нужно еще просчитать затраты на обслуживание цикла
Тут много факторов.
Как уже сказали - не факт, что команда будет выполнятся один такт. Надо ещё число в регистр положить, выполнить с ним операцию сложения, может обратно в память положить.
Во вторых, по идее может выполнится и быстрее, код может распараллелится на несколько потоков + другие оптимизации.
В третьих процессор не обязан выполнять исключительно твою программу, он может прерваться на другие задачи. Тут как операционная система решит.
Матлаб - не лучший язык для подобных проверок. Он рассчитан на работу с матрицами (MATLAB - Matrix Laboratory), что может оказать влияние на расчёты + интерпретируемый. Лучше подобное в Си такое проворачивать.
Как уже сказали - не факт, что команда будет выполнятся один такт. Надо ещё число в регистр положить, выполнить с ним операцию сложения, может обратно в память положить.
Во вторых, по идее может выполнится и быстрее, код может распараллелится на несколько потоков + другие оптимизации.
В третьих процессор не обязан выполнять исключительно твою программу, он может прерваться на другие задачи. Тут как операционная система решит.
Матлаб - не лучший язык для подобных проверок. Он рассчитан на работу с матрицами (MATLAB - Matrix Laboratory), что может оказать влияние на расчёты + интерпретируемый. Лучше подобное в Си такое проворачивать.
Похожие вопросы
- Почему компоненты современных компьютеров не производятся на базе 3-ой, 4-ой и др. систем счисления?
- Почему не написать код, чтобы мат, еще во время написания, исчезал?
- Время выполнения операций, оценка...? С++
- Матлаб
- Матлаб guide, не считает символ деление
- Как сортировать столбцы Exel с одинаковыми значениями?
- Операции new и delete. Операции new и delete нужна теори про данные операции.
- Помогите, проблемма с операцией "или" \!\!
- За сколько тактов выполняются основные арифметические операции на современных компьютерах?
- Программу возведения числа в четвертую степень за 2 операции Pascal