» »

[c++] Visual Studio, Release, vkljuciti neuporabljeno kodo

[c++] Visual Studio, Release, vkljuciti neuporabljeno kodo

goranv ::

V casih ustvarim funkcijo da bi testiral kodo in v asm kodi pogledal kako je optimizirana v Release nacinu. Problem je ta optimizacija ne vkljuci mojo kodo, ker se v programu ne uporabi. Je mozno kako oznaciti kodo, da to kodo vseeno vkljuci?

DamijanD ::

Ti tole kaj pomaga: compiler explorer ?

WhiteAngel ::

Če je gcc dovolj dober in ne nujno visual studio, potem imaš
g++ -S
, ki ti prevede v assembly in lahko vidiš, kaj ven pride.

goranv ::

compiler explorer ustvari drugacno kodo.

g++, sem ze veckrat poskusil kateri drugi prevejalnik in sem imel osnovne probleme, zato sem vedno prisel nazaj na VS kker se bolje razumeva.

Utk ::

Če jo daš kot public, bi jo skoraj moralo vključit. Malo ugibam, ampak logično bi bilo.

Randomness ::

Izklopi link-time optimizacijo. Če je funkcija "globalna", bi na ta način morala biti vključena v exe. Drugače pa imaš še n drugih načinov, kako to dosežeš drugače.
Aja, pa Godboltov Compiler Explorer podpira tudi MSVC, tako da ne ne vem, kaj si mislil s tem, da compiler explorer ustvari drugačno kodo. Pač nastaviti mu moraš prave opcije.

Zgodovina sprememb…

goranv ::

Izklopil sem optimizacijo ( #pragma optimize( "", off ) ), potem je bila koda ista kot v compiler explorer in isto kot pri Debug. Ne ustvarjam zahteven program, samo za info me zanima kako se optimizira dolocena koda. Moral bom dopolniti kodo da jo uposteva.

Randomness ::

Izklopil sem optimizacijo
Ne optimizacijo kar počez, napisal sem link-time optimizacijo. /LTCG:OFF

goranv ::

V 2019 verziji ni OFF izbire.

DamijanD ::

Zakaj pa ne bi preprosto svoje kode tudi uporabil?

Randomness ::

V 2019 verziji ni OFF izbire.
Če bi bolj natančno preveril, bi videl, da je. Kakorkoli, tudi v Compiler Explorerju lahko navedeš poljubno opcijo. Za to, kar želiš doseči ti, bo verjetno zadostovala že opcija /O2. Če rezultat še ne bo popolnoma enak, pa boš moral bolj natančno preveriti, s katerimi opcijami prevajaš v svojem projektu in enake opcije nastaviti v Compiler Explorerju. V splošnem pa, RTFM :-)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

WebAssembly postal standard

Oddelek: Novice / Brskalniki
418552 (5536) xmetallic
»

Množenje v C

Oddelek: Programiranje
191513 (1028) Isotropic
»

Najhitrejši programski jezik? (strani: 1 2 )

Oddelek: Programiranje
757712 (5532) Senitel
»

[C++] novi standardi in compilerji

Oddelek: Programiranje
211608 (1201) Ezekiel

Več podobnih tem