Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Какие математические операции в программировании самые ресурсоёмкие для компьютеров? Для софта и для железа.

ТехнологииПрограммирование+2
Анонимный вопрос
  ·   · 6,3 K
Веб-разработчик, геймер, специалист по этике  · 5 июл 2022
Классический традиционный ответ конкретно на этот вопрос такой.
  1. Сложение, вычитание и побитовый сдвиг - считаем элементарными в один такт.
  2. Умножение очень дорогое. Целочисленное умножение на степени двойки можно и нужно заменить на побитовый сдвиг.
  3. Деление настолько дорогое, что если существует трюк, чтобы его избежать, стоит применить этот трюк. Целочисленное деление на степени двойки можно и нужно заменить на побитовый сдвиг.
  4. Любая другая математическая операция раскладывается на предыдущие три и нужно смотреть на конкретный алгоритм, чтобы оценить скорость работы. Но вы уже проиграли.
Однако, на современных процессорах, в 2022 году, это больше не такой простой вопрос, как может показаться, а уж ответ на него может быть за пределами понимания обывателя, если честно. Дело в том, что все без исключения современные процессоры - суперскалярные, и операции в них происходят не последовательно, а конвейерами в несколько накладывающихся друг на друга потоков. Плюс к этому сказываются особенности каждой конкретной архитектуры.
Например, для процессоров ARM в разделе Instruction Cycle Timings  - Data Operations из ARM7TDMI Technical Reference Manual r4p1 написано, что на ARM операции с данными выполняются за один цикл, "если не происходит сдвигов". И целая таблица прилагается с разными вариантами того, что происходит, если сдвиги приходится делать. (Я невеликий спец по настолько низкоуровневому программированию, но подозреваю, что Data operations включают в себя базовые ADD и тому подобное). Для умножения прямым текстом написано "инструкция умножения использует специальное аппаратное обеспечение", это на тему того, насколько умножение дорогое на процессоре.
На Intel x86_64 документ по производительности под названием Intel® 64 and IA-32 Architectures Optimization Reference Manual почти что засекречен, но если до него добраться вот с этой страницы, то в разделе Appendix D.3.1 Latency and Throughput with Register Operands можно увидеть таблицу, которая полностью совпадает с примерными правилами, которые я выше указал. 
При этом учтите, что предыдущие таблицы от D-1 до D-16 упоминают невероятное количество различных оптимизированных инструкций для конкретных математических операций - векторизированное сложение, умножение, SSE-шные расширения для всего подряд и тому подобное. Например, на интеловской архитектуре есть инструкция, которая может быть использована для перемножения комплексных чисел. Да, это всё равно четыре умножения и два сложения, вот только реализованы они на кристалле, и выполнятся быстрее чем четыре IMUL и два ADC. 
Это я к тому, что в случае с конкретными архитектурами процессоров понятие "математической операции" может быть размыто. На каких-то процессорах нам придётся сложную операцию делать алгоритмом из нескольких базовых операций, а на каких-то процессорах вся операция уже реализована в камне, и её можно вызвать как единое целое. Со своей собственной латентностью.
1 эксперт согласен
Вот это правильный ответ.
Пишу код и записываю подкаст  · 22 июн 2022  · dreamsorder.simplecast.com
Софт Все компьютерные программы одинаково простые (или сложные, как посмотреть), потому что состоят из довольно ограниченного набора элементарных операций. Их традиционно делят на следующие группы: - 📼 сохранения и загрузки из... Читать далее
«Порядок снов» в ТелеграмеПерейти на t.me/dreamsorder
Openstack DevOps and IBM/Informix Certified DBA...  · 23 февр 2022
Что тормозит любой даже очень дорогой десктоп ( задача локализована для проблем менее глобальных ) - это HDD любой самый наилучший. HDD (WD,Seagate or whichever you choose ) есть единственное в серверном десктопе... Читать далее
1 эксперт не согласен
Это хороший ответ, но на другой вопрос, который автор вопроса не задавал.
Простые числа. Преподаватель с 2001, к.т.н. Яндекс...  · 27 февр 2022
Из простейших математических операций главная "боль" разработчиков - деление с плавающей запятой/точкой. На нее даже завязали показатель производительности ЭВМ - FLOPS. От традиционной схемы "столбиком" отказались, т.к. она... Читать далее
3 эксперта согласны
Инженер путей сообщения – строитель  · 23 февр 2022
Поиск решения систем линейных алгебраических уравнений. На больших задачах, размерностью в десятки миллионов, даже на самых современных компьютерах может занимать несколько часов. Ну и разложение на простые множители. На... Читать далее
3 эксперта согласны
Математика физика история   · 23 июн 2022
Для железа всё довольно просто : все зависит от процесса - каждая команда имеет определённое время выполнения. При программировании может потребоваться использовать типы данных, с которыми процессор не умеет работать. Понятно... Читать далее
2 эксперта согласны
ИБ специалист, web разработчик  · 24 июн 2022
Поиск определителя матрицы + их перемножение, факторизация целых чисел. Над созданием быстрых алгоритмов для решения этих задач не одна сотня математиков  и инженеров трудится. Даже аналоговые вероятностные машины разрабатывают... Читать далее
1 эксперт согласен
Хороший ответ. Дополню ещё тем, что ещё для компьютеров составляют проблему те операции, которые плохо поддаются ра... Читать дальше