Просмотр полной версии : Опубликованы тесты простейших приложений на различных языках программирования.
Джефф Мэррисон (Jeff Marrison), автор реализованной на ассемблере x86_64 свободной (GPLv3) библиотеки HeavyThing (https://2ton.com.au/HeavyThing/), предлагающей в том числе реализации протоколов TLS 1.2 и SSH2, опубликовал (https://2ton.com.au/videos/tvs_part1/) видео под названием «Зачем писать на ассемблере?». В видео приводятся результаты тестирования при помощи утилит perf и strace простейшего приложения (вывод 'hello'), написанного на 13 языках программирования.
Фактически, сравниваются затраты на загрузку исполняемого образа и инициализацию сред выполнения для языков Assembler, C, C++, Go, Rust, Python, Perl, TCL, Java, PHP, NodeJS, Ruby и Bash. Использованные в видео примеры доступны для загрузки (https://2ton.com.au/videos/tvs_part1/part1.tar.gz).
https://2ton.com.au/videos/tvs_part1/tvs_part1.mp4
8.12.2019
http://www.opennet.ru/opennews/art.shtml?num=51992
DartPhoenix
08.12.2019, 17:58
АСМ по умолчанию, при правильном использовании не может быть ТОЧНО хуже того что написано на другом ЯП. Вопрос может быть ТОЛЬКО в трудоемкости.
Хочешь быстрее выделять память ? Сделай себе менеджер памяти. Хочешь быстрее выполнять код - оптимизируй код под процессор.
Да, на высокоуровневом языке ты один раз напишешь код и он будет оттранслирован в код под нужный процессор. Т.е. трудоемкость уменьшается в десятки раз. Но... нет. Лучше чем на асме - написать нельзя.
В конце-концов возьми код их виртуальной машины (например тот же ДотНет) и открой в IDA. Там будет асм. И этот код можно написать на асме лучше чем он есть сейчас. Но сложнее, дольше, геморней. Волосы у тебя повыпадут не только из жопы, у тебя и ресницы повыпадут. Но написать лучше можно.
=======================
Сравнивал как-то код на дотнете и на С++.
Циклы дотнет хавает просто божественно. И на асме за ним не угонишься ибо если дело касается какого-нибудь malloc - Дотнет отрабатывает просто моментально. Намного быстрее. Но... когда начинается какой-то сплошной участок - он даже и рядом не стоял.
Изначально глупо сравнение в скорости между асмом и "чем-то еще" ибо "что-то еще" в любом случае превращается в машинный код = асм.
DartPhoenix
08.12.2019, 18:26
В примере еще одна некорректность. Он слишком мал.
Си в самом начале подгружает кучу всякого барахла для своей работы. Тоесть на этом временном промежутке он явно отстает. И все будут отставать ибо это этап подготовки к работе. В асме его нет (в данном примере точно) так что тут и замерять нечего. Ежу понятно что конечно он будет быстрее на этом этапе. Лишние подготовительные этапы и прочие системные вызовы безусловно будут стопорить скорость испытуемого в самом начале, но в общем-то это такая себе жертва в угоду эффективности. Если и дальше продолжать код на асме без усовершенствований (например менеджера памяти) - плюсы с бустом (буст еще дольше будет грузиться вначале) - обгонят его как несмышленого котенка.
Замер требуется производить по какой-нибудь отмашке. Типо on_button_click какой-либо.
DartPhoenix
08.12.2019, 18:54
Вообще так если подумать... эти замеры половых органов и языков погромирования - это сравнения сладкого с прямоугольным. Какбэ... х/з.
Напишешь эффективный код на асме под x86 - молодец. Точно такой же код на плюсах будет сосать где-то вдалеке позади. Но. Под x64 тебе на асме надо будет писать другой код. А на плюсах - просто откомпилить и он будет работать.
На питоне ты за плюсами никогда не угонишься, но зато код на питоне могут юзать и на Маке и на Венде... да хоть на Ведроиде. На Асме - тебе придется писать код под каждую платформу. И именно писать ибо там переписывать дохуя. (хотя можно подумать о макросах каких-то но все-равно... это очень геморно).
И тут какбэ "что быстрее ?" да хрен его знает. Пожалуй парсить веб я буду лучше на Питоне, писать какой-то средний кодес на плюсах а системный на асме. И нет тут какбэ особого сравнения.
================================================== ====
Каждому инструменту - свое место. Можно-ли срубить дерево хирургическим скальпелем ? Ну.... наверное можно я не пробовал. Асм - скальпель. Им можно наверное рубить деревья но это будет глупо. Рубить деревья проще всего Питоном. И далее в таком духе.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot