🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Zabrali kopiowanie przy zapisie...

#309511
From: (fir)
Date: Mon, 09 Oct 2017 12:54
67 lines
4786 bytes
W dniu poniedziałek, 9 października 2017 14:48:08 UTC+2 użytkownik (fir) napisał:
> W dniu poniedziałek, 9 października 2017 14:30:37 UTC+2 użytkownik (fir) napisał:
> > W dniu poniedziałek, 9 października 2017 07:23:19 UTC+2 użytkownik bartekltg napisał:
> > > On Saturday, October 7, 2017 at 3:20:51 PM UTC+2, Wojciech Muła wrote:
> > > > On Saturday, October 7, 2017 at 11:16:42 AM UTC+2, Roman Tyczka wrote:
> > > > > On Fri, 6 Oct 2017 06:08:35 -0700 (PDT), M.M. wrote:
> > > > > 
> > > > > >> C++ ma wybitnie spieprzony design stringów; pomysł mutowalnych
> > > > > >> stringów jest głupi z definicji. Napis to napis, zwykła wartość.
> > > > > >> Modyfikacja napisu nie powinna być odpowiedzialnością klasy
> > > > > >> std::string.
> > > > > > 
> > > > > > I do takich wniosków doszli twórcy Javy. Osobiście jednak nie mam
> > > > > > preferencji ani do jednego, ani do drugiego rozwiązania.
> > > > > 
> > > > > Czyli jak jest w Javie?
> > > > 
> > > > String jest immutable. Wszystkie operacje na stringach tworzą
> > > > nowe instancje.
> > > 
> > > 
> > > Ale chcieliśmy zwiększyć wydajność, nie zmniejszyć ;-)
> > > 
> > pisanie do stringa jest bardzo malo uzyteczne - rzadko spotykane (dla mnie niemal jak yeti mimo ze ostatnio pisalem nawet cos co operuje na tekstach np swoj asembler x86 czy ostatnio klienta irca)
> > 
> > zwykle jako output operacji na stringach zamiast pisania do tablicy (a co tu mowic o pisaniu do strainga) wystarczy printf() (na konsole albo do pliku)
> 
> co zarazem nie znaczy ze jak ktos chce to realokowalnego stringa mozna sobie zrobic, (np bardzo latwo w c)* - zwlaszcza ze ostatnio przekonalem sie troche do reallocka 
> 
> *zob watek "resizable chunks and typesafety" z 11 wrzesnia (i moja nowatorska biblioteke small-icl.c)
> 
> 
>  typedef struct
>   {
>     char* beg;
>     char* end;
>   }
>     chunk;
> 
> chunk ResizeChunk(chunk x, int size)
> {
>     x.beg = (char*) realloc(x.beg, size );
> 
>     if((size>0) && (x.beg==NULL)) ERROR_EXIT("AllocChunk failed");
> 
>     x.end = x.beg + size -1;
>     return x;
> }
> 
> 
> void main()
> {
>   chunk dipa;
> 
>   dipa = ResizeChunk(dipa, 10);
> 
>   dipa = ResizeChunk(dipa, 1000);
> 
> }
> 
> jako ze reallock 'cacheuje' czy jak to nazwac rezerwe ramu (i to dosyc agresywnie ) to bedzie dzialac calkiem szybko 
> (aczkolwiek moja biblioteka sicl jest bardziej oparta na splitach i indeksowaniu (czyli nie zmienia np ramu do ktorego np wpisano plik tekstowy jedynie go indeksuje na wskazniki i pozwala wybrac to co nas 
> interesuje co z kolei zwykle zrzuca sie do outputu 
> wlasnie printfem czy czyms podovnym, jest to rozwiazanie chyba bliskie idealu)

realizuje to przy tym moja idee stringa czyli ani nie zero na koncu a nie nie basicowe rozmiar na oczatku,
dobry string imo to para dwu wskaznikow begin i end begin pokazuje na pierwszy znak end na ostatni (wcielilem ta idee w zycie i nazwalem taki obiekt chunk - biblioteka sicl jest tego konsekwencją)
Technical Details
Message-ID: <243e7073-e526-4b2a-855f-4c2bc3ed62c4@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer01.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!z50no1292708qtj.0!news-out.google.com!r5ni820qtc.1!nntp.google.com!k31no327443qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!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> <75c91d58-447b-4703-b00c-9e5328950bfa@googlegroups.com> <1020c67b-4039-4505-98a2-36c3768e420d@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.200.45.151 with SMTP id p23mr168444qta.43.1507553647277;        Mon, 09 Oct 2017 05:54:07 -0700 (PDT)
X-Received: by 10.31.1.136 with SMTP id 130mr363057vkb.16.1507553647157; Mon, 09 Oct 2017 05:54:07 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer01.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!z50no1292708qtj.0!news-out.google.com!r5ni820qtc.1!nntp.google.com!k31no327443qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Mon, 9 Oct 2017 05:54:06 -0700 (PDT)
In-Reply-To: <1020c67b-4039-4505-98a2-36c3768e420d@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=37.47.41.121; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 37.47.41.121
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> <75c91d58-447b-4703-b00c-9e5328950bfa@googlegroups.com> <1020c67b-4039-4505-98a2-36c3768e420d@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <243e7073-e526-4b2a-855f-4c2bc3ed62c4@googlegroups.com>
Subject: Re: Zabrali kopiowanie przy zapisie...
From: "(fir)" <profesor.fir@gmail.com>
Injection-Date: Mon, 09 Oct 2017 12:54:07 +0000
X-Received-Body-CRC: 368830026
X-Received-Bytes: 4964
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit