🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #4764

Re: Oefening in C++ (schaakbord)

#4764
From: Davy Loots
Date: Fri, 11 Jul 2003 15:54
75 lines
3997 bytes
Ge hebt volledig gelijk. Maar is dit niet wat hoog gegrepen voor iemand die
op bladzijde 43 van zijn eerste C++ boek zit?

Vriendelijke groenten,
Davy

"Oelewapperke" <Oelewapperke@wol.be> schreef in bericht
news:seiPa.14411$7h.14326@afrodite.telenet-ops.be...
> opmerking : de correcte code voor iostram te includen is
> <c++>
>         #include <iostream>
>
>         using namsepace std;
> </c++>
>
> 1 karakter per write instructie (naar de C++ libs, niet naar libc/kernel,
> ik weet het, maar het blijft 1 oproep per karakter) is crimineel
> inefficient. Verder is je programma niet goed opgesplitst (niet dat ik
> beweer dat het nodig is in dit geval, maar het is een goede gewoonte).
>
> <c++>
> void drawChessBoard(int numVelden, int numStars)
> {
>         string starpart;
>         string emptypart;
>         string line1;           // er zijn twee soorten lijnen
>         string line2;
>
>         starpart.reserve(numStars); // beperk de geheugenallocaties tot 1
>         emptypart.reserve(numStars);
>         line1.reserve(numVelden * numStars);
>         line2.reserve(numVelden * numStars);
>
>         for (int i = 0; i < numStars; i++)
>         {
>                 starpart += '*';
>                 emptypart += ' ';       // enkele aanhalingstekens roepen
de char addition op
>         }
>
>         for (int i = 0; i < numVelden; i++)
>         {
>                 line1 += ( i % 2 == 0 ? starpart : emptypart);
>                 line2 += ( i % 2 != 0 ? starpart : emptypart);
>         }
>
>         for (int i = 0; i < numVelden; i++)
>         {
>                 for (int j = 0; j < numStars; j++)
>                 {
>                         cout << ( i%2 ? line1 : line2 ) << endl;
>                 }
>         }
> };
> </c++>
>
> (meting met "for i in 5 50 500 5000; do echo $i:; time ./chessboard $i 5 >
> /dev/null; done")
>
> numVelden       numStars        chessboard      chessboardoptimized
> 5               5               0.000           0.000
> 50              5               0.010           0.000
> 500             5               1.100           0.010
> 5000            5               <te lang>       0.080
> 50000           5               <te lang>       0.630
>
> (dit is dus met compileroptimalisaties af op een heel modern systeem, maar
> compileroptimalisaties kunnen het probleem alleen maar uitstellen naar
> grotere aantallen op lineaire basis, terwijl deze routine exponentieel
> sneller is dan de vorige oplossing) (daarmee bedoel ik dat als je
numVelden
> verdubbeld het gegeven programma er 4x langer over doet, terwijl mijn
> versie er slechts dubbel zo lang over zal doen).
>
> Oelewapperke
Technical Details
Message-ID: <P4BPa.888$F92.141@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-06!sn-xit-08!supernews.com!newsfeed.online.be!newsfeed.vmunix.org!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
References: <be8qtj$ec3$1@reader08.wxs.nl> <3f07f2cb$0$6524$afc38c87@sisyphus.news.be.easynet.net> <be9cv4$m$1@reader08.wxs.nl> <2mYNa.9385$7h.12942@afrodite.telenet-ops.be> <seiPa.14411$7h.14326@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,c3467730e88beae5
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-07-11 08:54:30 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-06!sn-xit-08!supernews.com!newsfeed.online.be!newsfeed.vmunix.org!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
From: "Davy Loots" <davy.loots@lenaers.com.nospam>
Newsgroups: be.comp.programming
References: <be8qtj$ec3$1@reader08.wxs.nl> <3f07f2cb$0$6524$afc38c87@sisyphus.news.be.easynet.net> <be9cv4$m$1@reader08.wxs.nl> <2mYNa.9385$7h.12942@afrodite.telenet-ops.be> <seiPa.14411$7h.14326@afrodite.telenet-ops.be>
Subject: Re: Oefening in C++ (schaakbord)
Lines: 77
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.50.4807.1700
X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4807.1700
Message-ID: <P4BPa.888$F92.141@afrodite.telenet-ops.be>
Date: Fri, 11 Jul 2003 15:54:23 GMT
NNTP-Posting-Host: 213.224.151.117
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1057938863 213.224.151.117 (Fri, 11 Jul 2003 17:54:23 MET DST)
NNTP-Posting-Date: Fri, 11 Jul 2003 17:54:23 MET DST
Organization: Telenet Internet