0
我有它运行的函数多次这样的程序:性能是一样的连续运行
int main(){
std::ifstream file(inFile);
std::string input;
while(std::getline(file, input)){
myFunction(input);
}
return 0;
}
myFunction(std::string){
//some work
}
我使用boost上运行多个线程函数创建一个线程池,因为他们的行为配合完美地在这样的并行化方面:
int main(){
std::ifstream file(inFile);
std::string input;
/*Creating the thread pool and intializing the threads*/
boost::asio::io_service io_service;
boost::asio::io_service::work work_(io_service);
boost::thread_group threads;
for (std::size_t i = 0; i < NUMTHREADS; ++i)
threads.create_thread(boost::bind(&boost::asio::io_service::run, &io_service));
while(std::getline(file, input)){
io_service.post(boost::bind(&myFunction, input));
}
io_service.stop();
threads.join_all();
return 0;
}
myFunction(std::string){
//some work
}
我已经添加了仅主要部分的代码片段。我得到了正确的输出,但这并没有改善性能!如果按顺序运行,我会得到相同的确切运行时间。
我怀疑该作业不正确提交到池,但我怎么能检查?
UPDATE
我能够调查多线程和检查工作是否正确提交,看来它的每个线程都有自己的工作,但仍表现并没有改变。
* *如何你衡量它?看起来像创建线程和/或从文件读取克服parallelizm的收益开销。 –
你的意思是收益?我比较两种方法之间的运行时间。如何检查内存开销? – user7631183
由运行时间我的意思是由while循环所花费的时间只有 – user7631183