国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

基于C++執行內存memcpy效率測試的分析

2020-01-26 16:18:01
字體:
來源:轉載
供稿:網友

在進行memcpy操作時,雖然是內存操作,但是仍然是耗一點點CPU的,今天測試了一下單線程中執行memcpy的效率,這個結果對于配置TCP epoll中的work thread

數量有指導意義。如下基于8K的內存快執行memcpy, 1個線程大約1S能夠拷貝500M,如果服務器帶寬或網卡到上限是1G,那么網絡io的work thread 開2個即可,考慮到消息的解析損耗,3個線程足以抗住硬件的最高負載。

在我到測試機器上到測試結果是:

Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz

do memcpy speed:12.27 ms/MB
each thread can do memcpy 667.645 MB

復制代碼 代碼如下:

#include <iostream>
 #include <sys/time.h>
 #include <string.h>

 using namespace std;

 int main(int argc, char* argv[])
 {
         long len = 8192;
         int  loop = 200;
         char* p = new char[len];
         char* q = p;
         struct timeval start, end;
         gettimeofday(&start, NULL);
         for (int i =0; i < loop; ++i)
         {
                 char* p = new char[len];
                 *p = char(i);
                 memcpy(p, q, len);
                 delete [] p;
         }
         gettimeofday(&end, NULL);
         cout <<"do memcpy speed:" << ((end.tv_sec - start.tv_sec)*1000 + double(end.tv_usec - start.tv_usec) / (len*loop/1000/1000) ) / loop<<" ms/MB/n";
         cout <<"each thread can do memcpy "<< double(len)*loop/1000/1000 / ((end.tv_sec - start.tv_sec) + double(end.tv_usec - start.tv_usec) / 1000/1000) <<" MB/n";

 }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绵阳市| 四平市| 清苑县| 独山县| 清苑县| 呼和浩特市| 临邑县| 新河县| 万盛区| 静乐县| 集安市| 江城| 岳池县| 那曲县| 甘谷县| 三亚市| 阜阳市| 兰考县| 乌拉特中旗| 延庆县| 改则县| 太湖县| 囊谦县| 凤阳县| 东明县| 合川市| 焦作市| 晋州市| 安西县| 高阳县| 内江市| 达孜县| 辽源市| 上林县| 河南省| 榆社县| 潞城市| 霍林郭勒市| 咸丰县| 甘谷县| 咸丰县|