> Учить как собирать программы я не будуЯ думал ты стебёшься, но когда увидел, что вытянутый с 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, чтобы выяснить, чё он так тупит или нет, если будет настроение вечером, поковыряю.