0
public class Zigzag{
public static void zigzag_optimizated(int n, int m) {
int length = 2*m;
int localIndex[] = new int[n];
for(int i = 0; i<n; i++){
localIndex[i] = i % length;
}
for (int i = 0; i <= m; i++) {
for (int j = 0; j < n; j++) {
if (localIndex[j]==i || localIndex[j] == length-i)
assert true;
// System.out.print('*');
else
assert true;
//System.out.print('-');
}
//System.out.println();
assert true;
}
}
public static void zigzag(int n, int m) {
for (int i = 0; i <= m; i++) {
for (int j = 0; j < n; j++) {
int k = j % (2*m);
char c = '-';
if (k==i || k == 2*m-i) c = '*';
assert true;
//System.out.print(c);
}
assert true;
//System.out.println();
}
}
public static void main(String args[]){
final int n = 5000000;
long start = System.nanoTime();
zigzag(n, n);
long time = System.nanoTime() - start;
long start2 = System.nanoTime();
zigzag_optimizated(n, n);
long time2 = System.nanoTime() - start2;
System.out.println();
System.out.println("Time1:" + time);
System.out.println("Time2:" + time2);
}
}
두 가지 기능은 동일한 알고리즘을 사용하여 화면에 지그재그 보드를 인쇄합니다. 최적화 된 버전에서 k는 다시 계산되지 않도록 배열에 저장되며 2 * m이 추출됩니다. 나는 더 빠르고 정확한 벤치 마크 assert true;
-System.out.println()
을 변경,하지만 난 벤치 마크를 수행 할 때, 원래 버전은 항상 실행 빠른 코드 최적화의 실행 속도가 느려짐 - 필요 설명
을 (http://codereview.stackexchange.com/) –
아마 메모리 액세스는'*'와'%'보다 느린 때문이다. – immibis
... 다시 읽으면 여기에 질문이 표시되지 않습니다. – immibis