2013-05-17 3 views
1

원시 [] 배열을 허용하고 정렬을 수행하고 LOW LATENCY (고성능) 요구 사항에 대한 원시 [] 배열을 반환하는 인터페이스 메소드를 설계해야하며 다음과 같은 여러 스레드에서 호출됩니다. 같은 시간Java 6 정렬 배열

매우 높은 성능이 요구되는이 목적을 위해 정렬 된 집합 또는 int []가 더 좋습니까?

+0

"동시에 많은 스레드에 의해 호출 될 것이다"귀하의 예제에서 차이가 없습니다. 말하지 않는 한 : 메서드는 성능을 향상시키기 위해 많은 스레드를 사용해야합니다. – assylias

+4

또한'Arrays.sort (yourArrayOfInts);의 문제점은 무엇입니까? – assylias

+0

예상되는 전화 번호는 무엇입니까? 그들은 어떻게 배포됩니까? –

답변

3

이 시도 어떤 응답 감사 감사하겠습니다 ...

String[] fruits = new String[] {"Pineapple","Apple", "Orange", "Banana"}; 

    Arrays.sort(fruits); 

    int i=0; 
    for(String temp: fruits){ 
     System.out.println("fruits " + ++i + " : " + temp); 
} 

또는이 ...

List<String> fruits = new ArrayList<String>(); 

    fruits.add("Pineapple"); 
    fruits.add("Apple"); 
    fruits.add("Orange"); 
    fruits.add("Banana"); 

    Collections.sort(fruits); 

    int i=0; 
    for(String temp: fruits){ 
     System.out.println("fruits " + ++i + " : " + temp); 
} 

을이 읽기 ... QuickSort

+0

기본적으로이 방법은 계산 엔진에 의해 호출됩니다.이 방법은 초당 2 백만 번이라고 말하면서 Array.Sort가 효율적이지는 않습니다. 이 배열에서 최대 크기는 100 요소 일 수 있습니다. – user2394292

+0

@ user2394292 링크 기사를 읽으십시오. –

4

이를 방법은 200 만 번 pe와 같이 호출 될 수 있습니다. r 초 및 Array.Sort 효율적이지 않습니다 확신합니다. 최대 크기는 빠른 마이크로 기준은 Arrays.sort 약 100 int S int[]의 배열을 정렬 할 수 있음이 보여 배열

100 개 요소 일 수있다. 하나의 코어를 사용하는 표준 데스크탑 컴퓨터 (i7)에서 1.3 마이크로 초 *.

따라서 초당 약 80 만 회 (약 1 코어 만 사용한다고 가정 함) 호출 할 수 있습니다. 따라서 프로세서가 4 개 이상이면 초당 2 백만 건의 정렬 작업을 수행 할 수 있어야합니다..

참고 : 배열에 일반적인 특징이있는 경우 (여러 개의 중복 또는 거의 좁은 범위의 모든 정렬 또는 숫자) 사용자는 더 적합한 알 고를 찾을 수 있지만 일반적인 사용 예에서는 JDK algo는 강력하고 효율적입니다. (JMH으로 수행) 마이크로 벤치 마크의


* 결과 :

Run result "sort": 1341.298 ±(95%) 11.701 ±(99%) 19.406 nsec/op 
Run statistics "sort": min = 1331.329, avg = 1341.298, max = 1352.831, stdev = 9.425 
Run confidence intervals "sort": 95% [1329.597, 1352.999], 99% [1321.892, 1360.704]