Опубликованы тесты простейших приложений на различных языках программирования.

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 8 Dec 2019.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    Джефф Мэррисон (Jeff Marrison), автор реализованной на ассемблере x86_64 свободной (GPLv3) библиотеки HeavyThing, предлагающей в том числе реализации протоколов TLS 1.2 и SSH2, опубликовал видео под названием «Зачем писать на ассемблере?». В видео приводятся результаты тестирования при помощи утилит perf и strace простейшего приложения (вывод 'hello'), написанного на 13 языках программирования.

    Фактически, сравниваются затраты на загрузку исполняемого образа и инициализацию сред выполнения для языков Assembler, C, C++, Go, Rust, Python, Perl, TCL, Java, PHP, NodeJS, Ruby и Bash. Использованные в видео примеры доступны для загрузки.

    https://2ton.com.au/videos/tvs_part1/tvs_part1.mp4

     
  2. DartPhoenix

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    1,019
    Likes Received:
    7,618
    Reputations:
    24
    АСМ по умолчанию, при правильном использовании не может быть ТОЧНО хуже того что написано на другом ЯП. Вопрос может быть ТОЛЬКО в трудоемкости.

    Хочешь быстрее выделять память ? Сделай себе менеджер памяти. Хочешь быстрее выполнять код - оптимизируй код под процессор.
    Да, на высокоуровневом языке ты один раз напишешь код и он будет оттранслирован в код под нужный процессор. Т.е. трудоемкость уменьшается в десятки раз. Но... нет. Лучше чем на асме - написать нельзя.

    В конце-концов возьми код их виртуальной машины (например тот же ДотНет) и открой в IDA. Там будет асм. И этот код можно написать на асме лучше чем он есть сейчас. Но сложнее, дольше, геморней. Волосы у тебя повыпадут не только из жопы, у тебя и ресницы повыпадут. Но написать лучше можно.
    =======================
    Сравнивал как-то код на дотнете и на С++.
    Циклы дотнет хавает просто божественно. И на асме за ним не угонишься ибо если дело касается какого-нибудь malloc - Дотнет отрабатывает просто моментально. Намного быстрее. Но... когда начинается какой-то сплошной участок - он даже и рядом не стоял.

    Изначально глупо сравнение в скорости между асмом и "чем-то еще" ибо "что-то еще" в любом случае превращается в машинный код = асм.
     
    Suicide likes this.
  3. DartPhoenix

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    1,019
    Likes Received:
    7,618
    Reputations:
    24
    В примере еще одна некорректность. Он слишком мал.
    Си в самом начале подгружает кучу всякого барахла для своей работы. Тоесть на этом временном промежутке он явно отстает. И все будут отставать ибо это этап подготовки к работе. В асме его нет (в данном примере точно) так что тут и замерять нечего. Ежу понятно что конечно он будет быстрее на этом этапе. Лишние подготовительные этапы и прочие системные вызовы безусловно будут стопорить скорость испытуемого в самом начале, но в общем-то это такая себе жертва в угоду эффективности. Если и дальше продолжать код на асме без усовершенствований (например менеджера памяти) - плюсы с бустом (буст еще дольше будет грузиться вначале) - обгонят его как несмышленого котенка.

    Замер требуется производить по какой-нибудь отмашке. Типо on_button_click какой-либо.
     
    Suicide likes this.
  4. DartPhoenix

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    1,019
    Likes Received:
    7,618
    Reputations:
    24
    Вообще так если подумать... эти замеры половых органов и языков погромирования - это сравнения сладкого с прямоугольным. Какбэ... х/з.

    Напишешь эффективный код на асме под x86 - молодец. Точно такой же код на плюсах будет сосать где-то вдалеке позади. Но. Под x64 тебе на асме надо будет писать другой код. А на плюсах - просто откомпилить и он будет работать.
    На питоне ты за плюсами никогда не угонишься, но зато код на питоне могут юзать и на Маке и на Венде... да хоть на Ведроиде. На Асме - тебе придется писать код под каждую платформу. И именно писать ибо там переписывать дохуя. (хотя можно подумать о макросах каких-то но все-равно... это очень геморно).

    И тут какбэ "что быстрее ?" да хрен его знает. Пожалуй парсить веб я буду лучше на Питоне, писать какой-то средний кодес на плюсах а системный на асме. И нет тут какбэ особого сравнения.

    ======================================================
    Каждому инструменту - свое место. Можно-ли срубить дерево хирургическим скальпелем ? Ну.... наверное можно я не пробовал. Асм - скальпель. Им можно наверное рубить деревья но это будет глупо. Рубить деревья проще всего Питоном. И далее в таком духе.
     
    Suicide likes this.