mennyire optimalizalja (pl. a gcc) a sizeof() hivasokat?

 ( sj | 2011. augusztus 12., péntek - 22:05 )

Az a kerdes, hogy ha definialom pl. az s[BUFSIZE] valtozot (elotte van egy #define BUFSIZE 256 valahol), akkor milyen sebessegvonzata van annak, ha pl. sprintf(s, BUFSIZE-1, "%s", aaa) helyett sprintf(s, sizeof(s)-1, "%s", aaa)-t irok? Azert van _boven_ olyan programreszlet, ahol a meretet az utobbi modon sizeof() hivasokkal hataroznam meg, ahelyett, hogy egy konstans erteket irnek oda.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Elvileg ami forditaskor kiszamolhato, az konstans lesz.

nyos@hex:~/src$ cat sizeofproba.c
#include 

#define BUFSIZE 256

char s[BUFSIZE];

int main()
{
  int con;
  int siz;
  
  con=BUFSIZE-1;
  siz=sizeof(s)-1;
  
  printf("%d %d\n",con,siz);
  
  return 0;
}

nyos@hex:~/src$ cat sizeofproba.s
        .file   "sizeofproba.c"
        .comm   s,256,32
        .section        .rodata
.LC0:
        .string "%d %d\n"
        .text
.globl main
        .type   main, @function
main:
.LFB0:
        .cfi_startproc
        pushq   %rbp
        .cfi_def_cfa_offset 16
        movq    %rsp, %rbp
        .cfi_offset 6, -16
        .cfi_def_cfa_register 6
        subq    $16, %rsp
        movl    $255, -4(%rbp)
        movl    $255, -8(%rbp)
        movl    $.LC0, %eax
        movl    -8(%rbp), %edx
        movl    -4(%rbp), %ecx
        movl    %ecx, %esi
        movq    %rax, %rdi
        movl    $0, %eax
        call    printf
        movl    $0, %eax
        leave
        .cfi_def_cfa 7, 8
        ret
        .cfi_endproc
.LFE0:
        .size   main, .-main
        .ident  "GCC: (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2"
        .section        .note.GNU-stack,"",@progbits

Szo nelkul inicializalja 255-tel.

kossz a kimerito bizonyitast :-)

Viktor az eletrol es a halalrol

*ijedt szempillantások*

beugratós?

Azt ugye tudod, hogy a sizeof nem függvény?

Ettol fuggetlenul nem mindig derul ki forditaskor (ok, #define-os esetben ez nem jatszik).

peldakod wikirol:

#include 
size_t flexsize(int n)
{
   char b[n+3];      /* Variable length array */
   return sizeof b;  /* Execution time sizeof */
}
 
int main()
{
  size_t size;
  size = flexsize(10); /* flexsize returns 13 */
  return 0;
}

Ez bizony futasidoben ertekelodik ki, es lassit.

Ez persze így igaz.

Off: Amúgy jó újra itt látni. Lesz új így írtok ti?

Amnesztia :)
Ok, lesz.

szerk: kesz
http://hfp.hu/node/58/igy-irtok.html

igazad van, kossz mindenkinek

Viktor az eletrol es a halalrol

+1

ROTFL

mit keresel egyaltalan c kozeleben?

--
NetBSD - Simplicity is prerequisite for reliability

nagyarcu trollokat, de vegszora megjottek...

Viktor az eletrol es a halalrol

a "legnagyobb arc" díját elvitte az, aki a sizeof optimalizálós überfaszláma kérdése (hogy a többiről ne is szóljunk) után mások arcát méricskéli

Rád tényleg élvezet keresni a neten. A google beírva a neved a már linkelt személyesadat-szellőztető blog az első találat. Gondoltam ezért reklámozod inkább a duckduckgót, de abban meg ezt dobja ki:
http://www.mail-archive.com/courier-imap@lists.sourceforge.net/msg01811.html

Pont témába vág. :)
--
zsebHUP-ot használok!

Tenyleg Gabucinora elvezel?:)

t

Mar bocs, de miert kell neked allandoan parasztnak lenned? Azert, mert NetBSD fejleszto vagy? Egyreszt te sem szulettel ugy, hogy mindent tudtal, Te is tanultad. Ezt a tudasodat pedig hasznalhatnad arra is, hogy segits masoknak. De ha mar nem teszed, legalabb maradj csondben. Nyilvanvaloan te sem tudsz mindent, es ha valamilyen kerdesben segitseget kersz, akkor feltetelezem, hogy te is szivesebben olvasnal segitokesz hozzaszolasokat, mint kopkodeseket. Mellesleg anno lattam valami videot egy eloadasodrol, amiben nem ugy tunt, mintha elegge kepben lettel volna, hogy mit is akarsz mondani, csak a laserpointerrel jatszottal kinodban. Szoval bizonyara benned is lehet hianyossagokat talalni. Amugy meg a tiedhez hasonlo megnyilvanulasok miatt kategorizaljak be a BSD-seket radikalis bekepzelt faszoknak. Ahhoz mar hozzaszoktunk, hogy itt a hupon mindenki "szakerto". :) Viszont a te megnyilvanulasaid kimondottan rosszindulatuak es sertoek is sokszor, ezert vettem most a faradsagot, hogy leirjam a velemenyem.

