Наверное многие знакомы с концепцией Perl
TIMTOWTDI There Is More Than One Way To Do It
Предлагаю в этой теме обсуждать/делиться информацией как делать какие-то вещи более эффективно с учетом заданных критериев.
Для примера я исследовал эффективность операции join против конкатенации.
Например, когда идет накопление буфера для sql запроса.

join vs concat
При импорте текстовых файлов в БД Mysql более эффективный, с точки зрения скорости выполнения, является подход с накоплением критического количества записей в буфере и потом послать их на Mysql сервер одним оператором используя
INSERT INTO table VALUES (..),(..),...
Буфер можно накапливать так
или так
Я задался вопросом - какой подоход более эффективный с точки зрения скорости выполнения.
Второй подход менее эффективный с точки зрения использования памяти. Он использует памяти ровно н два раза больше первого.
Но эмирически понятно, что алгоритм join можно реализовать более эффективно, поскольку есть возможность вычислить длину буфера пробежавшись по массиву, выделить память для буфера и потом просто копировать в эту память каждый элемент массива.
В случае с конкатенацией присутстсвует неэффективная и иногда достаточно длительная операция перераспределения памяти с учетом того, то размер $buf на каждой итерации возрастает.
Эти догадки подтвердили результаты тестовой программы
concat_vs_join.pl
perl concat_vs_join.pl 5000 500 100
join time:0.262
concat time:0.722
perl concat_vs_join.pl 10000 500 100
join time:0.735
concat time:3.110
perl concat_vs_join.pl 10000 1000 100
join time:1.313
concat time:13.159
Вывод:Если память не является критическим параметром, то нужно накапливать буфер в массиве а потом использовать join
"с точки зрения
"с точки зрения скорости выполнения, является подход с накоплением критического количества записей в буфере и потом послать их на Mysql сервер одним оператором.."
)) ну, по сути оно и так ясно. тот же принцип работает и в случае отправки сообщений через Thread::Queue, вывода на жесткий диск в условиях максимальной его эксплуатации и т.д.
вообще у меня перл ассоциируется со скоростью разработки, а не со скоростью выполнения, ведь если нужна скорость - я использую си++ вместе с boost :)
... поэтому больше по теме сказать нечего.
а как насчет
а как насчет inline.pm вместе с boost? :)