R  투토리알을 듣다가,  R에서 연산을 하는동안 얼마나 시간이 걸리는지 측정을 할 수있는 수식을 발견하고, 꽤 재미있어했다. 10^8개의 숫자를 처리하는데  4s정도가 걸렸다. (심지어 관사 컴퓨터에서는 10^8개의 숫자는 처리를 못하고 10^7개의 숫자만 처리했음) 



저에 글을 읽다가 노트북의 경우 전원 연결 정도에따라 CPU의 가동정도가 다르다는 이야기를 들은적이 있는데, 혹시 연산속도에 있어 차이가 발생하는지 알아보았다. 샘플로 돌린 테스트에서는 전체 CPU의 17(13.7+3.3)%정도가 가동되었다. 




아마 단순계산에 있어서 4개의 코어가 작동하지 않고 (본인의 노트북은  i7쿼드 코어임) 1개의 코어만 작동한다고 가정했다. 


따라서 이정도일 경우 충분히 CPU의 성능정도( 싱글코어의 계샨력)을 검증 해 볼수 있다고 생각을 하고, 실험에 들어갔다. 



계산법은 간단했다. 


-2^20 에서 +2^20 까지의 숫자의 범주 안에서 10^8 개의 숫자를 랜덤으로 추출하고,그 10^8개의 숫자집합의 평균,표준편차,분산을 구하는데 얼마나 시간이 걸리는지를 측정했다. 그러한 1회의 시간측정을 전원 연결 전후로 30회 시행하였다. 랜덤숫자를 뽑는것의 공정성을 기하기 위해 R의 runif 기능에서 seed 숫자는 고정 시켰다. 수식은 아래와 같다. 또한 모든 응용프로그램은 종료 시켰으며, R이외의 프로그램은 동작시키지 않았다. wifi도 꺼 놓았다. 





전원 연결전의 계산시간의 집합을 var.off 로 두고, 전원연결 후의 계산시간 집합을 var.on로 두었다.

이에 따른 var.on 및 var.off 의 평균과 정리(summary)그리고 boxplot 







그다음에 이것이 통계적으로 유의하냐에 대한 검증을 해야하는데 사실 이에대한 지식이 전무에 가깝다. 

(그렇기에 이부분부터 통계적 검증에 있어 틀린 부분이 있다면 매몰찬 충고 부탁드립니다) 


범주형 변수와, 짝지은 자료임이라고 생각하고 paired  t-test 를 하였다. 




그결과 p 값은 0.1 유의한 차이를 보여주지 못하였다. 



이로써 지금 내가 쓰는 맥북프로 기준으로 쿼드코어에서 코어 1개를 쓰고 그중 thread 8개만 쓰는 R의 연산에서, 노트북의 전원 공급방법의 차이에 따른 CPU의 성능차이는 없는것으로 나타났다. 




      신전보건지소이야기  |  2012.09.20 15:56



's Blog is powered by Daum