some optimizations
This commit is contained in:
parent
a9f97bfedb
commit
464e0b17ec
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user