[ 최신 업데이트 : 벤치 마크 프로그램 및 예비 자료 제공, 아래 참조]
따라서 고전적인 응용 프로그램 인 정렬과 함께 속도 / 복잡성 트레이드 오프를 테스트하고 싶습니다.
부동 소수점 숫자의 배열을 오름차순으로 정렬하는 ANSI C 함수를 작성하십시오 .
당신이 사용할 수 있는 라이브러리, 시스템 호출, 멀티 스레딩 또는 인라인 ASM을.
출품작은 코드 길이 와 성능 이라는 두 가지 구성 요소로 판단됩니다 . 다음과 같이 점수가 매겨집니다. 항목은 길이 (공백이없는 # 문자 로그이므로 일부 서식을 유지할 수 있음) 및 성능 (벤치 마크에서 # 초 로그) 및 각 간격 [최고, 최악]에 따라 선형으로 [ 0,1]. 프로그램의 총점은 정규화 된 두 점수의 평균입니다. 최저 점수가 이깁니다. 사용자 당 하나의 항목.
정렬은 (결과적으로) 제자리에 있어야하며 (즉, 입력 배열은 반환 시간에 정렬 된 값을 포함해야 함) 이름을 포함하여 다음 서명을 사용해야합니다.
void sort(float* v, int n) {
}
계산할 문자 : sort
함수의 문자 , 서명 포함 및 추가 함수 (테스트 코드는 포함되지 않음)
프로그램은 float
2 ^ 20까지의 길이가 0보다 큰 숫자 값 과 배열을 처리해야합니다 .
sort
테스트 프로그램에 플러그인 과 그 의존성을 연결 하고 GCC를 컴파일합니다 (공상 옵션 없음). 여기에 여러 배열을 공급하고 결과의 정확성과 총 런타임을 확인합니다. 테스트는 Ubuntu 13에서 Intel Core i7 740QM (Clarksfield)에서 실행됩니다.
어레이 길이는 허용되는 전체 범위에 걸쳐 있으며 밀도가 높은 짧은 어레이입니다. 팻 테일 분포 (양수 및 음수 범위 모두)로 값이 임의적입니다. 일부 요소에는 중복 요소가 포함됩니다.
테스트 프로그램은 여기 ( https://gist.github.com/anonymous/82386fa028f6534af263 )에서 제공
됩니다 user.c
. TEST_COUNT
실제 벤치 마크에서 테스트 사례 수 ( )는 3000입니다. 질문 의견에 의견을 보내주십시오.
마감일 : 3 주 (2014 년 4 월 7 일 16:00 GMT). 2 주 후에 벤치 마크를 게시하겠습니다.
경쟁 업체에 코드를 제공하지 않으려면 마감일 가까이에 게시하는 것이 좋습니다.
벤치 마크 게시 시점의 예비 결과 :
다음과 같은 결과가 있습니다. 마지막 열에는 점수가 백분율로 표시되며, Johnny Cage가 우선 순위가 높아질수록 좋습니다. 나머지보다 훨씬 느린 알고리즘은 테스트의 하위 세트에서 실행되었고 시간은 외삽되었습니다. C는 자신의 qsort
비교를 위해 포함되었습니다 (Johnny는 빠릅니다!). 마감 시간에 최종 비교를 수행하겠습니다.