2012-12-22 118 views
0

我需要使用自定義排序規則排序大約100000個整數。如果我使用比較器,我需要有一個數組Integer實例,創建速度較慢,排序較慢並佔用更多內存。使用自定義排序規則對整數(非整數)數組排序

對Galaxy Nexus的

快速基準測試與Android 4.2:

createIntArrayAndFillWith1to100000; // 18 ms 
createIntegerArrayAndFillWith1to100000; // 191 ms (using Integer.valueOf(i)) 
Arrays.sort(randomInts); // 354 ms 
Arrays.sort(randomIntegers, simpleComparator); // 1734 ms 

是實現自定義排序我最好的選擇?

+2

通過自動裝箱它會慢多少? – OmniOwl

+0

我覺得不得不問......支持你的應用程序太慢了,還是你不喜歡速度? –

+0

@Vipar我要測試並報告回來:) – fhucho

回答

1

我認爲唯一的辦法就是對你自己的元素數據類型int實施一個排序算法。 Java庫不提供每個元素數據類型的版本。拳擊/拆箱就是答案。

我只是簡單地爲這個特殊的需求實現一個排序算法。 (如果速度真的如此重要) 通過快速排序進行排序很容易實現quicksort (wikipedia)