Size: a a a

2020 December 17

g

gibzer in use Perl or die;
То есть для счастья не хватало промежуточного списка в map всего лишь.
источник

g

gibzer in use Perl or die;
Sergey Zhmylove
Если тебе хочется написать это "perlish", то тоже можно, но это не производительно, лучше так не делать
А как производительнее? Хочется однострочник для парсинга логов и вывода только интересующих полей.
источник

IB

Ivan Bessarabov in use Perl or die;
gibzer
А как производительнее? Хочется однострочник для парсинга логов и вывода только интересующих полей.
О какие объемах идет речь? Сколько терабайт логов?
источник

g

gibzer in use Perl or die;
Бывает 5–10 гигов.
источник

IB

Ivan Bessarabov in use Perl or die;
gibzer
Бывает 5–10 гигов.
можно подумать парсить это не перлом, а консольным кликхаусом. можно в одну команду и залить данные во временный clickhouse и сделат из него выборку
источник

SZ

Sergey Zhmylove in use Perl or die;
Ivan Bessarabov
можно подумать парсить это не перлом, а консольным кликхаусом. можно в одну команду и залить данные во временный clickhouse и сделат из него выборку
Думаешь, это будет быстрее?
источник

g

gibzer in use Perl or die;
Это нужно для дальнейшего пайпа куда-нибудь. И хочется переносимости. То есть вбил однострочник на любом хосте и готово.
источник

SZ

Sergey Zhmylove in use Perl or die;
По-моему, перл быстрее будет
источник

IB

Ivan Bessarabov in use Perl or die;
Sergey Zhmylove
Думаешь, это будет быстрее?
у меня было значинтельно быстре кликхаусом
источник

SZ

Sergey Zhmylove in use Perl or die;
gibzer
echo -e "a=b\tc=d\te\tg=\ti=j" | perl -lne '%F = map { ($k, $v) = split(/=/, $_, 2); } split(/\t/); print join("\t", @F{qw(a c e g i)});'
Думаю, в таком контексте будет быстрее -0 и /(\S+)((?:=\S+)?)/gsm
источник

g

gibzer in use Perl or die;
Sergey Zhmylove
По-моему, перл быстрее будет
Сравнивал варианты, в том числе с Python, и он оказался быстрее…

#!/usr/bin/env python3

import fileinput

f = ['a', 'c', 'e', 'g', 'i']
for s in fileinput.input():
   F = dict(tuple([x.split('=', 1) for x in s.strip().split('\t')]))
   print('\t'.join([F[x] for x in f]))
источник

SZ

Sergey Zhmylove in use Perl or die;
Ivan Bessarabov
у меня было значинтельно быстре кликхаусом
Всё зависит от задачи. Тебе, вероятно, нужны были выборки
источник

g

gibzer in use Perl or die;
gibzer
Сравнивал варианты, в том числе с Python, и он оказался быстрее…

#!/usr/bin/env python3

import fileinput

f = ['a', 'c', 'e', 'g', 'i']
for s in fileinput.input():
   F = dict(tuple([x.split('=', 1) for x in s.strip().split('\t')]))
   print('\t'.join([F[x] for x in f]))
Но такое не потаскаешь.
источник

SZ

Sergey Zhmylove in use Perl or die;
gibzer
Сравнивал варианты, в том числе с Python, и он оказался быстрее…

#!/usr/bin/env python3

import fileinput

f = ['a', 'c', 'e', 'g', 'i']
for s in fileinput.input():
   F = dict(tuple([x.split('=', 1) for x in s.strip().split('\t')]))
   print('\t'.join([F[x] for x in f]))
На каком объеме данных ты их сравнивал?
источник

g

gibzer in use Perl or die;
Sergey Zhmylove
На каком объеме данных ты их сравнивал?
На примерно 5 гигах Perl 47 c, Python 38 с.
источник

g

gibzer in use Perl or die;
Вот и не могу понять, откуда такая разница, где тормозит.
источник

SZ

Sergey Zhmylove in use Perl or die;
fileinput.input это чё?
источник

SZ

Sergey Zhmylove in use Perl or die;
Строка?
источник

g

gibzer in use Perl or die;
Это аналог while (<>) {}
источник

SZ

Sergey Zhmylove in use Perl or die;
gibzer
Это аналог while (<>) {}
Можешь показать конкретный код для обоих вариантов?
источник