cyber
следующий уровень распараллелить алгоритм?..)
Micktu 😬
да :)))))
Крылатый
А, вкурил.
Micktu 😬
так что вот оптимальная версия
for (char c : in)
{
if (c != '\r' && c != '\n')
{
out[i++] = c;
continue;
}
if (c == '\n')
{
out[i++] = '\\';
out[i++] = 'n';
}
}
Artem
Местами поменяй и элс воткни
Micktu 😬
для красоты можго написать == \r conrinue чтобы убрать скобки
Artem
И одно условие в конъюнкции исчезнет
Micktu 😬
условие не н и не р должно обрабатываться первым
Micktu 😬
это 90% символов в строке
Micktu 😬
М И К Р О О П Т И М И З А Ц И И
Artem
И что ты оптимизируешь, у тебя все равно есть явное сравнение с \n
Daniil
а как на винде получить id окна?
Artem
Только так оно два раза.
Micktu 😬
я думаю ты его не заметил
Daniil
в лялихе есть для иксов xwininfo
Micktu 😬
это когда == '\r'
Artem
Я думаю, ты не прав)
Крылатый
https://godbolt.org/g/0NPoI3
Крылатый
https://godbolt.org/g/vZLaji
Крылатый
Оба варианта в асмовыхлопе.
Micktu 😬
тут gcc и я без понятия какие оптимизации он применит
Micktu 😬
и у меня не gcc
Micktu 😬
первый ариант красивше
Micktu 😬
правда ты предлагал еще какой-то свой
Micktu 😬
элз добавлять например я не буду, это мой стилистический принцип
Крылатый
Я уже переписал просто)
Artem
Крылатый
Второй выходит в асме компактней...
Micktu 😬
да, минимум вложенности
Artem
а напомни где вложенность повышается7
Artem
if() {} else if () {}
Micktu 😬
Vladimir
Ну всё, осталось побенчмаркать с учётом бранч предикшена
Micktu 😬
в первом имело значение
Micktu 😬
но все равно не вижуу смысла писать элз когда можно написать континью
Micktu 😬
получается целостная лексическая единица, проще рефаторить таки мелочи вроде иф на элз иф или обратно
Micktu 😬
сложно на пальцах пояснить мою логику тут
Daniil
а как на винде получить id окна?
Daniil
в лялихе есть для иксов xwininfo
Micktu 😬
но это уже так
Artem
да нет, несложно, я тебя понял, просто я с тобой не согласен
Micktu 😬
сорта фломастеров
Micktu 😬
это вообще вкусовщина
🦥Alex Fails
Alex Ф-ф-фэils!🌠︙:
EnumWindows
И еще есть WindowFromPoint
Micktu 😬
слушай артем это еще не все
Micktu 😬
я нашел оптимизацию!!!
Крылатый
О!
Крылатый
А ведь ещё можно SIMD заюзать!
Крылатый
Разве нет?
Крылатый
Блин, аж захотелось.
Micktu 😬
этоо превращает тело цикла в две строчки но похоже на обфускацию
Micktu 😬
не понятно нихера :)))
Micktu 😬
только одно сравнение остается
Artem
правильный вариант такой
if (c == '\n')
{
out[i++] = '\\';
out[i++] = 'n';
}
else if (c != '\r')
out[i++] = c;остальная твоя стилистика на твоей совести)
Micktu 😬
Micktu 😬
это имеешь в виду?
Micktu 😬
Micktu 😬
просто я потом развернул ТИПА АПТЕМЕЗАЦИЯ
Micktu 😬
выпихнул наверх условие, которое обычно срабатывает.
Micktu 😬
макроса unlikely() ж нет
Micktu 😬
аааа
Micktu 😬
да
cyber
кто на cppconf 2017 был7
cyber
Скиньте линк на доклад "Внедрение практик безопасного кодирования" плз
🦥Alex Fails
не был, но поищу
Daniil
Daniil
ну или ты не юзал xwinfo
🦥Alex Fails
#вакансия #vacancy #cpp #linux #network #Москва #в_офис #relocate
Sr. Software Engineer – HTTP(S), TCP/IP
Key skills: Linux, C / C++, network, protocols, upper-intermediate English
skype: jynka2007
Рассматривают зп ожидания до 5к $
Подробности https://t.me/ProCxxJobs/8
🦥Alex Fails
Stanislav
Stanislav
такое