01.04.2010, 07:11
Основываясь на просмотре исходников и моем их понимании:
1) Проперти организованы в виде линейного связного списка (подробности тут), каждый из элементов которого содержит имя (строка символов) и значение (целое число). Еще есть третий параметр, в документации называемый id абстрактной машины - придуман для того, чтобы можно было иметь несколько элементов с одинаковыми именами либо значениями и различать их при поиске; он не накладывает никаких ограничений и не отсеивает разные скрипты по возможности доступа к элементам и может принимать вообще любое значение, хоть 100500.
2) Из первого пункта следует, что время доступа к пропертям прежде всего зависит от их количества - чем больше, тем дольше (тесты сверху тому подтверждение). Поэтому лучше по ненадобности удалять более неиспользуемые элементы. Еще стоит отметить, что любая операция, будь то поиск (getproperty), вставка (setproperty) или удаление (deleteproperty) элемента, по имени производится существенно медленне, нежели по значению (строки сравниваются дольше чисел).
3) Насчет лимитов... по-моему есть только один - количество доступной памяти, больше элементов - больше нужно памяти, кроме того ее расходование зависит и от размеров имен хранящихся элементов.
Короче, заключение: штука, безусловно, полезная, но для интенсивного использования и больших объемов данных не очень подходит... таков мой субъективный вердикт
PS: весь код пропертей находится в /axm/amxcore.c
1) Проперти организованы в виде линейного связного списка (подробности тут), каждый из элементов которого содержит имя (строка символов) и значение (целое число). Еще есть третий параметр, в документации называемый id абстрактной машины - придуман для того, чтобы можно было иметь несколько элементов с одинаковыми именами либо значениями и различать их при поиске; он не накладывает никаких ограничений и не отсеивает разные скрипты по возможности доступа к элементам и может принимать вообще любое значение, хоть 100500.
2) Из первого пункта следует, что время доступа к пропертям прежде всего зависит от их количества - чем больше, тем дольше (тесты сверху тому подтверждение). Поэтому лучше по ненадобности удалять более неиспользуемые элементы. Еще стоит отметить, что любая операция, будь то поиск (getproperty), вставка (setproperty) или удаление (deleteproperty) элемента, по имени производится существенно медленне, нежели по значению (строки сравниваются дольше чисел).
3) Насчет лимитов... по-моему есть только один - количество доступной памяти, больше элементов - больше нужно памяти, кроме того ее расходование зависит и от размеров имен хранящихся элементов.
Короче, заключение: штука, безусловно, полезная, но для интенсивного использования и больших объемов данных не очень подходит... таков мой субъективный вердикт
PS: весь код пропертей находится в /axm/amxcore.c