Article View: pl.comp.lang.c
Article #267681Re: Ciemna strona C++
From: Łukasz Krotowski
Date: Sat, 10 Nov 2007 22:33
Date: Sat, 10 Nov 2007 22:33
55 lines
4087 bytes
4087 bytes
Dnia 2007-11-10, Piotr Wyderski napisał: > Łukasz Krotowski wrote: >> Globalna. W przypadku wątków w TLS. Dla uproszczenia możemy założyć, że >> alokator wielowątkowy można zastąpić wieloma instancjami alokatora >> jednowątkowego w TLS. > > Dobrze kombinujesz, tylko jest jeden problem: dostęp do zmienych > w TLS jest względnie powolny, jeśli opierasz się na API systemowym. > Wymyślenie naprawdę szybkich TLSów, działających bez wsparcia > API na głównej ścieżce zajęło mi sporo czasu i wynik jest dość > nietrywialny. Działa od kilku lat. Ale istotnie, bardzo szybkie TLSy > to kluczowy element współczesnego alokatora. Pewnie masz rację. Ale jeszcze nie zajmowałem się TLS na takim poziomie. Zazwyczaj __thread w gcc mi wystarcza (plus to co jest w WinAPI, przynajmniej do czasu aż wyjdzie stabilne gcc4 dla win32). Mówiąc zupełnie szczerze, ostatnimi czasy wąskim gardłem są dla mnie dyski i baza. >> Hmm, jak pewnie się domyśliłeś dealokacja w do_not_deallocate_allocator >> składa się z zera instrukcji. > > To ja nie rozumiem, jak to ma działać. Dla każdego ciągu > wektorów osobna pula? Bez jaj. :-) Nie. Załóżmy, że masz jakiś kawałek programu który działa na pewnej, znanej ilości pamięci (stałej, bądź jako funkcja wejścia). Wtedy możesz, z nonszalanckim ,,a co mi tam'', wszystkie kontenery z tego kawałka programu przestawić na alokator który tylko alokuje. A po zakończeniu, jednym pool.release() zwolnić całą pamięć. To nie dotyczy tylko wektorów. A zaleta jest taka, że nie musisz dbać o kolejność poszczególnych alokacji i dealokacji. >> albo przeciągnę sobie życie local_pool przez więcej >> niż jedno wywołanie funkcji to będę szybszy. (*) > > Nie nadążam. Masz darmowe budowanie rekordów aktywacji? > Ech, kombinujecie, Panocku, jak koń pod górę. Ja też nie nadążam. Skąd Ci się tutaj wzięły rekordy aktywacji? >> (*) Przekomarzanie się o kilka instrukcji. > > No nie takie kilka, już się TLSy zaczęły pojawiac na horyzoncie. :-) > A poza tym akurat w moim zastosowaniu te kilka instrukcji było > istotne, formater znacznie przyspieszył po przejściu z mojego i tak > zoptymalizowanego alokatora w std::vector na kontener "stosowy"; > o przypadku standardowego alokatora to szkoda gadać. Formater? Wysoko-wydajny formater? Czego? -- Łukasz Krotowski | lukasz.krotowski_AT_gmail.com
Technical Details
Message-ID:
<fh5bjn$fk9$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl> <fh2po8$d0c$1@news.dialog.net.pl> <fh2vap$ggn$1@news.supermedia.pl> <fh4c1t$795$1@news.dialog.net.pl> <fh4cn0$etq$1@inews.gazeta.pl> <fh4ed5$8ih$1@news.dialog.net.pl> <fh4haa$2hm$1@inews.gazeta.pl> <fh4htk$agv$1@news.dialog.net.pl> <fh4n53$q3k$1@inews.gazeta.pl> <fh4qk4$fpq$1@news.dialog.net.pl> <fh4snb$hvb$1@inews.gazeta.pl> <fh51uj$k3t$1@news.dialog.net.pl> <fh53d6$edf$1@inews.gazeta.pl> <fh569d$mmn$1@news.dialog.net.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: Łukasz Krotowski <notreal@notreal.pl> Newsgroups: pl.comp.lang.c Subject: Re: Ciemna strona C++ Date: Sat, 10 Nov 2007 22:33:27 +0000 (UTC) Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 55 Message-ID: <fh5bjn$fk9$1@inews.gazeta.pl> References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl> <fh2po8$d0c$1@news.dialog.net.pl> <fh2vap$ggn$1@news.supermedia.pl> <fh4c1t$795$1@news.dialog.net.pl> <fh4cn0$etq$1@inews.gazeta.pl> <fh4ed5$8ih$1@news.dialog.net.pl> <fh4haa$2hm$1@inews.gazeta.pl> <fh4htk$agv$1@news.dialog.net.pl> <fh4n53$q3k$1@inews.gazeta.pl> <fh4qk4$fpq$1@news.dialog.net.pl> <fh4snb$hvb$1@inews.gazeta.pl> <fh51uj$k3t$1@news.dialog.net.pl> <fh53d6$edf$1@inews.gazeta.pl> <fh569d$mmn$1@news.dialog.net.pl> NNTP-Posting-Host: static-81-219-20-61.devs.futuro.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1194734007 16009 81.219.20.61 (10 Nov 2007 22:33:27 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Sat, 10 Nov 2007 22:33:27 +0000 (UTC) X-User: bies_pospolity User-Agent: slrn/0.9.8.1pl1 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit