@ProCxx

Страница 757 из 2477
Дед Пегас
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
Я уже переписал просто)

Дед Пегас
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
а напомни где вложенность повышается7
где скобочки надо поставить

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

Michael
04.04.2017
11:33:59
if() {} else if () {}
а, во втором варианте моем нигде

в первом имело значение

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
а как на винде получить id окна?
видомого окна. Т.е. мышкой тыкнуть или что-нибдуь такое. Ну или дерево окон посмотреть (если такое вообще есть)

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
я нашел оптимизацию!!!
... я не буду этого делать

этоо превращает тело цикла в две строчки но похоже на обфускацию

не понятно нихера :)))

только одно сравнение остается

Страница 757 из 2477