🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309481

Re: Zabrali kopiowanie przy zapisie...

#309481
From: Piotr Wyderski
Date: Tue, 10 Oct 2017 06:50
49 lines
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-mail
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>

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