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.
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 ?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
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.
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
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.
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