Стандартные аллокаторы - это почти всегда медленно. Помню пришёл я в один проект и мне, как новичку, дали сразу задачу для испытание на прочность - программа лагала при каких-то там обстоятельствах. Я сразу подумал на память и просто заменил для теста стандартный malloc на tbb malloc и это уже дало огромный буст производительности. В итоге потом так и оставили его.
Согласен, что вкусовщина. На счет регистров, мой пример не совсем "безопасный" в реальной программе так делать не стоит, а стоит указать компилятору какие мы регистры заюзали типа так asm("imul %r10, %r10" ::: "r10")
Действительно придется покопаться с настройками компилятора, чтобы вышло то что нужно :) Но мне удалось добиться приемлемого выхлопа компилятора с флагом -O1
Уже никто из уважающих себя разработчиков не идет работать в яндекс. А что там делать? Зп низкие, а требования очень высокие, при этом работать там надо на 200%. Тот яндекс который когда то был, куда все хотели попасть ради отметки в трудовой, что ты работал в Яндексе, после чего тебе все двери были открыты, такого уже давно нет.
Мне они постоянно спамят во все мессенджеры, с предложениями по работе, отказов не понимают, даже грубых. Что говорит о явном дефиците кадров.
Недавно как раз решил написать свой плагин для vscode к С++ со своими фишками и вспомогательными функциями, взял за основу clangd сервер, по пути заодно освоил тайпскрипт и протокол лсп. В целом интересная штука.
Имел опыт создание такого же проекта с видеопотоками и трекингом обьектов. Только я изначально стал писать на С++ и реализовал свои так называемые видеоридеры через ffmpeg api + nvidia codec sdk, все это работало в параллельных cuda steam‘ах на множестве видеокарт. Только к меня архитектура была связана видеоридером и инференсом нейронки, т.к. декодированные на гпу кадры можно было без выгрузки на цпу передавать нейронке.
На питоне можно делать только прототип проекта чтоб быстро на коленке что-то накалякать, для серьезных продакшен задач он не подходит. Да он вообще до мало чего подходит, если честно. Единственный его плюс это легкий вкат для новичков
Стандартные аллокаторы - это почти всегда медленно. Помню пришёл я в один проект и мне, как новичку, дали сразу задачу для испытание на прочность - программа лагала при каких-то там обстоятельствах. Я сразу подумал на память и просто заменил для теста стандартный malloc на tbb malloc и это уже дало огромный буст производительности. В итоге потом так и оставили его.
Согласен, что вкусовщина. На счет регистров, мой пример не совсем "безопасный" в реальной программе так делать не стоит, а стоит указать компилятору какие мы регистры заюзали типа так asm("imul %r10, %r10" ::: "r10")
Действительно придется покопаться с настройками компилятора, чтобы вышло то что нужно :) Но мне удалось добиться приемлемого выхлопа компилятора с флагом -O1
В целом разделяю такую позицию, но мне кажется на С\С++ было бы нагляднее для статьи, но это только моё субъективное мнение :)
А так на самом деле можно было бы более элегантно сделать, вот мой пример кода
необязательно использовать расширенные ассемблерные вставки с чтением регистров, их значения нам все равно не важны.
Не особо понял зачем тут нужно было использовать ассемблер. В компиляторах Си можно отключить всяческие оптимизации и будет тоже самое.
Уже никто из уважающих себя разработчиков не идет работать в яндекс. А что там делать? Зп низкие, а требования очень высокие, при этом работать там надо на 200%. Тот яндекс который когда то был, куда все хотели попасть ради отметки в трудовой, что ты работал в Яндексе, после чего тебе все двери были открыты, такого уже давно нет.
Мне они постоянно спамят во все мессенджеры, с предложениями по работе, отказов не понимают, даже грубых. Что говорит о явном дефиците кадров.
Недавно как раз решил написать свой плагин для vscode к С++ со своими фишками и вспомогательными функциями, взял за основу clangd сервер, по пути заодно освоил тайпскрипт и протокол лсп. В целом интересная штука.
Имел опыт создание такого же проекта с видеопотоками и трекингом обьектов. Только я изначально стал писать на С++ и реализовал свои так называемые видеоридеры через ffmpeg api + nvidia codec sdk, все это работало в параллельных cuda steam‘ах на множестве видеокарт. Только к меня архитектура была связана видеоридером и инференсом нейронки, т.к. декодированные на гпу кадры можно было без выгрузки на цпу передавать нейронке.
На питоне можно делать только прототип проекта чтоб быстро на коленке что-то накалякать, для серьезных продакшен задач он не подходит. Да он вообще до мало чего подходит, если честно. Единственный его плюс это легкий вкат для новичков