代码改变世界

双核的执行效率的测试

2009-12-27 22:25  youthjiang  阅读(274)  评论(0编辑  收藏  举报
//Adopt dual core to parallel pragramming(采用双核并行计算)
#include "stdafx.h"
#include 
"time.h"


void test()
{
    
int nVal = 0;
    clock_t clkTOne 
= clock();
    
    
for(int i=0; i<100000000; i++)
    {
        nVal 
= i+1;    
    }

    clock_t clkTTwo 
= clock();

    printf(
"Time = %d\n", clkTTwo-clkTOne);

}
int _tmain(int argc, _TCHAR* argv[])
{
    clock_t clkTOne 
= clock();

    
#pragma omp parallel for

    
for(int i=0; i<2; i++)
    {
        
//printf("i=%d\n",i);    
        test();
    }

    clock_t clkTTwo 
= clock();    
    printf(
"Total Time = %d\n", clkTTwo-clkTOne);

    test();

    
return 0;
}

 

程序的执行结果:

我的机器是E7200的双核处理器:

在for循环中,执行的时间分别是297ms,343ms

打印的时间花费了343ms,后面的执行时间是297ms.

 

//去掉并行计算
#include "stdafx.h"
#include 
"time.h"


void test()
{
    
int nVal = 0;
    clock_t clkTOne 
= clock();
    
    
for(int i=0; i<100000000; i++)
    {
        nVal 
= i+1;    
    }

    clock_t clkTTwo 
= clock();

    printf(
"Time = %d\n", clkTTwo-clkTOne);

}
int _tmain(int argc, _TCHAR* argv[])
{
    clock_t clkTOne 
= clock();

    
//#pragma omp parallel for

    
for(int i=0; i<2; i++)
    {
        
//printf("i=%d\n",i);    
        test();
    }

    clock_t clkTTwo 
= clock();    
    printf(
"Total Time = %d\n", clkTTwo-clkTOne);

    test();

    
return 0;
}

 

 程序的结果:

可见并行计算的效率。

 参考文献:

1. 周伟明老师的博客文章:OpenMP并行程序设计<一>http://blog.csdn.net/drzhouweiming/archive/2006/08/28/1131537.aspx