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