Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.11.2010, 20:40
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 1  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Т.е. в данном случае, что Dictionary, что Object - один хрен?
Цитата:
Почему же, есть хэш-функции свёртки чего-то там в число, которое будет являться индексом. Я не очень знаю как это дело работает, но там не банальное сравнение.
А есть ссылочки на тему?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 10.11.2010, 20:47
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
Т.е. в данном случае, что Dictionary, что Object - один хрен?
Dictionary - объектный хэш, т.е. можно пихать туда объекты.
"1" "1" - по идее, это 2 разных объекта. Но почему то он ведёт себя как один в контексте Dictionary мне неясно.
UPD: хотя, я, кстати, погорячился причем сильно. "1"==="1", а очевидно что если взять значение от одного ключа два раза - оно совпадёт. Так что всё вполне понятно.

Например, здесь:
http://ru.wikipedia.org/wiki/%D0%A5%...B8%D1%86%D0%B0
Цитата:
Выполнение операции в хеш-таблице начинается с вычисления хеш-функции от ключа. Получающееся хеш-значение i = hash(key) играет роль индекса в массиве H.


Последний раз редактировалось Psycho Tiger; 10.11.2010 в 20:50.
Старый 10.11.2010, 22:00
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
О боже. Простой тип может существовать только в связке со сложным (ну или статикой, но класс тоже можно считать сложным типом), причем он не может никуда ссылаться. Он просто есть в данном месте. И если это данное место удалить - то удалится и простой тип.

Цитата:
Вам пофик, жрёт ваш массив гиг оперативки или килобайт? =)
Приведите цифры сколько что ест памяти при какой загрузке.
Конкретно у меня когда нужен объектный хэш - используется диктионари, когда строковой - обджект, чего и Вам желаю. Поэтому кто сколько "жрёт" меня не волнует - я использую инструмент там, где надо. А разницу в памяти между Obect и Dictionary юзер и не заметит - на утечках фп улетит куда больше.

Старый 10.11.2010, 22:37
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Конкретно у меня когда нужен объектный хэш - используется диктионари, когда строковой - обджект, чего и Вам желаю.
А когда нужен числовой?
Я про то, что такие "низкоуровневые особенности кода" могут таки делать хорошую разницу =)
Если Array - ассоциативный массив на самом деле, то для того, чтобы поиметь элемент с индексом в 1000000000 ему таки меньше памяти понадобится, чем если он обычный массив. =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 10.11.2010, 22:02
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 5  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
-De-, спасибо за пример, наглядно и доступно.
Цитата:
Например, здесь:
http://ru.wikipedia.org/wiki/%D0%A5%...B8%D1%86%D0%B0
Таким образом может получится, что массив/вектор в итоге дешевле выйдет?
Самому сейчас нет желания тест скорости писать, может у кого есть ссылка по теме? Помню как-то видел, только не помню где.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 10.11.2010, 22:04
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Код AS3:
			var o:Object = { };
			var d:Dictionary = new Dictionary();
 
			trace(getSize(o)); //24
			trace(getSize(d)); //32
 
			var s:String = "1";
			var v:String = "v";
 
			o[s] = v;
			d[s] = v;
 
			trace(getSize(o)); //32
			trace(getSize(d)); //40
+4 байта на ссылку под ключ, +4 байта на ссылку под значение с каждым добавлением и там и там.
Поздравляю, Вы спасли 8 байт.
UPD: хотя, не 8, может чуть больше, возможно эти 8 байт - 2 ссылки, которые getSize считает по 4 байта. Но я думаю мысль ясна.

Добавлено через 44 секунды
Цитата:
Таким образом может получится, что массив/вектор в итоге дешевле выйдет?
Вектор/массив будет всегда быстрее хеша. Особенно если заполнение будет постепенным с 0.


Последний раз редактировалось Psycho Tiger; 10.11.2010 в 22:08.
Старый 10.11.2010, 22:43
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 7  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Теоретики, блин хоть кто-то из вас тест по ссылке смотрел?
60мс на 1000000 итераций это для вас хорошая разница?

Старый 10.11.2010, 22:54
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
Сообщение от alatar Посмотреть сообщение
Теоретики, блин хоть кто-то из вас тест по ссылке смотрел?
60мс на 1000000 итераций это для вас хорошая разница?
А мы про память
Цитата:
А когда нужен числовой?
Array/Vector
Цитата:
Если Array - ассоциативный массив на самом деле, то для того, чтобы поиметь элемент с индексом в 1000000000 ему таки меньше памяти понадобится, чем если он обычный массив. =)
Код AS3:
var a:Array = [];
trace(getSize(a)); //40
a[1000000] = 1;
trace(getSize(a)); //48
И что это меняет? Для меня - ничего, я не работаю с памятью напрямую.
Код AS3:
var i:int = 10000000;
			var a:Array = [];
 
			var t:int = getTimer();
			while (i--) a[i] = 1;
			trace(getTimer() - t);
 
			a = [];
			t = getTimer();
			for (i = 0; i < 10000000; i++) a[i] = 1;
			trace(getTimer() - t);
Код:
2020
548
А вот это заставляет считать меня Array чуть менее ассоциативным.

И бить по пальцам тех, кто забивает в массивы значения не с 0. Во всяком случае тех, кто специально.


Последний раз редактировалось Psycho Tiger; 10.11.2010 в 22:59.
Старый 11.11.2010, 09:39
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 9  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Array/Vector


Код AS3:
var a:Array = [];
trace(getSize(a)); //40
a[1000000] = 1;
trace(getSize(a)); //48
И что это меняет? Для меня - ничего, я не работаю с памятью напрямую.
Теперь то же самое проделайте с вектором и расскажите, что разницы нет =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 11.11.2010, 13:05
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
Сообщение от -De- Посмотреть сообщение
Теперь то же самое проделайте с вектором и расскажите, что разницы нет =)
Вектор себя по другому ведёт - чтобы писать в куда-то далеко в него сначала нужно его расширить, тем же сеттером length, при этом getSize`у положить на его длину и количеством элементов в нём. Он ведёт себя как настоящий массив.

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.