
Дед Пегас
04.04.2017
11:14:16
Я не проверял на собираемость.

Michael
04.04.2017
11:14:21
никогда не пробовал ресайз без параметров.
резерв определенно был бы лучше инициализации... просто у меня была проблема с комбо reserve-resize
он по каким-то соображениям зануливает все что между педыдущим сайзом (а он 0) и новым

Google

Michael
04.04.2017
11:15:03
ща проверю.

Cyber
04.04.2017
11:15:04
switch без case?

Дед Пегас
04.04.2017
11:15:44
Говорю же, тяп-ляп писал)

Michael
04.04.2017
11:16:08
ресайза без параметров не существует
так что увы ваариант с резервом не прокатит
серьезно, я за голову уже хватался с этим
пытался сдеалть то же самое но нет, строку ОБЯЗАТЕЛЬНо инициализировать. нельзя просто зарезервироваь, заполнить и ресайзнуть
я думаю там логика "если предыдущий размер меньше нового, обнулить память в этом промежутке"
так вот он затирает то, что ты в резерв записал

Дед Пегас
04.04.2017
11:18:05
Можно в векторе херачить.

Michael
04.04.2017
11:18:10
угу, можно
но

Дед Пегас
04.04.2017
11:18:12
И потом строить струку по нему.

Google

Michael
04.04.2017
11:18:16
там тоже самое поведение :)))))))))

Дед Пегас
04.04.2017
11:18:19
строку*

Michael
04.04.2017
11:18:25
тоже нельзя ресерв ресайз.

Дед Пегас
04.04.2017
11:18:33
Эээ.
Ну можно ещё хранить аргументом число символов.
И ресайзить опосля.

Michael
04.04.2017
11:19:04
я не знаю теории, но пытался дслеать это оптимально разными способами, и строка и вектор страдают одной и тое же херней
инициализируют память при увеличении размера
стирают все
поэтому я сразу делаю инициализацию
тут не сэкономишь...

Cyber
04.04.2017
11:21:30
чего вы хоитте добиться?

Дед Пегас
04.04.2017
11:21:46
Оптимально и функционально)

Cyber
04.04.2017
11:22:11
это, мне кажется, антонимы для многих алгоритмов

Дед Пегас
04.04.2017
11:22:16
А, мой пример ещё и некорректный.

Michael
04.04.2017
11:23:19
я просто написал самое оптимальное что мог придумать, Пегас подтянулся со своей версией
правда не совсем самое оптимальное. надо развернуть логику условий, потому что отрицание встречается чаще
так что начать с != \r, != n
потом иф == \n

Google

Michael
04.04.2017
11:24:48
и все

Cyber
04.04.2017
11:25:03
следующий уровень распараллелить алгоритм?..)

Michael
04.04.2017
11:25:16
да :)))))

Дед Пегас
04.04.2017
11:25:19
А, вкурил.

Michael
04.04.2017
11:27:22
так что вот оптимальная версия
for (char c : in)
{
if (c != '\r' && c != '\n')
{
out[i++] = c;
continue;
}
if (c == '\n')
{
out[i++] = '\\';
out[i++] = 'n';
}
}

Artem
04.04.2017
11:28:03
Местами поменяй и элс воткни

Michael
04.04.2017
11:28:14
для красоты можго написать == \r conrinue чтобы убрать скобки

Artem
04.04.2017
11:28:21
И одно условие в конъюнкции исчезнет

Michael
04.04.2017
11:28:22
условие не н и не р должно обрабатываться первым
это 90% символов в строке
М И К Р О О П Т И М И З А Ц И И

Artem
04.04.2017
11:29:17
И что ты оптимизируешь, у тебя все равно есть явное сравнение с \n

Daniil
04.04.2017
11:29:29
а как на винде получить id окна?

Artem
04.04.2017
11:29:33
Только так оно два раза.

Michael
04.04.2017
11:29:43
я думаю ты его не заметил

Daniil
04.04.2017
11:29:54
в лялихе есть для иксов xwininfo

Michael
04.04.2017
11:30:04
это когда == '\r'

Artem
04.04.2017
11:30:05
Я думаю, ты не прав)

Google

Дед Пегас
04.04.2017
11:30:12
https://godbolt.org/g/0NPoI3
https://godbolt.org/g/vZLaji
Оба варианта в асмовыхлопе.

Michael
04.04.2017
11:31:18
тут gcc и я без понятия какие оптимизации он применит
и у меня не gcc
первый ариант красивше

Плюшка
04.04.2017
11:31:38
там не только gcc

Michael
04.04.2017
11:31:39
правда ты предлагал еще какой-то свой
элз добавлять например я не буду, это мой стилистический принцип

Дед Пегас
04.04.2017
11:31:51
Я уже переписал просто)

Artem
04.04.2017
11:32:26

Дед Пегас
04.04.2017
11:32:35
Второй выходит в асме компактней...

Michael
04.04.2017
11:32:36
да, минимум вложенности

Artem
04.04.2017
11:33:03
а напомни где вложенность повышается7

Michael
04.04.2017
11:33:03

Artem
04.04.2017
11:33:19
if() {} else if () {}

Michael
04.04.2017
11:33:22

Vladimir
04.04.2017
11:33:23
Ну всё, осталось побенчмаркать с учётом бранч предикшена

Michael
04.04.2017
11:33:59
в первом имело значение

Google

Michael
04.04.2017
11:34:17
но все равно не вижуу смысла писать элз когда можно написать континью
получается целостная лексическая единица, проще рефаторить таки мелочи вроде иф на элз иф или обратно
сложно на пальцах пояснить мою логику тут

Daniil
04.04.2017
11:35:06
а как на винде получить id окна?
в лялихе есть для иксов xwininfo

Michael
04.04.2017
11:35:09
но это уже так

Artem
04.04.2017
11:35:11
да нет, несложно, я тебя понял, просто я с тобой не согласен

Michael
04.04.2017
11:35:15
сорта фломастеров
это вообще вкусовщина

Daniil
04.04.2017
11:36:03

Alex Фэils?︙
04.04.2017
11:38:15
Alex Ф-ф-фэils!?︙:
EnumWindows
И еще есть WindowFromPoint

Michael
04.04.2017
11:38:16
слушай артем это еще не все
я нашел оптимизацию!!!

Дед Пегас
04.04.2017
11:38:54
О!
А ведь ещё можно SIMD заюзать!
Разве нет?
Блин, аж захотелось.

Michael
04.04.2017
11:43:17
этоо превращает тело цикла в две строчки но похоже на обфускацию
не понятно нихера :)))
только одно сравнение остается