#include<iostream>
#include<tbb/tbb.h>
#include<sys/time.h>
const size_t end = 1000000;
int is_prime(int x)
{
if(x<=1)
return 0;
else
{
for(int i=2;i<=x/2;i++)
{
if(x%i==0)
return 0;
}
return 1;
}
}
class FindPrime{
public:
FindPrime(){
//std::cout<<"start find prime..."<<std::endl;
}
void operator() (const tbb::blocked_range<size_t> &r)const{
//std::cout<<"begin:"<<r.begin()<<" "<<"end:"<<r.end()<<std::endl;
for(size_t i= r.begin();i!=r.end();i++)
{
if(is_prime(i))
{
std::cout<<i<<std::endl;
}
}
}
};
void findPrime()
{
for(int i=2;i<end;i++)
{
if(is_prime(i))
{
std::cout<<i<<std::endl;
}
}
}
int main()
{
timeval start_time_p,end_time_p,start_time,end_time;
gettimeofday(&start_time_p,0);
tbb::parallel_for(tbb::blocked_range<size_t>(0,end),FindPrime());
gettimeofday(&end_time_p,0);
gettimeofday(&start_time,0);
findPrime();
gettimeofday(&end_time,0);
long time_use = 1000000*(end_time.tv_sec-start_time.tv_sec)+end_time.tv_usec-start_time.tv_usec;
time_use = time_use;
std::cout<<"no parallel use time:"<<time_use<<std::endl;
long time_use_p = 1000000*(end_time_p.tv_sec-start_time_p.tv_sec)+end_time_p.tv_usec-start_time_p.tv_usec;
time_use_p = time_use_p;
std::cout<<"parallel use time:"<<time_use_p<<std::endl;
return 0;
}
TBB
最新推荐文章于 2025-01-22 10:03:32 发布