parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Расход памяти при GET_field в bool

nkostya 06.12.2022 12:11

Еще один интересный кейс
@main[]
$self._not_null(^none.bool(false))

^Rusage:measure[stat]{
^for[i](0;100000){
^self.do[]
}
}

$console:line[^inspect[$stat]]

#end @main[]



##############################################################################
@do[data]
$a($self._not_null)
# $a($self.not_null)
#end @do[]



##############################################################################
@GET_not_null[]
$result[$self._not_null]
#end @GET_not_null[]
Расход памяти при обращении напрямую в $self._not_null - 8 МБ
При заворачивании через GET_not_null - 16 МБ

Я так понимаю, что это из-за копирования значения в геттере?

Если использовать memory:compact то расход падает.
auto-compact тоже помогает.

Но почему не хватает уже выделенной памяти?
Из https://www.parser.ru/forum/?id=86187 я понял что "освобождаются в основном параметры методов" - это как раз такой случай.