Article View: es.comp.lenguajes.c++
Article #171Re: Duda IF ?
From: Pascal J. Bourguignon
Date: Mon, 24 Aug 2009 11:56
Date: Mon, 24 Aug 2009 11:56
40 lines
2631 bytes
2631 bytes
ELfun <virtial.disco@gmail.com> writes:
> OK, es lo que quer�a saber las diferentes alternativas, pero me surge
> otra pregunta de las tres posibles soluciones cual es la que genera
> menos c�digo maquina por el compilador?..
Depende de los valores con que comparas, y del compilador.
Si tienes valores agrupados:
if(a==1){
...
}else if((a==2) or (a==3)){
...
}else if(a==4){
...
}else{
...
}
entonces con un switch el compilador podra generar una tabla de
saltos, basicamente algo como:
if((a<1)or(a<4)){
...
}else{
(tabla[a])();
}
Pero con valores como la que muestras, lo mas probable es que el
compilador generara exactamente el mismo codigo con un if o con un
switch.
Lo mejor es comprobarlo t� mismo, con:
g++ -S -o file.s file.c++
cat file.s
--
__Pascal Bourguignon__
Technical Details
Message-ID:
<7c1vn1whm0.fsf@pbourguignon.anevia.com>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news1.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!club-internet.fr!feedme-small.clubint.net!feeder1-1.proxad.net!proxad.net!feeder1-2.proxad.net!cleanfeed1-a.proxad.net!nnrp2-2.free.fr!not-for-mailReferences:
<ba8c3ca3-0dd7-4a24-8633-4737b0b6c25f@k30g2000yqf.googlegroups.com> <2c2ca95b-9d5f-48c7-8104-a4294280f02d@z24g2000yqb.googlegroups.com> <23333fe1-d3be-4152-8b56-111af0f830e9@b15g2000yqd.googlegroups.com>Show Full Headers
Complete Article Headers
X-Google-Thread: d2efa0cfdc,706742b0d1c7e367
X-Google-Attributes: gidd2efa0cfdc,public,usenet
X-Google-NewGroupId: yes
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!news1.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!club-internet.fr!feedme-small.clubint.net!feeder1-1.proxad.net!proxad.net!feeder1-2.proxad.net!cleanfeed1-a.proxad.net!nnrp2-2.free.fr!not-for-mail
Newsgroups: es.comp.lenguajes.c++
Subject: Re: Duda IF ?
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA
oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9
033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac
l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR
mV+hO/VvFAAAAABJRU5ErkJggg==
X-Accept-Language: fr, es, en
X-Disabled: X-No-Archive: no
References: <ba8c3ca3-0dd7-4a24-8633-4737b0b6c25f@k30g2000yqf.googlegroups.com> <2c2ca95b-9d5f-48c7-8104-a4294280f02d@z24g2000yqb.googlegroups.com> <23333fe1-d3be-4152-8b56-111af0f830e9@b15g2000yqd.googlegroups.com>
From: pjb@informatimago.com (Pascal J. Bourguignon)
Date: Mon, 24 Aug 2009 13:56:07 +0200
Message-ID: <7c1vn1whm0.fsf@pbourguignon.anevia.com>
Organization: Anevia SAS
User-Agent: Gnus/5.101 (Gnus v5.10.10) Emacs/22.2 (gnu/linux)
Cancel-Lock: sha1:oY53nDkWaAvCPY7zvzeZIiGrgmA=
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Lines: 40
NNTP-Posting-Date: 24 Aug 2009 13:56:07 MEST
NNTP-Posting-Host: 88.170.236.224
X-Trace: 1251114967 news-2.free.fr 22595 88.170.236.224:58469
X-Complaints-To: abuse@proxad.net