public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: "Pétur Runólfsson" <peturr02@ru.is>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org,
Subject: RE: libstdc++/9876: filebuf::sputc more than 10% slower than putc
Date: Sun, 23 Mar 2003 19:46:00 -0000	[thread overview]
Message-ID: <20030323194601.6630.qmail@sources.redhat.com> (raw)

The following reply was made to PR libstdc++/9876; it has been noted by GNATS.

From: =?iso-8859-1?Q?P=E9tur_Run=F3lfsson?= <peturr02@ru.is>
To: "Paolo Carlini" <pcarlini@unitus.it>
Cc: <paolo@gcc.gnu.org>,
	<gcc-bugs@gcc.gnu.org>,
	<nobody@gcc.gnu.org>,
	<gcc-gnats@gcc.gnu.org>
Subject: RE: libstdc++/9876: filebuf::sputc more than 10% slower than putc
Date: Sun, 23 Mar 2003 19:38:00 -0000

 > Needless to say, you are right, and Nathan is right, about the need to
 > improve our streambuf::sputc, but we still do _not_ have real numbers
 > to use as a point of reference.
 >=20
 > Are you willing to work on this?
 
 This is stdio vs. unlocked_stdio vs. iostreams:
 
 time ./stdio
 1.11user 0.15system 0:01.27elapsed 99%CPU (0avgtext+0avgdata =
 0maxresident)k
 0inputs+0outputs (22major+8minor)pagefaults 0swaps
 time ./stdio_unlocked
 0.28user 0.15system 0:00.43elapsed 99%CPU (0avgtext+0avgdata =
 0maxresident)k
 0inputs+0outputs (22major+8minor)pagefaults 0swaps
 time ./iostreams
 1.00user 0.19system 0:01.20elapsed 99%CPU (0avgtext+0avgdata =
 0maxresident)k
 0inputs+0outputs (61major+15minor)pagefaults 0swaps
 
 This is on a Intel Pentium III 500 MHz with 384 MB ram, Red Hat Linux =
 8.0
 with kernel 2.5.44.
 
 This is the code:
 
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D speed.hh =
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D
 
 #ifndef SPEED_HH_INCLUDED
 #define SPEED_HH_INCLUDED
 
 const int iterations =3D 10000000;
 
 #endif
 
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D stdio.cc =
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D
 
 #include <cstdio>
 #include "speed.hh"
 
 int main()
 {
 	using namespace std;
 
 	FILE* file =3D fopen("tmp", "w+");
 	for (int i =3D 0; i < iterations; ++i)
 	{
 		putc(i % 100, file);
 	}
 	fclose(file);
 	return 0;
 }
 
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D stdio_unlocked.cc =
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D
 
 #include <cstdio>
 #include "speed.hh"
 
 int main()
 {
 	using namespace std;
 
 	FILE* file =3D fopen("tmp", "w+");
 	for (int i =3D 0; i < iterations; ++i)
 	{
 		putc_unlocked(i % 100, file);
 	}
 	fclose(file);
 	return 0;
 }
 
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D iostreams.cc =
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D
 
 #include <fstream>
 #include "speed.hh"
 
 int main()
 {
 	using namespace std;
 
 	filebuf buf;
 	buf.open("tmp", ios::out | ios::in | ios::trunc);
 	for (int i =3D 0; i < iterations; ++i)
 	{
 		buf.sputc(i % 100);
 	}
 	buf.close();
 	return 0;
 }
 
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 
 There are also major differences in fwrite vs. filebuf::sputn when
 the buffer is bigger than BUFSIZ (fwrite doesn't copy the buffer when
 it is larger than BUFSIZ), as well as in putwc vs. wfilebuf::sputc
 (I think that codecvt is causing this slowdown).
 
 Petur


             reply	other threads:[~2003-03-23 19:46 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-23 19:46 Pétur Runólfsson [this message]
  -- strict thread matches above, loose matches on Subject: below --
2003-05-16 18:06 Benjamin Kosnik
2003-05-16 17:56 Paolo Carlini
2003-03-03 11:16 Pétur Runólfsson
2003-02-28 16:46 Paolo Carlini
2003-02-28 16:06 Pétur Runólfsson
2003-02-27 20:22 paolo
2003-02-27 10:36 peturr02

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030323194601.6630.qmail@sources.redhat.com \
    --to=peturr02@ru.is \
    --cc=gcc-prs@gcc.gnu.org \
    --cc=nobody@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).