星期三, 5月 07, 2008

Memcpy vs MMAP

偶然逛街詢到:

這篇對 .so 解釋很清楚。
出處 --->http://loda.zhupiter.com/LinuxDynamicLibrary.htm
//----以下 copy ------

memcpy(B, A, chunksize);

透過mmap來做的話,可以藉由以下的寫法

int self;

self = open("/proc/self/mem", O_RDONLY);

B = mmap(B, chunksize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, self, (off_t)A);

如下表

< 筆者電腦配備: PII 35064MB RAM>

memcpy

mmap

512

0.14

0.23

1024

0.26

0.35

2048

0.51

0.59

4096

1.00

1.06

8192

2.56

2.10

16384

5.67

4.55

32768

11.71

8.96

65536

23.63

17.75

我們不難發現當記憶體區塊為512102420484096時,memcpy都勝過mmap。不過當拷貝的記憶體區塊越來越大時,mmap明顯表現的相當有效率,像最後測試的記憶體區塊大小為65536 bytesmmap相較於memcpy所花的時間少了約6秒鐘。

//---------------------------------

沒有留言: