這篇對 .so 解釋很清楚。
出處 --->http://loda.zhupiter.com/LinuxDynamicLibrary.htm
//----以下 copy ------
memcpy(B, A, chunksize);
 
透過mmap來做的話,可以藉由以下的寫法
int self;
self = open("/proc/self/mem", O_RDONLY);
如下表
< 筆者電腦配備: PII 350,64MB 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  |   
|        |           |           |   
 
我們不難發現當記憶體區塊為512、1024、2048、4096時,memcpy都勝過mmap。不過當拷貝的記憶體區塊越來越大時,mmap明顯表現的相當有效率,像最後測試的記憶體區塊大小為65536 bytes,mmap相較於memcpy所花的時間少了約6秒鐘。
//---------------------------------
沒有留言:
張貼留言