Size: a a a

2021 May 01

МК

Михаил Козачков... in Modern::Perl
@PerlBanjoBot $ perl -E 'exec "rm -rf"'
источник

P

PerlBanjoBot in Modern::Perl
источник

МК

Михаил Козачков... in Modern::Perl
Эх
источник

IB

Ivan Bessarabov in Modern::Perl
=)
источник
2021 May 02

赤田

赤熊 田 in Modern::Perl
Здравствуйте, swig кто использовал? Есть задача пробросить методы из плюсовой библиотеки. int, char мапятся хорошо. А вот класс бы string как пробросить
источник

b

basiliscos in Modern::Perl
Попробуйте xs::framework
источник

赤田

赤熊 田 in Modern::Perl
Спасибо
источник

b

basiliscos in Modern::Perl
тут разрабы в чате, помогут, если что. Сложный пример, того, чего можно - см. Geo::Geos
источник

赤田

赤熊 田 in Modern::Perl
Большое спасибо. Мне в итоге нужен будет программист для сдельной работы.
источник

赤田

赤熊 田 in Modern::Perl
У нас api для мобилок на перле
источник
2021 May 04

d

dpashko in Modern::Perl
Добрый день, коллеги!

Не подскажет ли кто, как сделать лучше с точки зрения производительности. Есть функция, в которую приходит ref на здоровый хеш с кучей полей (условно, запись из базы). Этот хеш требуется сериализовать в файл, убрав при этом все поля, содержащие в качестве значения undef. Естественно, аргумент модифицировать нежелательно. Какие поля не определены — неизвестно, но их много.

Напрашивается два решения:
1) скопировать структуру целиком:
my %newdata = %{$data_ref};
И дальше внутри %newdata найти и поудалять всё ненужное. И сериализовать уже её.

2) попытаться локализовать данные $data_ref. Для одного известно какого поля это легко:
local ($data_ref->{some_key});
delete $data_ref->{some_key};
Это по логике должно быть эффективнее (нет копирования). Но что-то я никак не соображу, как сделать локализацию для заранее неизвестного списка полей. Всё время local оказывается не в той зоне видимости...

Возможно, есть другие варианты. И есть ли смысл в этих играх для повышения производительности? Что посоветует уважаемое сообщество?
источник

IB

Ivan Bessarabov in Modern::Perl
> И есть ли смысл в этих играх для повышения производительности?

Мое предположение что смысла в этом нет. База и работа с файлами гораздо более затратное чем вот это все.

Но точно можно ответить только с помощью профилирования кода — https://metacpan.org/pod/Devel::NYTProf
источник

d

dpashko in Modern::Perl
Наверное не совсем точно сформулировал. Нет вопроса в том, что база и файл — вещи затратные: их зато можно не ждать. Вопрос в том, как подобную зачистку реализовать максимально быстро.
За идею про профилирование — благодарю. Попробую, если осилю локализацию. :)
источник

IB

Ivan Bessarabov in Modern::Perl
Не исключено что работа с базой будет будет 70 процентов времени работы скрипта, работа с файлами еще 30%, а вот убирание undef будет 0.004% — и тратить время на эту оптимизацию конечно интересно, но практической пользы это не принесет
источник

W

Warstone in Modern::Perl
while(my($key, $value) = each %$hash) {
  next unless defined $value;
  write_to_file($key, $value);
}

Быстрее только на XS (вернее если ключей меньше миллиона, то быстрее все-таки через foreach my $key (keys %$hash), но не суть)
источник

AK

Andrey Konovalov in Modern::Perl
Идея хорошая, но если ближе к практике - нужен дампер с возможностью встраивания своих обработчиков
источник

W

Warstone in Modern::Perl
А вот этого в задании небыло
источник

AK

Andrey Konovalov in Modern::Perl
Там же вложенный хеш, так что это уже рекурсия
источник

W

Warstone in Modern::Perl
dumpme($value) if ref $value eq 'HASH';
источник

W

Warstone in Modern::Perl
Но и этого не говорилось
источник