Обновить
1
Ероха Ерохин@Nanosek

Ведущий HTML программист

Отправить сообщение

Стандартные аллокаторы - это почти всегда медленно. Помню пришёл я в один проект и мне, как новичку, дали сразу задачу для испытание на прочность - программа лагала при каких-то там обстоятельствах. Я сразу подумал на память и просто заменил для теста стандартный malloc на tbb malloc и это уже дало огромный буст производительности. В итоге потом так и оставили его.

Согласен, что вкусовщина. На счет регистров, мой пример не совсем "безопасный" в реальной программе так делать не стоит, а стоит указать компилятору какие мы регистры заюзали типа так asm("imul %r10, %r10" ::: "r10")

Действительно придется покопаться с настройками компилятора, чтобы вышло то что нужно :) Но мне удалось добиться приемлемого выхлопа компилятора с флагом -O1

В целом разделяю такую позицию, но мне кажется на С\С++ было бы нагляднее для статьи, но это только моё субъективное мнение :)

А так на самом деле можно было бы более элегантно сделать, вот мой пример кода

#include <iostream>
#include <chrono>

using namespace std;

int main() {
        auto tm_start = chrono::high_resolution_clock::now();

        for (uint64_t i = 0; i < 100000000; ++i)
        {
            asm volatile("imul %r10, %r10");
            asm volatile("imul %r11, %r11");
            asm volatile("imul %r11, %r11");
        }

        auto elapsed = chrono::duration_cast<chrono::nanoseconds>(std::chrono::high_resolution_clock::now() - tm_start);

        cout << "elapsed ns " << elapsed.count() << endl;

    return 0;
}

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

Не особо понял зачем тут нужно было использовать ассемблер. В компиляторах Си можно отключить всяческие оптимизации и будет тоже самое.

Уже никто из уважающих себя разработчиков не идет работать в яндекс. А что там делать? Зп низкие, а требования очень высокие, при этом работать там надо на 200%. Тот яндекс который когда то был, куда все хотели попасть ради отметки в трудовой, что ты работал в Яндексе, после чего тебе все двери были открыты, такого уже давно нет.

Мне они постоянно спамят во все мессенджеры, с предложениями по работе, отказов не понимают, даже грубых. Что говорит о явном дефиците кадров.

Недавно как раз решил написать свой плагин для vscode к С++ со своими фишками и вспомогательными функциями, взял за основу clangd сервер, по пути заодно освоил тайпскрипт и протокол лсп. В целом интересная штука.

Имел опыт создание такого же проекта с видеопотоками и трекингом обьектов. Только я изначально стал писать на С++ и реализовал свои так называемые видеоридеры через ffmpeg api + nvidia codec sdk, все это работало в параллельных cuda steam‘ах на множестве видеокарт. Только к меня архитектура была связана видеоридером и инференсом нейронки, т.к. декодированные на гпу кадры можно было без выгрузки на цпу передавать нейронке.

На питоне можно делать только прототип проекта чтоб быстро на коленке что-то накалякать, для серьезных продакшен задач он не подходит. Да он вообще до мало чего подходит, если честно. Единственный его плюс это легкий вкат для новичков

Информация

В рейтинге
Не участвует
Откуда
Антарктика
Зарегистрирован
Активность

Специализация

Специалист
Ведущий
От 1 ₽
HTML