Идея простая и понятная, код забавляет; тестирование скорости доступа к БД от автора было бы похоже такое: SELECT * FROM table; SELECT * FROM table; SELECT * FROM table; SELECT * FROM table;…
использовать Array для известного типа данных и ждать скорости — это ок. давно же уже известно что Vector гораздо быстрее Array работает с объектами заданного типа.
вектор быстрее с любым типом данны: jacksondunstan.com/articles/774
если не верите данным в статьях, проведите юнит-тест сами. увеличение скорости вектора по сравнению с arraycollection (и array хоть и в меньшей степени) очень заметно.
я проводил тесты. и в отличии от джексона запускал их больше одно раза. результаты прыгают вверх вниз. то быстрее то медленнее. более менее стабильный выигрыш по скорости он показывает на чтении ( в среднем ~0-10% ). по остальным показателям либо медленнее либо так же.
нуда, естественно все зависит от юзкейса, но если данные читаются (а именно такие тесты описаны в данной статье), то вектор всегда будет быстрее. и в реальных приложениях использование векторов субъективно (опять же при условии, что больше читается, чем пишется) скорость работы заметно выше.
dl.dropbox.com/u/32655/AS3Test.swf
прошу. я там правда накосячил слегка, поэтому при чтении все же не 10 раз, но все равно выигрышь в несколько раз, но никак не секунд.
да уж…
1. тестируются локальные перменные, а не свойства класса.
2. запись не это push, а vec[i] = 5;
3. чтение это не pop, а vec[i]
4. фиксированные vector определяется вторым булевым параметром.
вы ради приличия хоть посмотрели бы на тесты джексона. там правды больше чем у вас. просто его не правда исключает статистику.
1. не, ну если у вас есть желание писать большой и страшный юнит-тест я его с удовольствием протестирую
2. это когда push перестал быть записью?
3. pop это не чтение? ооооок. но чтение заданного элемента будет естественно медленнее pop()
я вот последнее предложение не понял, честно говоря, что вы этим хотели сказать?
>Странно, но данное утверждение относится и к Object
Странно бы было если б было не так.
Такое впечатление, что автор относится к этому как к магии. А надо б было проанализировать байт код, который генерируется компилером и все сразу станет ясно.
Доступ к элементам массива тут осуществляется, как a[«x»], а, не как a[0]. Я больше, чем уверен, что у a[0] скорость куда выше, чем у a[«x»], т.к. обращаясь к a[«x»] он обращается не к элементу массива, а к полю объекта, что по сути — совсем разные вещи.
Тут немного про такое поведение массива: jpauclair.net/2009/12/02/tamarin-part-i-as3-array/
Сравнение операторов доступа к полям объектов