Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | BartC <bc@freeuk.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Counted strings |
| Date | 2016-12-05 18:27 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <o24bfu$s32$1@dont-email.me> (permalink) |
| References | (8 earlier) <2cdca7c0-657d-4d61-8457-94ef01f3f4cf@googlegroups.com> <o23vu2$eaq$1@dont-email.me> <7520b145-f095-473c-a117-d89ef8feb590@googlegroups.com> <o244gj$9l$1@dont-email.me> <746f527b-ff8b-4768-9347-3d03170f686c@googlegroups.com> |
On 05/12/2016 16:34, Rick C. Hodgin wrote:
> On Monday, December 5, 2016 at 11:28:31 AM UTC-5, Bart wrote:
>> Take this simple implementation of a counted string type and character
>> append routine (see below).
>>
>> To append 'A' 10 million times starting with an empty string took about
>> 13 seconds (gcc -O3, Windows CRT).
>>
>> My little *interpreted* language took under 0.2 seconds.
> The features exposed through this "append 'A'" ability mandates a
> different design. Since you know the ability exists, it would behoove
> you to create an allocation algorithm which rounds up to the nearest
> larger size, like 64 bytes, and to include a length of allocated space
> along with used space.
Why wouldn't malloc or realloc do that?
I've tested the C again on Linux (as Windows C libraries are known to be
slow). That is much better:
C/Win C/Linux Interpreted/Windows
10M 13 0.4 0.2 seconds
100M ? 2.2 1.7
500M ?? 18.0 17.0
However, the interpreted code is still faster...
> If you rewrite your C algorithm to use those two additional facets,
> you'll likely see a notable performance increase.
Yes, of course, but now you have to start thinking about algorithms, or
find some existing string library to import.
But if you're just throwing something together quickly, you might end up
with something like my code. (Building strings by appending - sometimes
before being written out as files - is something I do a lot. This is not
just a meaningless benchmark)
> I'm curious how your interpreted algorithm operates.
Nothing special. My memory allocator (sitting on top of malloc)
over-allocates, usually with a power-of-two block size (until it hits
16MB or so anyway then the increase is linear).
String types store a length and allocation size.
malloc() would only be called 13 times for the 10 million appends (2KB,
4KB, ... 16MB), and the current string is copied 13 times. (Strings up
to 1KB along are handled locally.)
With the C, realloc is called 10M-1 times, and if the internal
over-allocation is small, the string might be copied millions of times.
--
Bartc
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Counted strings jacobnavia <jacob@jacob.remcomp.fr> - 2016-12-03 23:58 +0100
Re: Counted strings supercat@casperkitty.com - 2016-12-03 15:40 -0800
Counted stringsl Thiago Adams <thiago.adams@gmail.com> - 2016-12-03 15:40 -0800
Re: Counted strings BartC <bc@freeuk.com> - 2016-12-04 00:20 +0000
Re: Counted strings Richard Damon <Richard@Damon-Family.org> - 2016-12-03 21:26 -0500
Re: Counted strings jacobnavia <jacob@jacob.remcomp.fr> - 2016-12-04 18:11 +0100
Re: Counted strings Mark Storkamp <mstorkamp@yahoo.com> - 2016-12-04 19:25 -0600
Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-03 18:57 -0800
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 16:33 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-04 07:52 -0800
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 17:10 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-04 10:14 -0800
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 20:20 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-04 16:49 -0800
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-05 10:40 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 05:51 -0800
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-05 16:10 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 07:38 -0800
Re: Counted strings Melzzzzz <mel@zzzzz.com> - 2016-12-05 16:56 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 08:04 -0800
Re: Counted strings Melzzzzz <mel@zzzzz.com> - 2016-12-05 17:16 +0100
Re: Counted strings Jerry Stuckle <jstucklex@attglobal.net> - 2016-12-05 16:12 -0500
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 13:24 -0800
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 10:53 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 03:52 -0800
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 13:32 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 04:48 -0800
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 13:42 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 05:16 -0800
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 14:39 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 05:24 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 05:41 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 05:47 -0800
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 14:48 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 05:54 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 06:21 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 06:24 -0800
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 18:06 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 10:19 -0800
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 19:45 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 11:10 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 12:58 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 14:08 -0800
Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-06 11:25 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 05:28 -0800
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 16:21 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 07:29 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 07:39 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 08:32 -0800
Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 08:32 -0800
Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 16:28 +0000
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 08:34 -0800
Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 18:27 +0000
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 10:36 -0800
Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 08:19 +1300
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 11:22 -0800
Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 08:26 +1300
Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 19:36 +0000
Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 08:41 +1300
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 11:48 -0800
Re: Counted strings Thiago Adams <thiago.adams@gmail.com> - 2016-12-05 11:59 -0800
Re: Counted strings jameskuyper@verizon.net - 2016-12-05 12:12 -0800
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 12:18 -0800
Re: Counted strings jameskuyper@verizon.net - 2016-12-05 13:17 -0800
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 13:29 -0800
Re: Counted strings jameskuyper@verizon.net - 2016-12-05 15:37 -0800
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 15:43 -0800
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 13:40 +0100
Re: Counted strings "James R. Kuyper" <jameskuyper@verizon.net> - 2016-12-06 12:00 -0500
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 10:09 -0800
Re: Counted strings Jerry Stuckle <jstucklex@attglobal.net> - 2016-12-06 13:33 -0500
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 21:24 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 12:56 -0800
Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-05 12:22 -0800
Re: Counted strings supercat@casperkitty.com - 2016-12-05 08:36 -0800
Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 17:31 +0000
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-05 22:07 +0100
Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 10:14 +1300
Re: Counted strings Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-12-05 22:11 +0000
Re: Counted strings BartC <bc@freeuk.com> - 2016-12-06 02:13 +0000
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-05 21:57 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 13:01 -0800
Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 21:22 +0000
Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 10:25 +1300
Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 21:36 +0000
Re: Counted strings jacobnavia <jacob@jacob.remcomp.fr> - 2016-12-05 22:33 +0100
Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 17:03 -0500
Re: Counted strings supercat@casperkitty.com - 2016-12-04 08:57 -0800
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-04 20:19 +0100
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 20:24 +0100
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-04 20:37 +0100
Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 21:04 +0100
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-04 21:22 +0100
Re: Counted strings BartC <bc@freeuk.com> - 2016-12-04 22:37 +0000
Re: Counted strings David Thompson <dave.thompson2@verizon.net> - 2016-12-10 22:42 -0500
Re: Counted strings Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-12-10 23:17 -0800
Re: Counted strings Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-12-11 11:48 +0000
Re: Counted strings Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-12-11 04:40 -0800
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-11 10:56 +0100
Re: Counted strings Robert Wessel <robertwessel2@yahoo.com> - 2016-12-05 15:47 -0600
Re: Counted strings Gareth Owen <gwowen@gmail.com> - 2016-12-05 22:01 +0000
Re: Counted strings Robert Wessel <robertwessel2@yahoo.com> - 2016-12-05 22:28 -0600
Re: Counted strings "Chris M. Thomasson" <invalid@invalid.invalid> - 2016-12-05 20:18 -0800
Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 11:05 +0100
Re: Counted strings luser droog <luser.droog@gmail.com> - 2016-12-04 13:13 -0800
Re: Counted strings Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-12-05 09:30 -0800
Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-05 09:41 -0800
Re: Counted strings Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-12-06 11:19 -0800
Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-06 11:44 -0800
Re: Counted strings Tim Rentsch <txr@alumni.caltech.edu> - 2016-12-10 10:29 -0800
Re: Counted strings supercat@casperkitty.com - 2016-12-10 11:08 -0800
csiph-web