Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Есть ли придел одержимости ОПП ? (http://www.flasher.ru/forum/showthread.php?t=207305)

Akopalipsis 07.04.2014 21:36

Collection в as3
 
Неделю я изучал коллекции, которые только мог найти и настал момент тестов...

Немного отступлю и расскажу, почему я в названии темы, упомянул слово ОПП.
В блогах, которые закреплены за этим форумом, на гитхабе, в гугл коде - везде есть комментарии,
как создателей, так и посетителей этих страниц. И везде громогласно звучит слово ОПП. Авторы гордятся и уверяют, что их детище самое настоящее ОПП, читатели ( особенно на форуме ) говорят, его слишком мало..

Так вот, настало время тестов и у меня сразу же появилось желание создать тему -
Перебор словаря в цикле с узлами ( Node ) [17.5 секунд] против [2 секунд] перебора с двумя массивами ( ключ:значение).

Перебор массива через итератор [17 секунд] против [2 секунд] просто перебора.

Вот если делать кнопку, то я согласен, что приложение из-за нескольких кликов бы не пострадало,
но работа с массивами, как я считаю, это одна из самых ресурсоемких задач.
И вопрос - неужели стоит делать, закрывая глаза на цифры выше, чтобы кто-то сказал, что это по ОПП?

А когда я думаю об использовании классов узлов-node, так мне вообще кажется, что те кто их использует
для одновременного доступа только к одному свойству, как минимум пришли из языков,
в которых это на скорость не как не сказывается.

samana 07.04.2014 21:40

Цитата:

Сообщение от Akopalipsis (Сообщение 1163160)
Перебор словаря в цикле с узлами ( Node ) [17.5 секунд]

А точно речь идёт о секундах, а не о миллисекундах?

caseyryan 07.04.2014 21:45

Цитата:

Есть ли придел одержимости ОПП ?
Этот предел называется Акопалипсис :D

Цитата:

так мне вообще кажется, что те кто их использует
для одновременного доступа только к одному свойству, как минимум пришли из языков,
в которых это на скорость не как не сказывается.
Советую почитать как работают коллекции в разных языках, какие типы коллекций есть, и в какой ситуации какая из них хороша, а какая не очень. Думаю, сразу станет многое понятно. Те массивы, что есть в ас3 - это жалкое подобие массивов (точнее коллекций, слово массив здесь не совсем подходит, оно более узкое) из более развитых языков. Но в конечном счете, все коллекции построены поверх массивов. А так как количество ячеек в массиве, после его создания, уже изменить невозможно, то внутри классво коллекций создаются новые массивы, больше емкости, чем исходный. Естественно все эти операции будут отнимать процессорное время и жрать память.

Подытожу, что же я хотел сказать, читай про коллекции. И таких вопросов возникать не будет.
Цитата:

А точно речь идёт о секундах, а не о миллисекундах?
Там наверное по миллиарду ячеек перебирается :D

Akopalipsis 07.04.2014 21:49

Нет, в массиве сто элементов и разница в секундах.
И разница не из-за емкости, а из-за hasNext()... nextData()...

dark256 07.04.2014 21:53

Сортировка массива из 100 элементов за ___ДВЕ секунды___ - это ничуть не лучше, чем за 5, 10, 17 или 100.
Ибо это должны быть сотые доли миллисекунды.
Что за массив? Он свопится на магнитофонную ленту в процессе обработки?

caseyryan 07.04.2014 21:56

Цитата:

Он свопится на магнитофонную ленту в процессе обработки?
Да тут граммпластинкой попахивает :D

Akopalipsis 07.04.2014 23:34

А Вы скорость выполнения на одной итерации мерите?

И я последовал совету и прочел уже тройку статей о коллекции в ява программировании.
И первое, что мне бросается - классы коллекции отличаются друг от друга тем, что одни позволяют быстро
получить элемент по ключу, вторые добавлять в начало и конец, третьи для работы с элементами лежащими
в середине...
Везде, везде и ещё раз везде написано о мизерном приросте производительности..
И у меня в связи с этим вопросы - в ява массив имеет те же методы, что и в as3?
А то на мой взгляд, который я имею сейчас, коллекция - это классы, которые в композиции имеют свойство с типом Array и... и так же содержат методы, которые и так есть в классе Array.
Но за счет того, что все это происходит через композицию, они замедляют родной массив и для этого
ещё нужно разделить все на несколько классов, чтобы одни добавляли в конец, другие в середину, делая
это так, как-будто в родном массиве нет push, pop и splice. И ещё все нужно хранить в нодах, которые замедляют, как создание, так и обращение к свойству data... И после того, как замедлили родной массив
почти в десять раз, нужно помнить, что ArrayList отличается от LinkedList...

Чего вот я не понимаю? Почему нормальным считается сначала замедлить в десять раз при помощи нод и
методов, которые и так уже существуют у массива, а потом говорить, что один немного, да быстрее?

Все ещё читаю статьи java и даже заглянул в доки. Не смог найти там хотя бы один метод для работы с массивами.
Получается, что коллекция в яве, это единственный инструмент для работы с хранилищем данных?
И если так, то зачем в as3 нужна коллекция в том виде, в котором она представлена в яве?

И я очень надеюсь на Ваш ответ!!! Так-как много слышал на форуме о коллекциях, видел, как используют другие,
опытные программисты, но не вижу смысла.

Добавлено через 40 минут
Так же был бы рад, если тот, кто помнит тему о коллекции в разделе as3, написал здесь ссылку на эту тему.
я почему-то был уверен, что она у меня в закладках и наступит время, когда я её прочту, но её там нет или тема называется так, что по названию не поймешь. Все что я помню, так это то, что alexcon314 ( вроде бы ) давал ссылку на пример реализации коллекции на as3.

alexcon314 08.04.2014 00:44

Закрыто, ибо название темы не отражает сути вопроса, да и вопроса я не наблюдаю.
...
Akopalipsis, дружище, когда вы, наконец, займетесь лепкой пельменей?
Присутствующим просьба - не кормите троля, у меня жир уже залил стол и на пол капает.


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

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