2012-10-01 34 views
0

我在unix(它的集羣)和windows(intel core duo,2Gb RAM)上運行相同的代碼。我可以看到在運行時間方面存在顯着差異。我可以在unix中看到,它只使用一個內核,但在Windows上,它可能使用兩個內核(我不確定)。我的關注如下:運行相同腳本的兩臺不同機器之間的R性能差異

Windows: 
    user system elapsed 
207.12 8.82 472.04 
Unix 
user system elapsed 
327.765 2.493 330.819 

我不明白,爲什麼cpu處理時間和windows經過時間差異太大。我打破了代碼轉換成段,這只是發生在閱讀和寫作部分(I/O),計算其餘的都是非常快的比較於UNIX和不必須在「用戶」和「經過」任何時間差

user system elapsed 
48.765 0.00 52.69 

我沒有做任何事情特殊,但我米閱讀非常大的文件中的一些300MB

indata <- read.csv(mutFile, sep="\t", header = TRUE) 

我如何才能避免這種差異,以提高整體性能?

+1

請創建一個人們可以用來重現您的情況的可重複的示例。現在我們還在猜測。 –

+0

你的程序在兩種情況下讀取的文件在哪裏?從硬盤驅動器與網絡驅動器讀取數據可能會產生巨大的差異。 – flodel

回答

0

爲了在閱讀數據集時獲得高性能,我建議購買固態硬盤(SSD)。但是,您的其他硬件(主要是您的SATA控制器)可能是瓶頸。此外,固態硬盤在單位金額上並不便宜。一般來說,性能的差異可以通過硬件的差異來解釋('普通'硬盤和筆記本硬盤)。解決方案是花錢在更快的機器上。或者,就像@JoshuaUlrich所說的那樣,花一些時間優化文本文件的閱讀,以獲得當前硬件良好的性能提升。

+0

你能解釋一下爲什麼「cpu time」和「total elapsed」時間差異太大?我可能不理解那部分。正如我所提到的,所有計算部分在'cpu time'和'elapsed time'中都沒有任何差異,而且它們也很快 – user1631306

+0

您的Linux計算機和windows計算機上的cpu可能相當,這使得cpu-bound計算大致相等兩臺機器的性能。讀取數據集的差別可能是因爲磁盤讀取速度不同,而Linux計算機的硬盤速度更快。Windows機器有沒有可能是筆記本電腦? –

+0

是的,它的一臺筆記本電腦 – user1631306

2

300 MB遠非「非常大」。您可以按照?read.csv中的建議,特別是「內存使用情況」部分的說明提高read.csv的速度。這應該使兩個系統的運行時間更短。

至於系統之間的區別,我懷疑Unix盒具有更快的硬盤和/或更快的RAM。

+0

我第一次沒有正確地讀過這個問題,但涉及到兩個不同的計算機...... –

+0

Windows PC實際上是一臺筆記本電腦,可能是一個慢速5400 rpm的磁盤,其中Linux機器可能具有更快的7200 rpm磁盤。 –

+0

或者Windows PC是一個帶有7200 RPM磁盤的桌面,而Unix盒子是帶有RAID陣列和/或10k RPM磁盤的服務器。 –

相關問題