Performance Comparison between c ++ multithreading and POSIX Multithreading
Code structure
Code Description
1. test. cpp
/************************************************************************* > File Name: test.cpp > Author: wangzhicheng > Mail: 2363702560@qq.com > Created Time: Thu 26 Feb 2015 09:35:49 PM WST ************************************************************************/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;void* fun(void *arg) {return NULL;}void g() {}int main() {int i;pid_t pid;pthread_t tid;struct timeval tv1, tv2;unsigned long long elapse;/* * create processes * *//*gettimeofday(&tv1, NULL);for(i = 0;i < 1000;i++) {pid = fork();if(pid < 0) {perror(fork error...!);exit(EXIT_FAILURE);}else if(!pid) {exit(0);}else {wait(NULL);}}gettimeofday(&tv2, NULL);elapse = (tv2.tv_sec - tv1.tv_sec) * 1e6 +(tv2.tv_usec - tv1.tv_usec);cout << elapse << endl; // 2.7026s*//* * create POSIX threads */gettimeofday(&tv1, NULL);for(i = 0;i < 1000;i++) {if(pthread_create(&tid, NULL, fun, NULL)) {perror(threads create error..!);exit(EXIT_FAILURE);}pthread_join(tid, NULL);}gettimeofday(&tv2, NULL);elapse = (tv2.tv_sec - tv1.tv_sec) * 1e6 +(tv2.tv_usec - tv1.tv_usec);cout << elapse << endl; // 1.591s/*www.bkjia.com * create c++11 threads *//*gettimeofday(&tv1, NULL);for(i = 0;i < 1000;i++) {thread mythread(g);mythread.join();}gettimeofday(&tv2, NULL);elapse = (tv2.tv_sec - tv1.tv_sec) * 1e6 +(tv2.tv_usec - tv1.tv_usec);cout << elapse << endl; // 1.848s*/return 0;}
2. makfile
CC=g++all:$(CC) -std=c++0x -g -o test test.cpp -pthread -lpthread