Article View: pl.comp.lang.c
Article #309481Re: Zabrali kopiowanie przy zapisie...
From: Piotr Wyderski
Date: Tue, 10 Oct 2017 06:50
Date: Tue, 10 Oct 2017 06:50
49 lines
3445 bytes
3445 bytes
bartekltg wrote: > Niby tak, ale w pewnym momencie trafiamy na poziom googlo facebooka > i takie ilości serwerów już tak tanie nie są:) Jak się już naprawdę inaczej nie da, to włączamy myślenie. > Albo biolog napisał sibie na stringach przetwarzanie DNA i mi klaster zapycha... Trzeba pisać grant o większy klaster. :-) > A na poważnie, dlaczego string ma być immutable? Bo zrobienie go mutable nie jest realne technicznie bez pójścia na zgniłe kompromisy. Znając dokładną wielkość napisu można przydzielić mu dokładnie tyle pamięci, ile potrzebuje, bez dodawania buforów na przypadek rozszerzania. Wiedząc, że się nie zmieni można spróbować zunifikować go z innymi stringami w systemie. Ich bywa dużo, a redundancja też bywa duża. Zyski potrafią być dramatyczne, bez porównania do zabawek w rodzaju COW. Mogę go dać wątkom do przetwarzania bez potrzeby blokowania, bo jakiś pacjent potencjalnie może dodać mu literkę. Powodów jest mnóstwo i im bardziej "fejsbuczane" stają się dane wejściowe, tym bardziej staje się to oczywiste. Ale sprawa dotyczy nie tylko stringów, tylko wszelkich innych danych strumieniowych, np. LOBów. > Przecież moge chcieć tworzyć string literka po literce. Możesz chcieć. Literki możesz chcieć dodawać z obu stron -- mieliśmy na to konkretne przykłady praktyczne. Standardowa implementacja wymaga do tego czasu liniowego. Obustronnie rosnący kontener tak na wszelki wypadek? Beznarzutowo? Zapomnij, do budowania stringów służy specjalizowany builder. > Mogę chcieć zrobić jakieś operacja na nim, > std::sort czy std::next_permutation > W tym wypadku będą(?) miał metodę która mi to wywala wynik > jako string. Ale to nie są standardowe potrzeby i albo będą wspierane byle jak (tj. string -> builder -> string), albo zasługują na dedykowaną implementację. > std::string nie służy tylko do trzymania napisu, ale > i przetwarzania, składania. I to jest błąd na poziomie projektowym. Pozdrawiam, Piotr
Technical Details
Message-ID:
<orhqki$j8q$1@node2.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<or4v67$ene$1@node1.news.atman.pl> <72ac4d9c-806c-4c0d-9d17-e6a1bca634cb@googlegroups.com> <148be543-e417-4b7b-aaa1-5fad87fe41bd@googlegroups.com> <137swhz7qzvw7.dlg@tyczka.com> <6a1a94c7-2d75-4569-8fae-574fb23c919e@googlegroups.com> <d73024b7-92e0-49f9-b827-bfc7b639739b@googlegroups.com> <73ec442f-1a8b-43fc-a06f-a5534a6f3438@googlegroups.com> <da509e00-e7ff-49bb-8870-b77b25bcc560@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: Piotr Wyderski <peter.pan@neverland.mil> Newsgroups: pl.comp.lang.c Subject: Re: Zabrali kopiowanie przy zapisie... Date: Tue, 10 Oct 2017 08:50:53 +0200 Organization: ATMAN - ATM S.A. Lines: 49 Message-ID: <orhqki$j8q$1@node2.news.atman.pl> References: <or4v67$ene$1@node1.news.atman.pl> <72ac4d9c-806c-4c0d-9d17-e6a1bca634cb@googlegroups.com> <148be543-e417-4b7b-aaa1-5fad87fe41bd@googlegroups.com> <137swhz7qzvw7.dlg@tyczka.com> <6a1a94c7-2d75-4569-8fae-574fb23c919e@googlegroups.com> <d73024b7-92e0-49f9-b827-bfc7b639739b@googlegroups.com> <73ec442f-1a8b-43fc-a06f-a5534a6f3438@googlegroups.com> <da509e00-e7ff-49bb-8870-b77b25bcc560@googlegroups.com> NNTP-Posting-Host: h82-143-146-166-static.e-wro.net.pl Mime-Version: 1.0 X-Trace: node2.news.atman.pl 1507618258 19738 82.143.146.166 (10 Oct 2017 06:50:58 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Tue, 10 Oct 2017 06:50:58 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 In-Reply-To: <da509e00-e7ff-49bb-8870-b77b25bcc560@googlegroups.com> X-Antivirus: Avast (VPS 171009-2, 2017-10-09), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit