Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #81839

Re: Most efficient prefetching distance

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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