0iStalker
> Настолько плохо с фантазией?! Заработать можно и вполне легально
А делать трещотки тоже вполне легально, лицензия на разработку обойдётся в пределах 500кр. Ну и прочая бумажная волокита. Лобаев армс и всякие там Атаманы РСР или непомню как там, неважно... очень даже частники.
Настроение дня!


Вот сегодня такое настроение, в стиле: "Кто молодец? Я молодец! (повторить 10 раз)".
Ты сегодня, конечно же молодец.
Только в чём ?
gmake
Это не молодец, это Т-поза.
Похоже :)
На фото один и тот же человек?
На фото два молодца.
Doctor_Bro.
> На фото один и тот же человек?
Оружейный магнат и *****барон.
ronniko
> Ты сегодня, конечно же молодец.
> Только в чём ?
Спасибо.
Просто молодец, без всяких видимых причин.
Разработчики проекта FFmpeg добились 100х производительности в rangedetect8_avx512, благодаря ассемблерному коду.
https://habr.com/ru/news/929428/
Исходный код фильтра был переписан с использованием концепции обработки SIMD (Single Instruction, Multiple Data) для значительно улучшенной параллельной обработки на современных мощных процессорах. Очевидно, что компиляторы — программы, которые берут код на языке высокого уровня и выдают ассемблерный (машинный) код — всё ещё не могут конкурировать с рукописным ассемблером. Или, как написали в команде FFmpeg, можно сказать: «распределитель регистров — отстой для компиляторов».
Какая радость.
компиляторы всё ещё не могут конкурировать с рукописным ассемблером.

ronniko
> компиляторы всё ещё не могут конкурировать с рукописным ассемблером.
годный пример неделанья предварительной оптимизации.
сначала пишешь на Си на высоком уровне, убеждаешься, что работает.
раскурчиваешь продукт.
...и уже потом, отпимизируешь и гнёшь пальцы.
Т.е. порядок такой: сначала сделать, а уже потом обмазывать ассемблером.
skalogryz
> Т.е. порядок такой: сначала сделать, а уже потом обмазывать ассемблером.
И только в тех местах, где код вызывается наиболее часто
gmake
> Вот сегодня такое настроение
Если бы они на обычный ассемблер переписали и сравнили, а то компиляторы векторизовать могут пока еще не все.
100-кратное ускорение скорее даже не про векторизацию, а про какую то хитрую инструкцию в один присест перемешивающую биты.
По ссылкам можно прочитать, что на avx2 прирост был в 64 раз. Т.е. удвоение числа бит за раз как и положено заметно меньше чем в 2 раза увеличивает производительность.
Так что там явно подвох в каком то экзотическом перемешивании бит на что код без экзотической инструкции вынужден гонять циклы десятками.
Ха, кажется нашел референсную реализацию этой функции на си: https://ffmpeg.org/doxygen/trunk/vf__colordetect_8h_source.html#l00056
Тут действительно чувствуется, что есть большой потенциал у векторных штук типа сравнений, сатурации и т.п. Очень похоже, что ядро проверки в цикле даже от sse сильно бы выиграло. А в avx возможно реально за одну-две команды выполняется.
Правда стократ выглядят странно, в кеш должно же упираться.