Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2010, 04:48
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Массив объектов или объект объектов
Достопочтенная публика, на ваше публичное осуждение выставляется мой замутненый разум, в значительной степени ОН расщепленный.
Если Array - объект, и содержит объекты то это как не крути массив объектов со всеми присущими тратами памяти, с другой стороны если взять Хэш массив, опять таки объект, то опять таки имеем массив объектов, правда с "именованными" ключами.
Вопрос: нахрена козе баян? Ну а если серьезно, то где памяти больше утечет?
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2010, 08:29
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сам-то как думаешь?
Все специфичные методы объектов Array, и Object находятся в прототипах.
то есть большая часть затраты памяти - напрямую связано с самим абстрактным типом данных.
ну, и вполне очевидно, что ассоциативный массив занимает больше памяти чем неассоциативный
Ответить с цитированием
  #3 (permalink)  
Старый 26.10.2010, 09:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А с чего памяти вообще утекать-то?
Ответить с цитированием
  #4 (permalink)  
Старый 26.10.2010, 12:26
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

в яваскрипте нет массивов ;-)
__________________
.ня
Ответить с цитированием
  #5 (permalink)  
Старый 26.10.2010, 13:15
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

tenshi, а кто сказал что они есть?
Kolyaj, я не имел в виду "утечки" как таковые, речь идет о тратах памяти.
Gvozd, так-то так, только есть у меня подозрения что ?!"маленькие"!? массивы выгоднее делать на основе Object, а не Array. Но с другой стороны, Array потомок Object, а значит каждое значение отягощено всей дребухой присущей как тому, так и другому в случае хранения числовых значений.
В общем нехрена не очевидно Но линия такая тонкая
Вы меня просветлите, мож я че не так думаю

З.Ы. Согласитесь, тема более интересная чем: "напишите мне скрипт, а то я тут только сегодня зарегался" или "у меня на сайте, адрес которого я вам не дам, в коде ошибка которую я вам не покажу, в чем дело-то"
Ответить с цитированием
  #6 (permalink)  
Старый 26.10.2010, 13:18
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Тема неинтересная, вы не заметите разницы, особенно на ?!"маленьких"!? массивах.
Ответить с цитированием
  #7 (permalink)  
Старый 26.10.2010, 14:11
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Ну пока это поделки, да. Однако некоторые поделки вырастают до разных размеров Я предпочитаю, по возможности, подумать и написать помелче код. А если тонкости языка известны, то какие проблемы.
Вот в частности в PHP при использовании цикла for лучше написать ++$i, а не наоборот. В случае одного цикла это значения не имеет, а вот в случае навороченной CMS уже имеет, но никто особо не стремиться все это переписывать, хлопотно. Со сборщиком мусора там тоже тараканы есть. И тут тоже плюшки свои есть.
Подискутировать на тему высоких материй всегда интересно, можно даже ченить подчерпнуть
Насчет маленьких, не замечу, но она есть, однако при правильном использовании и при больших будет разница. Только вот неплохо было бы понять критерий слова "правильное"
А также не стоит забывать, что объем затраченной памяти обратно пропорционален производительности.
Ответить с цитированием
  #8 (permalink)  
Старый 26.10.2010, 14:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от vladlen
В случае одного цикла это значения не имеет, а вот в случае навороченной CMS уже имеет
И в случае навороченной CMS не имеет, т.к. в процессе одного запроса все эти циклы запускаться не будут, а в одном случае один цикл, в другом -- другой. Поэтому разницы вы опять же не заметите. Даже если у вас внезапно появится цикл с перебором миллиона элементов (какие обычно делают в подобных тестах), то основное время будет тратиться на обработку самих элементов, а не на $i++, так что смена на ++$i опять же ничего не даст.


Я не понимаю, на чём вы пытаетесь память сэкономить, на именах свойств?
Ответить с цитированием
  #9 (permalink)  
Старый 26.10.2010, 15:34
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от vladlen
Array потомок Object, а значит каждое значение отягощено всей дребухой присущей как тому, так и другому в случае хранения числовых значений.
Array имеет в качестве прототипа экземпляр Array-а, который имеет в качестве прототипа экземпляр Object-а
поэтому "дребуха" хранится в уже и так существующих объектах, и никак не сказывается на размер новых объектов.

А вообще, это экономия на спичках.
Надо руководствоваться в данном случаен не затратами памяти, а уровнем абстракции, и использовать логически верный Абстрактный Тип Данных
К тому же, речь о производительности JS следует вести в контексте конкретных браузеров.
Внутри них возможны различные реализации.
Ответить с цитированием
  #10 (permalink)  
Старый 26.10.2010, 15:36
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Сообщение от Kolyaj Посмотреть сообщение
Я не понимаю, на чём вы пытаетесь память сэкономить, на именах свойств?
Экономя память поднимается производительность. На рациональном использовании того что лучше подходит для решения тех или иных задач.
Не забывайте, Вы работаете с объектами и значит вы имеете дело с указателями ссылающимися на другие указатели, а данные разбросаны по памяти. Чем больше объект с которым вы работаете, тем больше фрагментированна память. Ну и пошли поехали. Каждая реализация интерпритатора: JScript, БелкаРыба да и хер как там они называются могут оптимизировать работу с ней, но могут этого и не делать.
Вам ASM известен, хоть поверхностно? Если да, то должны понять о чем я и к чему все это.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
getProperty('href') в IE - Объект не поддерживает это свойство или метод kalexi Общие вопросы Javascript 2 04.05.2010 15:13
Как записать в массив новый объек а не ссылку на исходный объект Casufi Общие вопросы Javascript 12 08.02.2010 02:40
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Быстрый поиск объектов Shasoft Общие вопросы Javascript 7 30.07.2009 05:28
ассоциативный массив где ключ это год или ..... Sandr Общие вопросы Javascript 8 18.07.2008 15:39