The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Отчёт о развитии FreeBSD за первый квартал 2020 года"
Отправлено Ordu, 15-Апр-20 11:28 
> Учить как собирать программы я не буду

Я думал ты стебёшься, но когда увидел, что вытянутый с github'а актуальный коммит в master не собирается, потому как там Makefile'ы поломаны, понял что нет. Ппц. Что за быдлософт?

> у меня генту и я просто переопределяю CC/CXX и флаги, а потом собираю как обычно пакетным
> менеджером.

А, да, точно, про пакетный менагер я чёт забыл. Там скорее всего подобран такой коммит из git, который собирается. Ты собирал с USE=oniguruma или без него? Влом разбираться, что это такое вообще. Поставил без этого аниме.

> Можно наверно вручную покопаться в мейкфайле.

Не, всё проще: CFLAGS="-O2 -march=native" ./configure. В configure можно и другие переменные передавать, если сделать configure --help, он расскажет какие.

> ПС и пожалуйста, хватит рассказывать, что мне делать, лучше ускорь jq с
> любимым strcpy.

"Любимым"? C'шная обработка строк -- это один из _худших_ подходов, которые можно придумать.

> Всего оверхэда тут на вызов процессов,

Чта? У тебя тут оверхеда на O(N^2) парсинга, ты складываешь кусочек данных в data, и потом эту data парсишь заново. И потом ещё раз, и ещё раз... Правда я не заметил изменений во времени выполнения jq. Оно увеличивается к концу, но несущественно: за 2k строк время затрачиваемое на выполнение jq изменилось где-то от 0.055 до 0.075. То есть энквадрат сложности не успевает показать себя.

Что наводит на мысль, что тормоза берутся не столько из-за парсинга или ещё какой-то обработки входных данных, сколько из-за накладных расходов на запуск. jq<<<"" отъедает 0.055-0.060 сек. Для сравнения: генерация 2k строк в том виде, как ты показал, отправленная в /dev/null занимает 0.008 сек. Запуск этого же генератора через cargo (который помимо запуска бинаря проверяет грядку файлов, чтобы не пропустить момент, когда надо пересобрать бинарь) отъедает 0.042 сек:

$ time target/release/gen-strings >/dev/null
real    0m0,008s
user    0m0,006s
sys    0m0,001s

$ time cargo run --release >/dev/null
real    0m0,042s
user    0m0,029s
sys    0m0,012s

$ time jq</dev/null
real    0m0,057s
user    0m0,054s
sys    0m0,002s

Какая-то заморочная инициализация в jq? Что он там делает? Телеметрию на сервер отправляет?

Не знаю, буду ли я ковырять jq, чтобы выяснить, чё он так тупит или нет, если будет настроение вечером, поковыряю.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру