[Moscow.pm] Производительность объектов.
Сергей Мартынов
sergey на martynov.info
Чт Мар 27 09:10:34 PDT 2008
> Немного другое направление.
Ой, я оказывается не совсем то имел в виду :) У меня есть другое
(недоделанное) исследование, уже с использованием всяких модулей с
CPAN. До описания дело не дошло, но вот архив с исходниками:
http://martynov.info/files/data_structures_bench.zip
Там создан набор классов, использующий разные подходы для аксессоров,
и над объектами выполняются простые действия. Сравнивается такие
варианты:
Прямой доступ по ключам хэша:
DSBench::Hash::Direct::Simple - хэш
DSBench::Hash::Direct::Blessed - blessed хэш
Аксессор (один метод для установки и получения значения поля)
DSBench::Hash::Accessor::Man - вручную написанные методы
DSBench::Hash::Accessor::Gen - сгенерированные методы
DSBench::Hash::Accessor::ClassAccessor - использование Class::Accessor
Геттер/сеттер (отдельные методы для получения и установки значений)
DSBench::Hash::GetterSetter::Man - вручную написанные методы
DSBench::Hash::GetterSetter::Gen - сгенерированные методы
DSBench::Hash::GetterSetter::ClassAccessor - использование Class::Accessor
(в общем, лучше посмотреть исходники - там понятно)
У меня на ноуте получаются такие результаты:
Rate H-GS-CA H-Acc-CA H-Acc-Man H-Acc-Gen H-GS-Gen
H-GS-Man H-Dir-Bls H-Dir-Smp
H-GS-CA 4.49/s -- -3% -46% -46% -53%
-54% -84% -84%
H-Acc-CA 4.64/s 3% -- -44% -44% -52%
-52% -83% -84%
H-Acc-Man 8.29/s 84% 79% -- -1% -14%
-15% -70% -71%
H-Acc-Gen 8.35/s 86% 80% 1% -- -14%
-14% -70% -71%
H-GS-Gen 9.66/s 115% 108% 17% 16% --
-1% -65% -66%
H-GS-Man 9.76/s 117% 110% 18% 17% 1%
-- -64% -66%
H-Dir-Bls 27.5/s 511% 491% 231% 229% 184%
181% -- -4%
H-Dir-Smp 28.6/s 536% 515% 245% 242% 196%
193% 4% --
--
С уважением, Сергей Мартынов.
Подробная информация о списке рассылки Moscow-pm