Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #81839
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: Most efficient prefetching distance |
| Date | 2021-10-04 18:55 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <sjfbm2$5ac$1@dont-email.me> (permalink) |
| References | <sj7hkj$td0$1@dont-email.me> <sjf36k$112$1@dont-email.me> <c4G6J.72294$ol1.47227@fx42.iad> |
Am 04.10.2021 um 18:36 schrieb Branimir Maksimovic:
> On 2021-10-04, Bonita Montero <Bonita.Montero@gmail.com> wrote:
>> There's the Unix-command wc which counts words and lines. And the
>> wc-implementation from the current GNU core utilities contain an
>> optional very tricky AVX-implementation. This improves the speed
>> of wc on my Linux-computer by factor 29.
>> I improved this algorithm further to partition the data in three
>> parts which I handle interleaved, i.e. 32-byte-chunks synchronously
>>
>> static
>> vector<char> readFileRepeated( char const *fileName, size_t blockSize )
>> {
>> if( !blockSize )
>> return vector<char>();
>> ifstream ifs;
>> ifs.exceptions( ifstream::failbit | ifstream::badbit );
>> ifs.open( fileName, ifstream::binary );
>> ifs.seekg( 0, ios_base::end );
>> streampos fileSize = ifs.tellg();
>> if( !fileSize || fileSize > (size_t)-1 )
>> return vector<char>();
>> ifs.seekg( 0, ios_base::beg );
>> vector<char> block( blockSize, 0 );
>> size_t repSize = (size_t)fileSize <= blockSize ? (size_t)fileSize :
>> blockSize;
>> ifs.read( &*block.begin(), repSize );
>> bool lastNewline = block[repSize - 1] == '\n';
>> size_t remaining = block.size() - repSize;
>> do
>> {
>> size_t cpy = remaining >= repSize ? repSize : remaining;
>> copy( block.begin(), block.begin() + cpy, block.end() - remaining );
>> remaining -= cpy;
>> if( !lastNewline && remaining )
>> block.end()[-(ptrdiff_t)remaining--] = '\n';
>> } while( remaining );
>> return block;
>> }
>>
> Talking about efficiency :P
> Who will pay you for overcomplicating simple things?
Why should this be overcomplicated ? Im repeatedly copy a
file into a buffer until it is full; maybe not even once
fully if the file doesn't fit in the buffer's maximum size.
That's the most direct way.
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Most efficient prefetching distance Bonita Montero <Bonita.Montero@gmail.com> - 2021-10-01 19:48 +0200
Re: Most efficient prefetching distance scott@slp53.sl.home (Scott Lurndal) - 2021-10-01 18:36 +0000
Re: Most efficient prefetching distance Branimir Maksimovic <branimir.maksimovic@icloud.com> - 2021-10-01 18:58 +0000
Re: Most efficient prefetching distance Bonita Montero <Bonita.Montero@gmail.com> - 2021-10-02 07:09 +0200
Re: Most efficient prefetching distance "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-10-01 23:15 -0700
Re: Most efficient prefetching distance Bonita Montero <Bonita.Montero@gmail.com> - 2021-10-02 08:40 +0200
Re: Most efficient prefetching distance Branimir Maksimovic <branimir.maksimovic@icloud.com> - 2021-10-02 11:02 +0000
Re: Most efficient prefetching distance Marcel Mueller <news.5.maazl@spamgourmet.org> - 2021-10-03 15:33 +0200
Re: Most efficient prefetching distance Bonita Montero <Bonita.Montero@gmail.com> - 2021-10-03 16:00 +0200
Re: Most efficient prefetching distance Marcel Mueller <news.5.maazl@spamgourmet.org> - 2021-10-04 21:59 +0200
Re: Most efficient prefetching distance Bonita Montero <Bonita.Montero@gmail.com> - 2021-10-05 07:11 +0200
Re: Most efficient prefetching distance Branimir Maksimovic <branimir.maksimovic@icloud.com> - 2021-10-05 09:55 +0000
Re: Most efficient prefetching distance Bonita Montero <Bonita.Montero@gmail.com> - 2021-10-05 13:23 +0200
Re: Most efficient prefetching distance Bonita Montero <Bonita.Montero@gmail.com> - 2021-10-04 16:30 +0200
Re: Most efficient prefetching distance Branimir Maksimovic <branimir.maksimovic@icloud.com> - 2021-10-04 16:36 +0000
Re: Most efficient prefetching distance Bonita Montero <Bonita.Montero@gmail.com> - 2021-10-04 18:55 +0200
Re: Most efficient prefetching distance Branimir Maksimovic <branimir.maksimovic@icloud.com> - 2021-10-04 20:22 +0000
Re: Most efficient prefetching distance Bonita Montero <Bonita.Montero@gmail.com> - 2021-10-05 07:08 +0200
Re: Most efficient prefetching distance Branimir Maksimovic <branimir.maksimovic@icloud.com> - 2021-10-05 09:55 +0000
csiph-web