Czy kiedykolwiek uzyskałeś znaczące przyspieszenie za pomocą boost:: pool?

Grałem z boost:: pool kilka razy w miejscach, w których wydawało mi się, że poważnie uderzam w stertę z dużą ilością przedmiotów "churn". Ogólnie używałem boost::object_pool LUB boost::pool_alloc jako parametru szablonu STL. Jednak wynik jest niezmiennie, że wydajność jest praktycznie niezmieniona, lub znacznie się pogorszyła.

Jestem ciekaw, czy uda mi się z nim odnieść sukces.

Jakich rzeczy powinienem szukać w profilowaniu wyjścia, które może wskazywać na boost:: pool prawdopodobnie pomoże ?

[[2]}czy to naprawdę dość trudne do poprawy na starym dobrym malloc ?
Author: timday, 2009-01-23

4 answers

Pule pamięci są najbardziej efektywne imo dla przetwarzania stylu transakcji, gdzie można przydzielić do puli, a następnie po zakończeniu transakcji, po prostu zrzucić go w zapomnienie. Prawdziwe przyspieszenie nie jest to, że każda alokacja będzie znacznie szybsza, ponieważ będziesz miał prawie zerową fragmentację pamięci w bardzo długiej aplikacji.

W sortowaniu wygląda na to, że Twoje aplikacje nie wymagają użycia puli pamięci

 20
Author: Hippiehunter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-23 16:46:55

Tak, 500% wzrost prędkości. Aplikacja (raczej głupio, ale czasami trzeba pracować z tym, co się ma) kopiowała elementy z 1 std::map do innego w pętli( w pętli było pewne podejmowanie decyzji), a wynikowe przydziały na serwerach wielowątkowych / procesowych spowodowały spór o stertę. Dodałem pulę boost jako alokator na drugiej mapie, a rezultatem był 500% wzrost prędkości wykonywania aplikacji.

 16
Author: Ian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-13 07:09:27

Ślepe optymalizacje nie są dobre. Spróbuj użyć alokatora pamięci google, nie musisz nawet rekompilować aplikacji. Tutaj znajdziesz to, co musisz wiedzieć:

Http://google-perftools.googlecode.com/svn/trunk/doc/tcmalloc.html

Gaetano

 10
Author: Gaetano Mendola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-23 15:52:37

Zanim zaczniesz optymalizować, możesz najpierw prześledzić problemy z wydajnością do alokacji pamięci.

Więc zawęź swoje profilowanie, aby wskazać lokalizację problemu. Może to być wiele połączeń do tego samego kodu, które mogą nie potrwać długo, gdy wywołane tylko raz.

 3
Author: HS.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-23 14:21:49