Массив объектов или объект объектов
Достопочтенная публика, на ваше публичное осуждение выставляется мой замутненый разум, в значительной степени ОН расщепленный.
Если Array - объект, и содержит объекты то это как не крути массив объектов со всеми присущими тратами памяти, с другой стороны если взять Хэш массив, опять таки объект, то опять таки имеем массив объектов, правда с "именованными" ключами. Вопрос: нахрена козе баян? Ну а если серьезно, то где памяти больше утечет? |
Сам-то как думаешь?
Все специфичные методы объектов Array, и Object находятся в прототипах. то есть большая часть затраты памяти - напрямую связано с самим абстрактным типом данных. ну, и вполне очевидно, что ассоциативный массив занимает больше памяти чем неассоциативный |
А с чего памяти вообще утекать-то?
|
в яваскрипте нет массивов ;-)
|
tenshi, а кто сказал что они есть?
Kolyaj, я не имел в виду "утечки" как таковые, речь идет о тратах памяти. Gvozd, так-то так, только есть у меня подозрения что ?!"маленькие"!? массивы выгоднее делать на основе Object, а не Array. Но с другой стороны, Array потомок Object, а значит каждое значение отягощено всей дребухой присущей как тому, так и другому в случае хранения числовых значений. В общем нехрена не очевидно ;) Но линия такая тонкая :blink: Вы меня просветлите, мож я че не так думаю :D З.Ы. Согласитесь, тема более интересная чем: "напишите мне скрипт, а то я тут только сегодня зарегался" или "у меня на сайте, адрес которого я вам не дам, в коде ошибка которую я вам не покажу, в чем дело-то" :victory: |
Тема неинтересная, вы не заметите разницы, особенно на ?!"маленьких"!? массивах.
|
Ну пока это поделки, да. Однако некоторые поделки вырастают до разных размеров :) Я предпочитаю, по возможности, подумать и написать помелче код. А если тонкости языка известны, то какие проблемы.
Вот в частности в PHP при использовании цикла for лучше написать ++$i, а не наоборот. В случае одного цикла это значения не имеет, а вот в случае навороченной CMS уже имеет, но никто особо не стремиться все это переписывать, хлопотно. Со сборщиком мусора там тоже тараканы есть. И тут тоже плюшки свои есть. Подискутировать на тему высоких материй всегда интересно, можно даже ченить подчерпнуть :) Насчет маленьких, не замечу, но она есть, однако при правильном использовании и при больших будет разница. Только вот неплохо было бы понять критерий слова "правильное" :) А также не стоит забывать, что объем затраченной памяти обратно пропорционален производительности. |
Цитата:
Я не понимаю, на чём вы пытаетесь память сэкономить, на именах свойств? |
Цитата:
поэтому "дребуха" хранится в уже и так существующих объектах, и никак не сказывается на размер новых объектов. А вообще, это экономия на спичках. Надо руководствоваться в данном случаен не затратами памяти, а уровнем абстракции, и использовать логически верный Абстрактный Тип Данных К тому же, речь о производительности JS следует вести в контексте конкретных браузеров. Внутри них возможны различные реализации. |
Цитата:
Не забывайте, Вы работаете с объектами и значит вы имеете дело с указателями ссылающимися на другие указатели, а данные разбросаны по памяти. Чем больше объект с которым вы работаете, тем больше фрагментированна память. Ну и пошли поехали. Каждая реализация интерпритатора: JScript, БелкаРыба да и хер как там они называются могут оптимизировать работу с ней, но могут этого и не делать. Вам ASM известен, хоть поверхностно? Если да, то должны понять о чем я и к чему все это. |
Часовой пояс GMT +3, время: 04:40. |