Article View: nl.comp.programmeren
Article #193Re: Lijnen tellen van een project
From: Sjoerd A. Schreuder
Date: Fri, 28 Jan 2005 13:14
Date: Fri, 28 Jan 2005 13:14
37 lines
2989 bytes
2989 bytes
John Bokma wrote:
> Dus iets a la:
>
> if ( var != 'M' ) var = 'M';
>
> als gewoon
>
> var = 'M';
>
> volstaat, zou ik zeer zeker aanraden. (Is wellicht zelfs sneller, en
> bovenal minder ruis).
Ik zou die extra test afraden. De extra read van var is erg
kostbaar (veel klok-cycli) als var niet in een register zit.
(De write is veel minder kostbaar: die gebeurt gewoon op de
achtergrond terwijl de volgende instructies worden uitgevoerd)
Verder is altijd een write doen veel beter te paralleliseren dan
een read en een write naar hetzelfde adres vlak na elkaar,
omdat daarmee mogelijkheden tot reordening worden beperkt.
Om over de branch-prediction (en de kosten als die fout gebeurt)
die de if introduceert maar niet te spreken.
Dus ik denk dat op een moderne processor, de test-versie veel
trager is dan de write-always versie.
Als var een propertie of zo is, en je bang bent voor onnodig
neveneffecten als gevolg van het setten, dan moet je in de
set-functie maar iets als:
void setFoo(char new_value)
if (m_gender != new_value)
{
m_gender = new_value;
NotifyListeners();
}
opnemen. In Delphi zie je dat ook overal gebeuren.
Sjoerd
Technical Details
Message-ID:
<41fa3aa5$0$30144$abc4f4c3@news.wanadoo.nl>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!212.101.4.254.MISMATCH!solnet.ch!solnet.ch!news2.euro.net!postnews1.euro.net!news.wanadoo.nl!not-for-mailReferences:
<%XJId.2415$OZ2.252982@phobos.telenet-ops.be> <41f37378$0$140$e4fe514c@news.xs4all.nl> <ct2bdl$2p5$1@news1.zwoll1.ov.home.nl> <Xns95E88B1A63743castleamber@130.133.1.4> <41f55352$0$26219$18b6e80@news.wanadoo.nl> <Xns95E89B5FAF7C6castleamber@130.133.1.4> <41f587d8$0$11854$e4fe514c@news.xs4all.nl> <Xns95E8CE2C13FCcastleamber@130.133.1.4> <41f60627$0$11906$e4fe514c@news.xs4all.nl> <ct5e5s.104.1@news.isolution.nl> <Xns95E982F869770castleamber@130.133.1.4> <ct6veq.4f8.1@news.isolution.nl> <Xns95EA98A5B4Dcastleamber@130.133.1.4> <ct818b.198.1@news.isolution.nl> <hcWdnSBGdt9kZmrcRVnyvA@casema.nl> <ct967g.4hc.1@news.isolution.nl> <Xns95EAAC00E2238castleamber@130.133.1.4>Show Full Headers
Complete Article Headers
X-Google-Thread: 107324,ab34a8b99e320381 X-Google-Thread: fcea4,ab34a8b99e320381 X-Google-Attributes: gid107324,gidfcea4,public X-Google-Language: DUTCH,ASCII-7-bit Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!212.101.4.254.MISMATCH!solnet.ch!solnet.ch!news2.euro.net!postnews1.euro.net!news.wanadoo.nl!not-for-mail Date: Fri, 28 Jan 2005 14:14:10 +0100 From: "Sjoerd A. Schreuder" <sa_schreuder@wanadoo.nl> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax) X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: nl.comp.programmeren,be.comp.programming Subject: Re: Lijnen tellen van een project References: <%XJId.2415$OZ2.252982@phobos.telenet-ops.be> <41f37378$0$140$e4fe514c@news.xs4all.nl> <ct2bdl$2p5$1@news1.zwoll1.ov.home.nl> <Xns95E88B1A63743castleamber@130.133.1.4> <41f55352$0$26219$18b6e80@news.wanadoo.nl> <Xns95E89B5FAF7C6castleamber@130.133.1.4> <41f587d8$0$11854$e4fe514c@news.xs4all.nl> <Xns95E8CE2C13FCcastleamber@130.133.1.4> <41f60627$0$11906$e4fe514c@news.xs4all.nl> <ct5e5s.104.1@news.isolution.nl> <Xns95E982F869770castleamber@130.133.1.4> <ct6veq.4f8.1@news.isolution.nl> <Xns95EA98A5B4Dcastleamber@130.133.1.4> <ct818b.198.1@news.isolution.nl> <hcWdnSBGdt9kZmrcRVnyvA@casema.nl> <ct967g.4hc.1@news.isolution.nl> <Xns95EAAC00E2238castleamber@130.133.1.4> In-Reply-To: <Xns95EAAC00E2238castleamber@130.133.1.4> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Lines: 38 Message-ID: <41fa3aa5$0$30144$abc4f4c3@news.wanadoo.nl> Organization: Wanadoo NNTP-Posting-Date: 28 Jan 2005 13:14:13 GMT NNTP-Posting-Host: c3eea341e.cable.wanadoo.nl X-Trace: 1106918053 flip.euronet.nl 30144 62.234.52.30:1683 X-Complaints-To: abuse@wanadoo.nl