Я только что столкнулся с этой же проблемой: Vector.sort () из 50000 объектов-значений в поле с тремя различными значениями: ~ 2 минуты.Затем я вызываю почти точно такую же сортировку, с той лишь разницей, что я разрываю связь (когда x == y) для вторичного поля с уникальным значением (то есть для поля с 50000 различными значениями): меньшечем 1 сек!Вот код функции сортировки, чтобы проиллюстрировать, что я имею в виду:
private function vastlyImprovedVectorSortFunc(x:MyVO, y:MyVO):Number
{
if(x.fieldWithThreeValues > y.fieldWithThreeValues)
return 1;
else
if(x.fieldWithThreeValues < y.fieldWithThreeValues )
return -1;
else
if(x.uniqueFieldWithManyValues > y.uniqueFieldWithManyValues)
return 1;
else
if(x.uniqueFieldWithManyValues < y.uniqueFieldWithManyValues )
return -1;
else
return 0;
}
Мир Bizarro, верно ?!Похоже, я прошу функцию проделать гораздо больше работы, применяя вторичную сортировку к очень уникальному полю - но, очевидно, производительность функции сортировки Vector ухудшается с меньшим количеством отдельных «корзин» сортировки, в которые можно помещать вещи.Я обнаружил это, когда сортировал свой вектор на fieldWithAboutTwentyValues, и производительность по-прежнему была плохой (~ 20 секунд), но значительно улучшилась.Тогда было еще лучше на поле WithAboutAHundredValues;поэтому я подумал, почему бы не пойти на все и просто сделать окончательную сортировку по (уникальному) первичному ключу.
Изменит правила игры для меня!Надеюсь, это поможет кому-то еще.Удивил, что это не где-то в документах.