Pull to refresh

Comments 20

Идея простая и понятная, код забавляет; тестирование скорости доступа к БД от автора было бы похоже такое: SELECT * FROM table; SELECT * FROM table; SELECT * FROM table; SELECT * FROM table;…
а блин… она оказывается только в rss видна =)
там есть пометка как раз перед заголовком статьи
использовать Array для известного типа данных и ждать скорости — это ок. давно же уже известно что Vector гораздо быстрее Array работает с объектами заданного типа.
Vector быстрее только с int, uint и double ( Number ).
вектор быстрее с любым типом данны: jacksondunstan.com/articles/774
если не верите данным в статьях, проведите юнит-тест сами. увеличение скорости вектора по сравнению с arraycollection (и array хоть и в меньшей степени) очень заметно.
я проводил тесты. и в отличии от джексона запускал их больше одно раза. результаты прыгают вверх вниз. то быстрее то медленнее. более менее стабильный выигрыш по скорости он показывает на чтении ( в среднем ~0-10% ). по остальным показателям либо медленнее либо так же.
нуда, естественно все зависит от юзкейса, но если данные читаются (а именно такие тесты описаны в данной статье), то вектор всегда будет быстрее. и в реальных приложениях использование векторов субъективно (опять же при условии, что больше читается, чем пишется) скорость работы заметно выше.
заметна? вы шутите? выигрыш в 1-6 ms на пяти миллионах итерациях? да уж… заметно.
1-6 на 5 миллионах?
простой юнит-тест на коленке (сорц теста, сорц данных), всего 100к итераций:

array write test: 111ms
vector write test: 103ms
fixed vector write test: 136ms
— array read test: 180ms
vector read test: 14ms
fixed vector read test: 13ms

как видно из теста, для 100к итераций при чтении вектор выигрывает более, чем в 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/
Sign up to leave a comment.

Articles