<br><br><div class="gmail_quote">30 июля 2009 г. 13:53 пользователь Alex Shatlovsky <span dir="ltr"><<a href="mailto:shatlovsky@gmail.com">shatlovsky@gmail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Привет,<br>
<br>
Путем последовательного усечения выяснил, что проблема в<br>
последовательности строк:<br>
print STDERR "$ref\n";<br>
next unless $ref;<br>
<br>
Именно из-за нее вызов Devel::Size::total_size( $ref ) корректно<br>
отрабатывает только один раз.<br>
Второй раз возвращается 0.<br>
<br>
Если поменять строки местами, то все отрабатывает как надо.<br>
<br>
В тред призываются гуру perl internals. :-)</blockquote><div><br></div><div>привет с лепры?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
<br>
===========================================<br>
#!/usr/bin/perl<br>
<br>
use strict;<br>
use warnings;<br>
<br>
use Data::Dumper;<br>
use Devel::Size;<br>
<br>
TestGreedy::init();<br>
<br>
for (1..2) {<br>
{<br>
no strict;<br>
my $name = 'TestGreedy::SPAM';<br>
for my $type (qw(SCALAR ARRAY REF HASH)){<br>
print STDERR "$type\n";<br>
my $ref = *{$name}{$type};<br>
print STDERR "$ref\n";<br>
next unless $ref;<br>
print Devel::Size::total_size( $ref ), "\n";<br>
}<br>
}<br>
}<br>
<br>
exit;<br>
<div class="im"><br>
package TestGreedy;<br>
<br>
use vars qw(<br>
</div> $SPAM<br>
);<br>
<br>
sub init {<br>
<div class="im"> my $f = "x" x 1024 x 1024 ;<br>
</div><div class="im"> foreach my $i (1 .. 50 ) {<br>
$SPAM->{$i} = $i . $f;<br>
}<br>
}<br>
</div>===========================================<br>
<br>
<br>
--<br>
<div class="im"><br>
2009/7/29 Ruslan Zakirov <<a href="mailto:ruslan.zakirov@gmail.com">ruslan.zakirov@gmail.com</a>>:<br>
> Там где-то было написано про кеширование.<br>
><br>
> 2009/7/29 Alex Shatlovsky <<a href="mailto:shatlovsky@gmail.com">shatlovsky@gmail.com</a>>:<br>
>> Привет,<br>
>><br>
>> 2009/7/29 Ruslan Zakirov <<a href="mailto:ruslan.zakirov@gmail.com">ruslan.zakirov@gmail.com</a>>:<br>
>>> Вот так где-то. Патч к B::TerseSize и скрипт посмотреть на результат.<br>
>>> Осталось в Apache::Status все это вывести красиво.<br>
>><br>
>> Спасибо!<br>
>> Сходу не завелось, при первом запуске под мод_перл размер показывает<br>
>> правильно, при последующих Devel::Size::total_size() и<br>
>> Devel::Size::size() возвращают 0.<br>
>><br>
>> Но направление понял, буду разбираться.<br>
>> Еще раз спасибо.<br>
>><br>
>> --<br>
>> С уважением,<br>
>> А.Н.Шатловский<br>
>> --<br>
>> Moscow.pm mailing list<br>
>> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
>><br>
><br>
><br>
><br>
> --<br>
> Best regards, Ruslan.<br>
> --<br>
> Moscow.pm mailing list<br>
> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
><br>
<br>
<br>
<br>
</div>--<br>
<div><div></div><div class="h5">С уважением,<br>
А.Н.Шатловский<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br>