Показать сообщение отдельно
  #16 (permalink)  
Старый 22.05.2012, 21:17
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Maxmaxmахimus
melky,
ну во первых я уже писал что я просто забыл удалить лишнее

return Object.getOwnPropertyNames( this._elements );
если ты на серъёзе собираешься оставить эту строчку, то IE7, IE8, Opera будут срать кирпичами при каждом вызове keys.


Сообщение от Maxmaxmахimus
Так же нет свойства lenght которое бы постоянно изменялось, есть метод count, то есть когда НУЖНО, то можешь посчитать количество элементов и закэшировать. В остальыне же моменты на это ресурсы не тратятся.
Ы. тут ситуация такая же, как и у свойства length у массивов в старых браузерах (напомню, он не кешировался)
Сообщение от Maxmaxmахimus
операций по получению ключей меньше чем операций с работой с элементами хэша.
return cached_keys;
// vs
for(i in elements) keys.push(i);
return keys;

ты так думаешь? "просто вернуть" и "перебрать".
Сообщение от Maxmaxmахimus
Или когда НУЖНО просто ПОСЧИТАТЬ эти ключи.
у тебя все операции с элементами сделаны через высокоуровневые методы. при добавлении элемента просто увеличиваешь цифру количества элементов на один.
Сообщение от Maxmaxmахimus
что лучше ВСЕГДА кэшировать ключи. При любых операциях дергать этот кэш.
при добавлении добавляешь в кэш. при удалении - удаляешь. это все операции с изменением кеша.

PS. а давай протестируем Hash на больших данных? что голословить...
Ответить с цитированием