[Moscow.pm] PVNV -> NV

Oleg Alistratov ali на ali.org.ua
Пн Дек 20 05:38:32 PST 2010


Привет,


On 20.12.2010 14:01, Ruslan Zakirov wrote:
> http://www.perlmonks.org/?node_id=803515

Угу. У перла хохляцкая ментальность, он если чего
получил, то назад по доброй воле уже не отдаст,
и даже захватит лишнего «під помідори» :))

Тут у меня тоже родился вопрос, пока только гипотетический:

возможно ли принудительно, in place, убрать у скаляра
лишние составляющие, превратив, таким образом, PVNV в NV,
например?

Вот есть у нас изначально «чистый» NV:

     $a = rand();

Стоит его хоть раз потрогать, интерполировав в строку,

     $b = '' . $a;

он тут же превращается в PVNV, сразу занимая в два (три, четыре…)
раза больше памяти на строковое представление.

Даже кунштюки типа $a += 0.0 не помогут
(it depends, до конца не понимаю от чего).

Так есть ли способ убрать строковое представление из скаляра
pure perl способом? Или только пробросить его через XS процедуру,
породив новый чистенький SVnv?

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

То же касаемо и IV.


--
Олег Алистратов


Подробная информация о списке рассылки Moscow-pm