免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2697 | 回复: 0
打印 上一主题 下一主题

single-thread vs multithread [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-25 23:24 |只看该作者 |倒序浏览
奇怪的问题:单线程快过多线程?\r\n在一台sun服务器上运行,2cpu, 8G RAM\r\n线程做的事情完全没有关系,不存在线程间同步等问题。\r\n结果是单线程快过多线程,faint\r\n如果是unbound线程,则差不多,单线程略快。\r\n如果是bound线程,则单线程快过多线程一倍。\r\n唯一的例外是线程里对map<int,int>;进行插入和删除操作(如下程序被#if 0注释掉的两行),并且使用bound线程,则多线程快过单线程。但其他操作,包括将map改成map<string, int>;,结果都是单线程快过多线程。\r\n真是晕呀,谁能指点一下???\r\n\r\n#include <string>;\r\n#include <iostream>;\r\n#include <utility>;\r\n#include <map>;\r\n#include <unistd.h>;\r\n#include <pthread.h>;\r\n\r\nusing namespace std;\r\n\r\n\r\nvoid* thread_main(void *arg)\r\n{\r\n    int n = *(int*)arg;\r\n\r\n    map<int, int>; m;\r\n\r\n    int i;\r\n\r\n    for (i = 0; i < n; ++i) {\r\n#if 0\r\n        m.insert(make_pair(i, i));\r\n        m.erase(i);\r\n#endif\r\n//        char tmp[20];\r\n//       snprintf(tmp, 20, \"%s\", \"this is a test!!!\";\r\n          int tmp = atoi(\"12345\";\r\n//       cout << i << endl;\r\n    }\r\n\r\n    gettimeofday(&tv2, &tz2);\r\n\r\n    return 0;\r\n}\r\n\r\n\r\nint main(int argc, char *argv[])\r\n{\r\n    int n = atoi(argv[1]);\r\n    int k = atoi(argv[2]);\r\n\r\n    pthread_t t_id[100];\r\n    int i;\r\n    struct timeval tv1, tv2;\r\n    struct timezone tz1, tz2;\r\n\r\n    gettimeofday(&tv1, &tz1);\r\n\r\n    for (i = 0; i < n; ++i)\r\n    {\r\n        pthread_attr_t t_attr;\r\n        pthread_attr_init(&t_attr);\r\n        pthread_attr_setscope(&t_attr, PTHREAD_SCOPE_SYSTEM);\r\n        pthread_create(&t_id, &t_attr,thread_main, (void*)&k);\r\n    }\r\n    int j;\r\n    for(j = 0; j < n; ++j)\r\n        pthread_join(t_id[j], 0);\r\n\r\n    gettimeofday(&tv2, &tz2);\r\n\r\n    long interval = (tv2.tv_sec - tv1.tv_sec) * 1000000 + (tv2.tv_usec - tv1.tv_usec);\r\n    cout << \"DURATION: \" << ((double)interval) << endl;\r\n}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP