Article View: pl.comp.lang.c
Article #309510Re: Zabrali kopiowanie przy zapisie...
From: (fir)
Date: Mon, 09 Oct 2017 12:48
Date: Mon, 09 Oct 2017 12:48
63 lines
4209 bytes
4209 bytes
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)
Technical Details
Message-ID:
<1020c67b-4039-4505-98a2-36c3768e420d@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!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!k31no324795qta.1!news-out.google.com!r5ni820qtc.1!nntp.google.com!k31no324792qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!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> <75c91d58-447b-4703-b00c-9e5328950bfa@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.233.220.132 with SMTP id q126mr5900808qkf.41.1507553288263; Mon, 09 Oct 2017 05:48:08 -0700 (PDT) X-Received: by 10.31.115.6 with SMTP id o6mr191538vkc.13.1507553288236; Mon, 09 Oct 2017 05:48:08 -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!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!k31no324795qta.1!news-out.google.com!r5ni820qtc.1!nntp.google.com!k31no324792qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Mon, 9 Oct 2017 05:48:08 -0700 (PDT) In-Reply-To: <75c91d58-447b-4703-b00c-9e5328950bfa@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> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <1020c67b-4039-4505-98a2-36c3768e420d@googlegroups.com> Subject: Re: Zabrali kopiowanie przy zapisie... From: "(fir)" <profesor.fir@gmail.com> Injection-Date: Mon, 09 Oct 2017 12:48:08 +0000 X-Received-Body-CRC: 902369092 X-Received-Bytes: 4327 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit