
On Jun 19, 2012, at 7:39 AM, Igor R wrote:
I use boost trim function and find it perform very well in single-thread environment.
But when I call trim function in multi-thread environment, it will have a poor performance.
Perhaps, it's because boot::trim() uses std::locale(), which involves a lot of locks in a multi-threaded environment. But try analysing it with a performance profiler.
That should be really easy to test. How does your test code perform if you change it to this: void *TrimNString(void *arg) { string base ="fdsffdsafdsa"; locale loc = locale(); for(int i = 0; i != 50000000;i++) { string str = base; trim(str, loc); } return 0; } Note also that trim calls the locale to look for whitespace, which is more flexible than your test for " \r\n\t". That's probably a significant performance difference, too. -- Marshall Marshall Clow Idio Software mailto:mclow.lists@gmail.com A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait). -- Yu Suzuki