some optimizations

This commit is contained in:
Hannes Janetzek 2013-01-11 20:07:55 +01:00
parent a9f97bfedb
commit 464e0b17ec

View File

@ -15,6 +15,7 @@
package org.oscim.generator; package org.oscim.generator;
/** /**
* Sort Tiles by 'distance' value.
* based on ComparableTimSort: * based on ComparableTimSort:
* everything below is Copyright OpenJDK, Oracle * everything below is Copyright OpenJDK, Oracle
*/ */
@ -32,12 +33,12 @@ public class TileDistanceSort {
} }
static int compareTo(JobTile a, JobTile b) { static int compareTo(JobTile a, JobTile b) {
if (a == null && b == null) if (a == null) {
if (b == null)
return 0; return 0;
if (a == null)
return 1; return 1;
}
if (b == null) if (b == null)
return -1; return -1;
@ -65,7 +66,6 @@ public class TileDistanceSort {
while (left < right) { while (left < right) {
int mid = left + right >>> 1; int mid = left + right >>> 1;
//if (pivot.compareTo(a[mid]) < 0)
if (compareTo(pivot, a[mid]) < 0) if (compareTo(pivot, a[mid]) < 0)
right = mid; right = mid;
else else
@ -75,17 +75,25 @@ public class TileDistanceSort {
int n = start - left; int n = start - left;
switch (n) if (n < 16) {
{ int end = left + n;
case 2: while (end-- > left)
a[(left + 2)] = a[(left + 1)]; a[end + 1] = a[end];
//$FALL-THROUGH$ } else {
case 1:
a[(left + 1)] = a[left];
break;
default:
System.arraycopy(a, left, a, left + 1, n); System.arraycopy(a, left, a, left + 1, n);
} }
// switch (n)
// {
// case 2:
// a[(left + 2)] = a[(left + 1)];
// //$FALL-THROUGH$
// case 1:
// a[(left + 1)] = a[left];
// break;
// default:
// System.arraycopy(a, left, a, left + 1, n);
// }
a[left] = pivot; a[left] = pivot;
} }
} }