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

Fórumok

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ások

Elvileg ami forditaskor kiszamolhato, az konstans lesz.


nyos@hex:~/src$ cat sizeofproba.c
#include <stdio.h>

#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.

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 <stddef.h>
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.

mit keresel egyaltalan c kozeleben?

--
NetBSD - Simplicity is prerequisite for reliability

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…

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

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.

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

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

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