Pull to refresh
2
0.1
Китаев Антон@Notevil

Инженер программист

Send message

не сказано, что это погрешность. По графику не видно, а в таблице видно, что BadStruct стабильно выигрывает до 1000000.

До 262144 итераций разница во времени минимальна, но на 1000000 итераций она уже составляет 38%!

А то что в таблице результатов все что меньше 1000000 выигрывает BadStruct как-то объясняется или мы просто считаем, что это равный результат, отличающийся не более чем на погрешность измерений?

Спасибо. Вот этот ответ, на самом деле, для меня много прояснил.
В целом получается если я знаю, где у меня hot path, который над оптимизировать, я уже сразу могу расставлять точки и смотреть трассировки.

Я просто не понимаю как интерпретировать результаты семлпирования. По сути просто посмотреть на те функции, которые дольше всех выполняются, и прикинуть, должны ли они выполняться быстрее?
А дальше уже инструментированием разбираться конкретнее, на что и в каких пропорциях тратится время?

https://github.com/VerySleepy/verysleepy - что-то для windows. Для linux есть perf, который делает то же самое?

А есть какой-то гайд по профилированию приложений (или это он и был)?
Опишу кейс. У меня приложение - пример использования библиотеки, которую я делаю. Оно запускается, делает бизнес логику, завершается. На все около 1 секунды на моем железе. Там внутри установка подключения к серверу, формирование пакетов, шифрование, отправка, получение, дешифрование, парсинг пакетов, пакеты разные, отправляются и принимаются параллельно, основная логика в одном потоке, но есть еще парочка дополнительных. Как выбирать чем, что и как профилировать?
Раньше, на прошлой работе, использовал tracy для гуи приложения. Мне в целом хватало просто пройтись по записанным функциям и посмотреть, что сколько занимает, потом добавить детализации и посмотреть где именно тратится время. Тут часто ошибался, с тем, что менял одновременно и код, и добавлял точки для сбора трейсов, получалось, что время увеличивалось, хотя ожидал, что оно уменьшится.
Для меня это все еще самый очевидный подход, но он кажется трудоемким и сложно повторяемым.

ну а вообще со встройкой есть смысл пробовать, Может дальше пойдут такие вычисления, что нет смысла даже пытаться?

А если у меня встройка AMD на ноутбуке, есть смысл пробовать что-то по этому циклу?

Ну в таких условиях удаленка изначально не применима, а значит нечего и отменять.

а я правильно понял, что генератор тут это i / 0x8a010_fmt ? А свои генераторы можно/легко писать? Если мне надо сконкатенировать со строкой например вектор моих типов каких-то?

А какие проблемы если для них всех оно выглядит как TCP?
Просто не шлет повторы и не ждет ACK. Сами ACK кстати можно отправлять, чтобы еще меньше палиться.

У меня вопрос.

Главная проблема тормозов в классическом подходе «устойчивых» протоколов - они обертывают VPN-данные в TCP-соединение и мимикрируют под HTTPS. Выглядит это в итоге как обычный веб-трафик, но TCP добавляет проблем со своим обязательным подтверждением доставки пакетов. При таком подходе, при потере одного пакета встаёт вся очередь пакетов, что приводит к классическому head-of-line blocking, жутко замедляя соединение.

А если уж VPN под что-то мимикрирует. То можно и под TCP мимикрировать? То есть сделать протокол, который в заголовках выглядит как TCP, но ведет себя как UDP?

Да, будет косвенный вызов через vtable. Да, это наносекунды.

Но в приведенном примере еще и аллокация ведь, а это точно больше чем вызов через vtable.
Но вообще мысль то правильная.
Избегать мономорфизации если оно прям сильно не нужно.

Хотя серваки (2 разных провайдера) в России

Но они же не в белых списках.

И более того - дома резервнй канал через LTE они тоже доступны, даже в режимах ограничений! А вот на даче в соседнем регионе такой же микротик с LTE (есть версия, что провайдеры дают поблажки стационарным точккам которые относятся к модемам по IMEI и не мигрируют между БС) и там уже все печально.

Как сейчас принято говорить, то что у вас что-то работает, это не ваши заслуги, а их недоработки.

Так понятно, что забугор будут блочить. А по РФ то они должны работать, их ведь и компании всякие используют. Или когда белые списки включают, то и все остальные протоколы блочат?

Для ТСПУ это выглядит как обычный обмен данными между двумя серверами, который фильтруется гораздо слабее, чем прямой «заход» юзера на иностранный хостинг

А можно тогда у себя на роутере использовать что-то древнее, а не то что не блокируют? Например l2tp? А уже с моста пусть выходит vless.

Вообще звучит здорово. Я бы даже сказал благородно.
А как перетянуть аудиторию из сегодняшних соцсетей?

с подачи этой статьи легко пойти искать инфу про perf в интернетах :)

Я сюда как раз пришел, потому что искал про perf в интернетах

а разве клавиатура должна появится не в драйверах? Или это только для теста прерываний?

Почему C++17 и что мы будем использовать

Таки почему 17, а не 23?

Я вот этот момент никогда понять не мог

Дело в том, что S — это результат математической операции, и использовать его «как есть» в качестве ключа небезопасно.

S мы можем получить, только если как-то утекли приватные ключи или как-то взломали сам алгоритм. А если у нас уже есть S, то мы точно так же можем применить KDF и получить нужные сессионные ключи. Тогда какая разница?

Information

Rating
3,463-rd
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity