Другие языки программирования и технологии

Говорят что ассемблер быстрее СИ в 1000 раз. Это скорость компиляции или использования???

Ведь компьютер понимает только двоичный код и этот код должен исполниться одинаково.
Или это не так??? Тогда почему???
Прямо таки вот в 1000? Не в 250? Не в 710?
Павел Дайновский
Павел Дайновский
4 892
Лучший ответ
На 286-м процессоре такие фокусы можно было проделывать
yakzin
yakzin
87 599
Говорят что кур доят
Алексей Б
Алексей Б
58 351
- Доктор а если я свою жену 15 раз за ночь, это много или мало?
- Это пиз. ёшь!

1000 раз сильно преувеличино. Если грамотный ассемблерщик, то есть шанс что он напишет код, который будет работать быстрее (раза в полтора, до 10 раз максимум). Но разработка будет в разы дольше. И не всегда даже получится сделать на ассемблере код быстрее чем его делает компилятор.
Дмитрий Трубин
Дмитрий Трубин
15 408
На ассемблере можно написать код, который будет быстрее сишного, но!
1. Для этого нужно очень хорошо понимать как это сделать.
2. Это будет справедливо до тех пор, пока не выйдет новый процессор или компилятор Си с нужной оптимизацией.
3. Далеко не в 1000 раз.

Самые крутые случаи, о которых я знаю, давали выигрыш в 8-10 раз при обработке (довольно простой) большого массива данных, когда ассемблерная версия программы устраняла проблемы пробоя кэша в процессоре. И это скорее исключение из правила.

В целом современные Cи комиляторы (могу поручится за gcc и clang-llvm) создают код на очень хорошем уровне, который сложно переплюнуть даже хорошему ассемблерщику.

Ассемблер не компилируется. Он ассемблируется. Действительно намного быстрее сишного кода. Но зато пишется намного медленнее.
Юрий Морозов
Юрий Морозов
4 779
Неизвестно Неизвестно вот ты и попался )))
Неизвестно Неизвестно я имею в виду источник слуха что "Ассемблер не компилируется".
Неизвестно Неизвестно Языки делятся на компиляторы и интерпретаторы. Остальное мелочи как правило не важны
Юрий Морозов Тем не менее, это не делает фразу "компиляция ассемблера" грамотной. Извините. Язык ассемблера может только ассемлбироваться.

Ну и может вы заодно классифицируете вашим бинарным методом для меня такие языки как Java, Perl и Forth?
Неизвестно Неизвестно не имел с ними дела, поэтому классифицировать не берусь. скорее всего я простой безграмотный человек.
Юрий Морозов Ну, на то он и макро =). К тому же я конкретно вас не заставляю ассемблировать ассемблер. А я продолжу при случае xD

Кстати, никогда не использовал этот костыль с invoke, хотя активно пользовался макросами. Он хоть и сокращает листинг, но в ассемблерном коде выглядит... Странно что ли. Цепочка push имхо воспринимается лучше.
Скорость разработки))