2014-01-17 2 views
5

Windows 7은 아무런 문제가없는 반면 내 우분투 컴퓨터의 성능은 R kmeans {stats}에서 끔찍합니다.왜 kmeans가 고사양 우분투 컴퓨터에서는 느리지 만 Windows에서는 느리지 않습니까?

X은 5000 x 5 매트릭스 (수치 변수)입니다.
k = 6

내 데스크탑 컴퓨터는 인텔 제온 CPU의 W3530의 @입니다 2.80GHz의 × 8 (즉, 8 개 코어) 우분투 12.04.4 LTS (GNU/리눅스 3.2.0-58-일반에게와 델 프리시전 T3500, x86_64)에서 24GB RAM을 지원합니다.

R 버전 3.0.2 (2013년 9월 25일) - "프리즈 항해"저작권 (C) 2013 통계 컴퓨팅 플랫폼에 대한 연구 재단 : x86_64에-PC-리눅스 GNU (64 비트) 인텔 코어 i5-2430M와 윈도우 7 64 비트 노트북 비교

> system.time(X.km <- kmeans(X, centers=k, nstart=25)) 
    user system elapsed 
49.763 52.347 103.426 

2.40GHz 2 개 코어 8기가바이트 RAM, R 3.0.1, 동일한 데이터 @

> system.time(X.km <- kmeans(X, centers=k, nstart=25)) 

    user system elapsed 
    0.36 0.00 0.37 

훨씬 빨라졌습니다. nstart=1에 문제가 계속 발생하면 실행 시간을 증폭하려고합니다.

내가 놓친 게 있습니까?

set.seed(101) 
k <- 6 
n <- as.integer(10) 
el.time <- vector(length=n) 
X <- matrix(rnorm(25000, mean=0.5, sd=1), ncol=5) 
for (i in 1:n) { # sorry, not clever enough to vectorise 
    el.time[i] <- system.time(kmeans(X, centers=k, nstart=i))[[3]] 
} 
print(el.time) 
plot(el.time, type="b") 

내 결과 (우분투 기계) :

> print(el.time) 
    [1] 0.056 0.243 0.288 0.489 0.510 0.572 0.623 0.707 0.830 0.846 

Windows 시스템 :

> print(el.time) 
[1] 0.01 0.12 0.14 0.19 0.20 0.21 0.22 0.25 0.28 0.30 
+1

#sorry 주석에 따르면 : for 루프 대신에 sapply (1 : n, function (i) system.time (kmeans (X, centers = k, nstart = i)) 본질적으로 동일하므로 성능이 향상되지 않습니다. – tonytonov

+0

또한 Windows 컴퓨터의 결과는 무엇입니까? 내 Windows 타이밍은 우분투에서 나에게 가깝습니다. – tonytonov

+0

감사합니다. @tonytonov. 월요일에 Windows 타이밍으로 업데이트하여 내 책상으로 돌아올 것입니다. –

답변

0

당신이 우분투를 실행하는

하면 달성 무엇 번 참조 스스로 그것을 시도 가상 머신에서? 그 경우에 볼 수있는 결과는 훨씬 느립니다. 메모리, 프로세서, 디스크 공간이 VM에 할당 된 정도에 따라 다릅니다. VM 내에서 실행되고 있지 않다면 그 결과는 당혹 스럽다. 나는 당신이 이것을 실행할 때 두 시스템의 CPU 사용, 메모리 사용 등이 무엇인지 각각의 실행에 대한 성능 카운터를보고 싶습니까? 그렇지 않으면 내가 연결할 수있는 유일한 것은 코드가 Windows 시스템의 L1 캐시에 "적합"하지만 Linux 시스템에는 없다는 것입니다. Xeon은 Core i5가 3MB 밖에없는 8GB (L3?) 캐시를 가지고 있지만 L3이라고 가정하고 있습니다. 나는 L1과 L2 캐시 구조가 어떻게 생겼는지 모른다.

+0

아니요 디스크 기반 설치입니다. 나는 또한 캐시에 대해 전혀 알지 못한다. 나는 @ping이 지금까지 최고의 단서를 가지고 있다고 생각합니다. 최근에 설치를 업데이트했지만 아직이 코드를 확인하지 않았습니다. 직장에 복귀하면 곧 업데이트됩니다. –