Pull to refresh
1
0
Ероха Ерохин @Nanosek

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

Send message

Стандартные аллокаторы - это почти всегда медленно. Помню пришёл я в один проект и мне, как новичку, дали сразу задачу для испытание на прочность - программа лагала при каких-то там обстоятельствах. Я сразу подумал на память и просто заменил для теста стандартный 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‘ах на множестве видеокарт. Только к меня архитектура была связана видеоридером и инференсом нейронки, т.к. декодированные на гпу кадры можно было без выгрузки на цпу передавать нейронке.

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

Information

Rating
Does not participate
Location
Антарктика
Registered
Activity

Specialization

Specialist
Lead
From 1 ₽
HTML