🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #4777

Re: Oefening in C++ (schaakbord)

#4777
From: Nicolas Barbier
Date: Fri, 11 Jul 2003 19:03
63 lines
4030 bytes
Oelewapperke wrote:

> Nicolas Barbier wrote:
> 
>> Van numVelden ^ 2 naar numVelden is geen exponentiele verbetering, maar
>> slechts een lineaire. Je vergeet ook mee te rekenen dat het uitschrijven
>> van een string die dubbel zo lang is ook ongeveer dubbel zo lang gaat
>> duren (constante overhead niet meegerekend), _als_ je ook iets nuttig met
>> die string gaat doen. Bij het wegschrijven van een string naar /dev/null
>> maakt het normaal gezien niet uit hoe groot de string is, dus dat is een
>> fout in je benchmark. Maw de orde blijft gelijk.
> 
> Nieuwe benchmark met writen naar een file (wat erger is dan schrijven naar
> het scherm, want bij het scherm kan hij beslissen van grote hoeveelheden
> toch naar /dev/null te schrijven) :

Dit zal in normale omstandigheden de orde enkel omlaag halen, wat niet het 
geval is (zie verder).

> aantal          Normaal                 Optimized
> 5               0.000                   0.000
> 50              0.020                   0.000
> 500             1.090                   0.020
> 1000            4.460                   0.010
> 2000            17.780                  0.040
> 
> Het gaat erom dat er een (grote, potentieel 1 jiffie) kost geassocieerd is
> met elke methode oproep, en als je er voor elk karakter 1 doet, verlies je
> veel meer tijd dan als je er maar 1 per lijn doet.

Aan de tekst van jou voorlaatste post te zien heb je het over orde van 
efficientie: "kunnen het probleem alleen maar uitstellen naar 
grotere aantallen". Die verandert volgens mij dus niet door jou 
optimalisatie.

Afgezien van het feit dat de orde pas bij benchmarks zichbaar wordt bij 
veel grotere getallen, kan je het wegschrijven naar een file van zulke 
kleine hoeveelheden gegevens (ze passen waarschijnlijk in je RAM) niet 
gebruiken als benchmark. Het programma beeindigt namelijk al voordat de 
gegevens echt op je schijf terecht gekomen gaan zijn.

Btw: ik vecht niet aan dat het efficienter is, enkel dat de orde van 
efficientie niet beter is (als je ervan uitgaat dat elk geoutput symbool 
minstens 1 keer gebruikt wordt om er ook daadwerkelijk iets mee te doen).

Mijn benchmark van jou code:

Alles wordt naar een willekeurige X terminal-emulator geschreven, waarvan 
ik denk dat het ongeveer lineaire tijd vraagt in het aantal karakters 
(vooral omdat er verhoudingsgewijs niet veel return-karakters bijzitten). 
De terminal bleef gedurende heel de benchmark op dezelfde positie zichbaar 
op mijn scherm. Niet erg wetenschappelijk, maar wetenschappelijker dan het 
naar een file schrijven argument IMO :-).

250     0m1.222s
500     0m5.513s
1000    0m27.067s
2000    1m52.107s

Dat lijkt mij toch wel relatief kwadratisch.

-- 
Nicolas Barbier
Technical Details
Message-ID: <3f0f0a48$0$6529$afc38c87@sisyphus.news.be.easynet.net>
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!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!easynews.net!newsfeed3.easynews.net!feed1.news.be.easynet.net!sisyphus.news.be.easynet.net!not-for-mail
References: <be8qtj$ec3$1@reader08.wxs.nl> <seiPa.14411$7h.14326@afrodite.telenet-ops.be> <3f0ee5dd$0$6531$afc38c87@sisyphus.news.be.easynet.net> <pJCPa.1149$F92.228@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 12:05:02 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!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!easynews.net!newsfeed3.easynews.net!feed1.news.be.easynet.net!sisyphus.news.be.easynet.net!not-for-mail
Message-ID: <3f0f0a48$0$6529$afc38c87@sisyphus.news.be.easynet.net>
From: Nicolas Barbier <anti@spam.invalid>
Subject: Re: Oefening in C++ (schaakbord)
Newsgroups: be.comp.programming
Date: Fri, 11 Jul 2003 21:03:53 +0200
References: <be8qtj$ec3$1@reader08.wxs.nl> <seiPa.14411$7h.14326@afrodite.telenet-ops.be> <3f0ee5dd$0$6531$afc38c87@sisyphus.news.be.easynet.net> <pJCPa.1149$F92.228@afrodite.telenet-ops.be>
User-Agent: KNode/0.6.1
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7Bit
Lines: 63
Organization: [ posted via Easynet Belgium ]
NNTP-Posting-Date: 11 Jul 2003 19:04:40 GMT
NNTP-Posting-Host: 213.193.183.56
X-Trace: 1057950280  6529 [::ffff:213.193.183.56]:33787
X-Complaints-To: abuse@be.easynet.net