Andrei
Micktu 😬
ты меня так выругал что я убрал это дерьмо и заменил на компейр
Micktu 😬
все :)
Micktu 😬
все доволны
Andrei
Sorry!
Micktu 😬
за что?
Micktu 😬
все по делу
Micktu 😬
ну да
Micktu 😬
но я думаю это крохоборство
Micktu 😬
тут андрей прав
Micktu 😬
лучше мейнтейнебл код
🦥Alex Fails
Блядь😂😂
Andrei
Какой злой бот
Andrei
@micktu
Micktu 😬
фига я удивился
Andrei
Не ты один :D
Micktu 😬
на самом деел разумное замечание, буду писать полновесные предложения.
Matway
лучше мейнтейнебл код
»> filename.compare(filename.length() - 4, 4, ext);
Вот ЭТО - ни то, ни сё. И не быстро, и не "мейнтейнебл".
Micktu 😬
Кроме процессора.
на самом деле я согласен с андреем, лучше мейнтейнебл код чем сомнительныйе микрооптимизации
Micktu 😬
тем более что я знаю где боттлнек в моем приложении и он вообще не там, он в регексах.
Andrei
Micktu 😬
вчера я легим изменениям ускорил его в 6 раз
Micktu 😬
а еще есть место судя по профайлеру где могу ускорить вдвое
Micktu 😬
чот регексы медленные
Andrei
Micktu 😬
угу
Andrei
Они кажется не компилируются в автомат в стандартной библиотеке, поэтому так.
Micktu 😬
реально, то 80% проц. времени жрал регекс, теперь 50% два регекса суммарно
Micktu 😬
я просто прохождусь по нескольким мегбайтам текста ими...
Micktu 😬
но все равно достаочно быстро работает, так что можно не паритсья
Andrei
Micktu 😬
кстати как регекс ускорился в 6 раз
Matway
Матвей, что бы ты предложил?
Исходя из требований:
Надо, быстро, надо рилтайм, ай-ай-ай, время,время - тогда хак с алиасингом, но нормально обёрнутый, чтобы минимум самострела
Если это веб-странички грузить - то compare, но со всеми проверками и без магической константы.
А если от этого жизнь астронавта будет зависеть - ну, тогда и разговор был бы другой :)
Micktu 😬
было \r?\n
Micktu 😬
стало (\r\n)|\n
Micktu 😬
лукахед что-то очень дорогой оказался
Micktu 😬
Micktu 😬
оставшийся второй жрун процессора выглядит так
\\\w+?(_([a-zA-Z]{2}))?\.dat
Gregory
Micktu 😬
он пробегается по всего-то 8000 файловых имен
Micktu 😬
но это самая тяжелая операция в программе
Micktu 😬
в идеале стоит заменить его на простой парсер...
Andrei
Andrei
Если ты идёшь по вектору поинтеров у тебя 1 derference
Andrei
Я уже сказал об этом.
Micktu 😬
Andrei
Micktu 😬
на ПЕГ
Micktu 😬
мне он все равно пригодится потому что ум еня свой формат есть который я сейчас паршу ОЧЕНЬ наивно
🦥Alex Fails
Раз уж тут упомянули парсеры, подскажите, как мне эту сишную телегу из бота для телеги переписать на модерн с++ с нормальным перфомансом
Micktu 😬
думаю можно разогнать с 20 секунд выполнения до 4-5 секунд
🦥Alex Fails
Micktu 😬
жопу в кресло и переписать
Micktu 😬
😂
Andrei
🦥Alex Fails
Micktu 😬
да как по мне код выше выглядит как нормальный быстрый парсер
Micktu 😬
просто некрасивый
Micktu 😬
потоум чтоо велосипед
Micktu 😬
поэтому же я гне хочу городить велосипеды вместо регексов
🦥Alex Fails
Тут есть еще один очень неприятный нюанс - в андроиде ндк регэкспы сломаны
Andrei
Мобилкопроблемы :(
Gregory
Если ты идёшь по вектору поинтеров у тебя 1 derference
изначальный посыл человека по поводу задачи я понял как: хочу линейно расположенные элементы в векторе, буду по ним часто бегать. А еще хочу извне откуда то на них ссылаться (но не бегать по ним часто).
В таком случае более проищводительно будет иметь просто вектор элементов а не вектор ссылок на онные, а ссылаться уже нестандартно - оффсетом.
(в всю полноты задачи не вникал, т.к. нет времени, мб оно и ненадо на самом деле)
Andrei
А, эту проблему мы уже решили, да.
Andrei
Просто заранее посчитаем количество элементов и переезжать не надо.
Gregory
я просто хотел понять - мб я в чем то не прав
Gregory
уже для себя
Micktu 😬
щас будет гениальный вопрос, господа
Andrei
Речь идет о том, когда элементов неизвестное количество. То как на них ссылаться? Варианта по сути два, вектор юник_птров и ссылаться прям на объекты, или вектор значений, а для ссылки использовать сслылку на вектор и оффсет. И плюсы\минусы таких решений в зависимости от задачи.
Micktu 😬
итак: как передать реф на this?
Andrei
*this
Micktu 😬
*this
черт, справедливо. какой же я пока что тугой.
Andrei
сам this - это поинтер
Gregory
Micktu 😬
да, я видел это и не догадался. очень плох
Andrei
разыменовал — получил объект собсна
Albert
если что, boost::regex в несколько раз быстрее чем из стандартной библиотеки