Просмотр полной версии : Есть ли придел одержимости ОПП ?
Akopalipsis
07.04.2014, 21:36
Неделю я изучал коллекции, которые только мог найти и настал момент тестов...
Немного отступлю и расскажу, почему я в названии темы, упомянул слово ОПП.
В блогах, которые закреплены за этим форумом, на гитхабе, в гугл коде - везде есть комментарии,
как создателей, так и посетителей этих страниц. И везде громогласно звучит слово ОПП. Авторы гордятся и уверяют, что их детище самое настоящее ОПП, читатели ( особенно на форуме ) говорят, его слишком мало..
Так вот, настало время тестов и у меня сразу же появилось желание создать тему -
Перебор словаря в цикле с узлами ( Node ) [17.5 секунд] против [2 секунд] перебора с двумя массивами ( ключ:значение).
Перебор массива через итератор [17 секунд] против [2 секунд] просто перебора.
Вот если делать кнопку, то я согласен, что приложение из-за нескольких кликов бы не пострадало,
но работа с массивами, как я считаю, это одна из самых ресурсоемких задач.
И вопрос - неужели стоит делать, закрывая глаза на цифры выше, чтобы кто-то сказал, что это по ОПП?
А когда я думаю об использовании классов узлов-node, так мне вообще кажется, что те кто их использует
для одновременного доступа только к одному свойству, как минимум пришли из языков,
в которых это на скорость не как не сказывается.
Перебор словаря в цикле с узлами ( Node ) [17.5 секунд]
А точно речь идёт о секундах, а не о миллисекундах?
caseyryan
07.04.2014, 21:45
Есть ли придел одержимости ОПП ?
Этот предел называется Акопалипсис :D
так мне вообще кажется, что те кто их использует
для одновременного доступа только к одному свойству, как минимум пришли из языков,
в которых это на скорость не как не сказывается.
Советую почитать как работают коллекции в разных языках, какие типы коллекций есть, и в какой ситуации какая из них хороша, а какая не очень. Думаю, сразу станет многое понятно. Те массивы, что есть в ас3 - это жалкое подобие массивов (точнее коллекций, слово массив здесь не совсем подходит, оно более узкое) из более развитых языков. Но в конечном счете, все коллекции построены поверх массивов. А так как количество ячеек в массиве, после его создания, уже изменить невозможно, то внутри классво коллекций создаются новые массивы, больше емкости, чем исходный. Естественно все эти операции будут отнимать процессорное время и жрать память.
Подытожу, что же я хотел сказать, читай про коллекции. И таких вопросов возникать не будет.
А точно речь идёт о секундах, а не о миллисекундах?
Там наверное по миллиарду ячеек перебирается :D
Akopalipsis
07.04.2014, 21:49
Нет, в массиве сто элементов и разница в секундах.
И разница не из-за емкости, а из-за hasNext()... nextData()...
Сортировка массива из 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, дружище, когда вы, наконец, займетесь лепкой пельменей?
Присутствующим просьба - не кормите троля, у меня жир уже залил стол и на пол капает.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.