Size: a a a

2021 October 09

P

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

SZ

Sergey Zhmylove in Modern::Perl
@PerlBanjoBot $ echo привет |perl -lne print+length
источник

P

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

SZ

Sergey Zhmylove in Modern::Perl
Make sense?
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
даже больше разница, чем ожидал, но я уже исходник bytes посмотрел и понятно что он заведомо оптимальнее.

Планка отсечки у меня 10 мегабайт, а инкримент по килобайт 5, после которого очередная проверка.
источник

SZ

Sergey Zhmylove in Modern::Perl
Почему бы просто не посмотреть, сколько оно занимает памяти?
источник

SZ

Sergey Zhmylove in Modern::Perl
Не, я правда не понимаю :(
источник

SZ

Sergey Zhmylove in Modern::Perl
Вариантов полно, хоть тот же devel peek
источник

SZ

Sergey Zhmylove in Modern::Perl
Или вот:
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
sub import {
   $^H |= $bytes::hint_bits;
}

sub unimport {
   $^H &= ~$bytes::hint_bits;
}
источник

SZ

Sergey Zhmylove in Modern::Perl
@PerlBanjoBot
use B "svref_2object";
use utf8;
$a = "привет";
print svref_2object(\$a)->LEN;
источник

P

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

NK

Nick Knutov Dobrohos... in Modern::Perl
и это вся магия. Очевидно это быстрее, чем любой другой вариант
источник

SZ

Sergey Zhmylove in Modern::Perl
Да нет же :)
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
ну это наверное тоже, но это менее очевидно
источник

SZ

Sergey Zhmylove in Modern::Perl
Просто достать из pv длину -- это быстрее всего, она там уже есть
источник

SZ

Sergey Zhmylove in Modern::Perl
И это не аффектит ничего вокруг
источник

SZ

Sergey Zhmylove in Modern::Perl
В отличие от флагов
источник

VV

Vladimir Varlamov in Modern::Perl
Апгрейд даунгрейд это не затратно, потому что это флаг просто к скаляру. Так что если вы уверены в данных, то нужно просто взять длину в контексте use bytes. Уверен этой скорости достаточно. Можно ещё быстрее, конечно, но думаю это за рамками задач для перла, разве не так?
источник

VV

Vladimir Varlamov in Modern::Perl
Это хак, потому что это завтра может не работать как вы думаете, это не публичный интерфейс. Публичный это use / no bytes
источник