Size: a a a

2021 February 27

W

Warstone in Modern::Perl
Вы немного о разном говорите, как мне кажется...
источник

AP

Anton Petrusevich in Modern::Perl
Andrey Konovalov
Экономия может быть только если сам по себе вызов XLog::info произойдёт в любом случае!
прототип моей функции был таким: sub debug (&@), он принимал первым аргументом исполняемый блок. перл компилирует его, безусловно, как и весь код. но вызов происходит внутри логгера. нет вызова — нет вычислений
источник

W

Warstone in Modern::Perl
Антон говорит о том что ему хочется немного другого API, чтобы это более явно выглядело. А XLog это скрывает за своей реализацией.
источник

W

Warstone in Modern::Perl
Ну и это все равно будет медленее чем XLog
источник

AP

Anton Petrusevich in Modern::Perl
я не сказал про икслог ничего. его подход мог бы вполне мне подойти "сверху"
источник

W

Warstone in Modern::Perl
Тогда непонятно зачем вы вообще в эту дискуссию ворвались ))
источник

AP

Anton Petrusevich in Modern::Perl
Warstone
Тогда непонятно зачем вы вообще в эту дискуссию ворвались ))
я про "невычисление аргументов" ворвался. извините
источник

W

Warstone in Modern::Perl
Ну давайте пойдем немного дальше... Оба варианта реализуют невычисление аргументов. Только метод XLog'а более быстрый, согласны?
источник

AK

Andrey Konovalov in Modern::Perl
Если сравнивать подходы:
1)
debug 'message' И все вызовы debug по сути будут заменены на if (0) { debug 'message' } при $log_level eq 'error'

против подхода
2)
debug { 'message' } И debug() будет вызываться и внутри себя проверять $log_level и не вызывать sub {'message'},

то подход 1-й лучше
источник

W

Warstone in Modern::Perl
Нет, Антон имеет в виду другое
источник

W

Warstone in Modern::Perl
debug( sub { 'message'}) и внутри debug, если $log_level - вызвать внутреннюю сабу
источник

AK

Andrey Konovalov in Modern::Perl
Warstone
debug( sub { 'message'}) и внутри debug, если $log_level - вызвать внутреннюю сабу
Да. И это хуже, чем если мы вообще не вызываем debug!
источник

W

Warstone in Modern::Perl
То есть в случае Антона, если $log_level так-же не проходит проверку, то вычисление параметра не происходит
источник

AP

Anton Petrusevich in Modern::Perl
у меня кухня была сложная, дебуг был не просто дебугом
источник

AP

Anton Petrusevich in Modern::Perl
sub debug (&@)    { bless $_[0], "PEF::Log::Levels::debug";    @_ }
источник

W

Warstone in Modern::Perl
Andrey Konovalov
Да. И это хуже, чем если мы вообще не вызываем debug!
Но только по скорости. По внешним признакам они ведут себя одинаково
источник

AK

Andrey Konovalov in Modern::Perl
Warstone
То есть в случае Антона, если $log_level так-же не проходит проверку, то вычисление параметра не происходит
Но вызов debug() происходит, а именно этого хочется избежать
источник

AK

Andrey Konovalov in Modern::Perl
Warstone
Но только по скорости. По внешним признакам они ведут себя одинаково
Ну, кроме неудобного синтаксиса с фигурными скобками
источник

W

Warstone in Modern::Perl
Andrey Konovalov
Ну, кроме неудобного синтаксиса с фигурными скобками
Да, это тоже можно записать в минусы.
источник

S

Sergey in Modern::Perl
У xlog'a нет вызова ни перла ни xs'a, если левел не подходит
источник