Смотря как писать. Современные процессоры настолько сложны, что учесть всевозможные тонкости связанные с кэш-промахами, разбалансированностью конвейеров и т. д. чрезвычайно сложно учесть - компилятор с этим справится лучше. На практике может иметь смысл делать ассемблерные вставки только в самые внутренние циклы, выполняющиеся очень много раз и только если понимаешь что как сделать лучше, чем компилятор.
Хотя, если честно, как то раз смотрел свою программу после компиляции.. . Тихий ужас - какие то инициализации буферов постоянные ненужные, обмен регистрами перед сложением - в общем не самый оптимальный код получился. Правда это в дебаг-версии в 5 студии. Так что если действительно надо обрабатывать большое количество информации - можно поковырять что компилятор накрутил, после того, как израсходованы все другие пути - оптимизация алгоритмов и пр.
С другой стороны, сейчас, когда мир активно на НЕТ переходит.. . Что то оптимизировать вообще.. . Фи, дурной тон.. . :-)
Другие языки программирования и технологии
Ускоряют ли работу кода вставки на ассэмблере (С++)
Для сложения двух чисел - нет. Вставки на ассемблере ускоряют работу в более сложных случаях, когда компилятор может создать не оптимальный код.
Реально мало где ускоряют вставки ассемблера, особенно если код написан на Си под платформу X86. В случае с С++ будет небольшое увеличение скорости, но оптимизировав сам код на С++ можно зачастую получить больший прирост. Но вообще-то ассемблер нужен, например: для низкоуровневого доступа к оборудованию, прерываниям процессора, обработки цифровых сигналов, программмирования контролеров. В программу где происходят вычисления вставки на асме не стоит делать, нужно оптимизировать алгоритмы, выбирать самые быстрые или самые менее трудоемкие, прикладная математика и логика должна быть задействована.
Если вот такой простой пример:
int a, b, с;
a = 5; b = 5;
c = a + b;
вы напишете в таком виде:
EAX 5
EBX 5
ADD EAX, EBX
то это будет выполняться одинакого, т. к. компилятор такие элементарные веши сам
оптимизирует.
Но в большенстве случаев они значительно ускоряют работу.
int a, b, с;
a = 5; b = 5;
c = a + b;
вы напишете в таком виде:
EAX 5
EBX 5
ADD EAX, EBX
то это будет выполняться одинакого, т. к. компилятор такие элементарные веши сам
оптимизирует.
Но в большенстве случаев они значительно ускоряют работу.
Конечно ускоряют
Похожие вопросы
- Ассемблерная вставка в С .Странный код. Можете расшифровать?
- Ассэмблер нужна помощь
- Задача на ассэмблере
- подскажите безопасную програму для чистки реестра, чтоб ускоряла работу компютера, и не навредила ему!!!
- Сортировка простыми вставками.
- КОМПАС - 3D/Вставка изображения/преобразования в чертеж
- Помогите, пожалуйста, написать программу на делфи с ассемблерными вставками.
- Сортировка простыми вставками. Язык Си.
- Вопрос по основам машинного кода и бинарного кода. Как это работает в своей основе?
- Что сложного в работе программиста? Почему написать код могут не все, если код весь на английском языке??