Szerk.: amugy meg ahogy valaki irta, van olyan, hogy futasidoben ertekelodik ki a sizeof meg ha nem is fuggveny, szoval valami ertelme azert volt a kerdesnek.

> valaki irta, van olyan, hogy futasidoben ertekelodik ki a sizeof

csak a kérdés nem az volt, szóval ennyi felfogóképességgel neked végképp kár volt megszólalnod

ne kíméld!

A te velemenyedre meg vegkepp adok. Belinkelheted ezt a kommentet is a kis listadra, buszke leszek magamra ha felkerulok.

egy pillanatra eltöprengtem vajon milyen szomorú deformitás vezethet oda, hogy az ember büszke legyen egy ostobasági gyűjteményben elért pozícióra

Az, hogy nem érted, jól jellemzi, hogy miért is gondolkodnak így a listádról. Már ha érted ezt a bonyolult, önutalást tartalmazó mondatot.
----
Hülye pelikán

azért annyi szabadidőm nincs, hogy fogyatékos sizeof optimizátorok gondolkodási mintáit elemezzem ki; mindössze gyűjtöm őket

egyelőre nem tudni, hogy beanie-nek mi baja lehet a parasztokkal, és a földművelés hogyan jön ide, de majd gecinagy pofával biztos ez is el lesz magyarázva

bagamoyo:
mert te egy igazi kis okoska vagy. Csak olvasni, és értelmezni nem tudsz.. Nem azt kérte, hogy még a sárba is döngöld, te félkegyelmű, hanem azt, hogy a leírt helyzetre milyen megoldások jöhetnek szóba.. Ha anyukád elcsúszik az utcán akkor mit várnál pl. a posztolótól? Hogy felsegítse, vagy csak ott arcmagasságban mutassa meg a csúszásbiztos recés kis cipőjét?

prolee:
Engem is irritálnak az ilyen beszólások. Ha segíteni nem tudok, legalább belerúgok.... Ezért is vagyok paranoiás. :)

- http://zugugyved.blog.hu/2011/07/21/lopott_szemelyi_szemetkedo_apeh

szoval

"Ezt a tudasodat pedig hasznalhatnad arra is, hogy segits masoknak"

vs.

"Mellesleg anno lattam valami videot egy eloadasodrol"

ok.

--
NetBSD - Simplicity is prerequisite for reliability

olyan ez, mint a to vize: van a viznek teteje, meg alja. A legaljat mondjuk arra a szintre lonem be, ahol a felnoni keptelen, (~20 eve 15 eves) gabucino/berczi gabu talalhato.

Aztan van az ugy, hogy paran lesullyednek az o szintjere, de ekkor csak az tortenik, mint amikor a vizben is lesullyed a szemet oda, ahova valo...

Viktor az eletrol es a halalrola

a francba a replaced userem is lebukott

> Mar bocs, de miert kell neked allandoan parasztnak lenned?

Bizonyítania kell a csapat előtt: https://picasaweb.google.com/117875806734642385467/NohupSorozes2011

wow! Ez valami hup-rol (meg tan meg a gimnaziumbol is) kirugott elitkommando lenne?

Viktor az eletrol es a halalrol

nem gabu vagyok. valami nagyon érik :>

Viszlát.

--
trey @ gépház

Azaz jön még? :)
--
zsebHUP-ot használok!

Amugy melyik o a kepen?

keresd meg ez alapján: http://partizaninfo-wanted2008.blogspot.com/2008/01/brczi-gbor-flrja-nyilas.html

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
rand() a lelke mindennek! :)

amelyiknel a kulcs van (bal kezfejen)
amelyik nyaka elott bemutat egy (saccra) hasonlo IQ-huszar
amelyik a poharat megemeli

Viktor az eletrol es a halalrol

Ez csak amolyan formalitás, mint mikor viszhallal köszönsz el a telemarketingestől (én nem szoktam).
----
Hülye pelikán

Hogyne. Csak idő kérdése.

Nem osztom a felettem szolok velemenyet, csak jeleznem: ez feleslegesen eros volt. En se ertek annyira hozza, ezek a plusz infok a sizeof-rol nekem is ujak (mondjuk en nem is erolkodok a c kozelebe lenni, ha nem nagyon muszaj, de ez mar az en gondom).
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal