|
Titlul: Diferenta streamuri - functii Scris de: Usurelu Catalin din August 08, 2009, 00:21:33 Am tot citit pe site ca streamurile sunt mai putin rapide decat functiile de citire. In primul rand nu inteleg de ce e asa. Iar in al doilea rand cu cat sunt mai rapide functiile decat streamurile? Are rost sa invat sa folosesc functii de citire sau raman la streamuri ?
A si ca sa nu uit tot asa am auzit ca alocarea dinamica e mai putina rapida decat alocarea statica sau asa ceva. De ce e asa ? Legat de asta am avut parte de o problema in care daca declaram local (si static) un vector de cateva mii de numere programul era cu 100 ms mai incet decat daca declaram global; care o fi explicatia ? Titlul: Răspuns: Diferenta streamuri - functii Scris de: A Cosmina - vechi din August 08, 2009, 00:42:45 Eu am auzit chiar contrariul ... :-k Ca stream-urile sunt mai rapide decat functiile standard.
Eu prefer stream-urile, mi se par mai usore, mai "dragute". (si cu ultimul epitet v-am dat gata ! ) :banana: Titlul: Răspuns: Diferenta streamuri - functii Scris de: Emanuel Cinca din August 08, 2009, 00:50:46 Pe ultimul compilator gcc sunt mai rapide streamurile. Cred ca o problema buna sa vezi asta e Subsecventa de suma maxima (http://infoarena.ro/problema/ssm) din arhiva educationala. Legat de a doua intrebare, nu cred ca iti pot da un raspuns destul de bun. Stiu doar ca lucrand direct cu pointeri, se acceseaza mai repede memoria. Alte detalii nu stiu, din pacate. :sad:
PS: La ONI cred ca nu s-a folosit ultimul compilator gcc, deci erau mai rapide functiile. E bine sa le stii pe ambele si in functie de compilatorul folosit in concurs sa le utilizezi pe cele mai rapide. :peacefingers: Titlul: Răspuns: Diferenta streamuri - functii Scris de: A Cosmina - vechi din August 08, 2009, 00:52:31 Dar cum iti dai seama la concurs care-s cele mai rapide ? :?
Titlul: Răspuns: Diferenta streamuri - functii Scris de: Emanuel Cinca din August 08, 2009, 00:55:43 Mai nou de gcc 4.2.4 e sigur cu streamuri mai rapide. De exemplu pe .campion s-a folosit gcc 3.2.2, pentru care functiile erau mai rapide. Nu stiu exact de la ce versiune au devenit streamurile mai rapide. Cred ca de la primul gcc 4. ???
Titlul: Răspuns: Diferenta streamuri - functii Scris de: Mircea Dima din August 08, 2009, 09:23:50 Dar cum iti dai seama la concurs care-s cele mai rapide ? :? Faci 2 programe care citesc din fisier : una cu streamuri si una cu scanf (si eventual inca una cu parsare :P ) si bagi in fisier 1 000 000 de numere random... si vezi timpul de executie... asta e cea mai buna solutie (pentru cazul in care compilatorul folosit pe desktopuri e cel pe care se face evaluarea...) :) Titlul: Răspuns: Diferenta streamuri - functii Scris de: Usurelu Catalin din August 08, 2009, 09:36:02 Am inteles multumesc de raspunsuri, dar totusi eram curios cum functioneaza streamurile si cum functioneaza functiile de exista si a exista diferenta de timp de executie intre ele.
Titlul: Răspuns: Diferenta streamuri - functii Scris de: Mircea Dima din August 08, 2009, 09:49:40 Pai inainte sa apara g++ 4 scanf era mai rapid pentru ca tu ii spuneai formatul (adica ce sa citeasca)
scanf("%d", &n); ...ii spuneai ca citesti un int pe cand la streamuri: cin>>n; ... trebuia sa verifice el ce tip e + ca se folosesc clase (OOP) . Acum.... nu stiu exact ce optimizari au facut de sunt mai rapide streamurile... Defapt streamurile sunt mai rapide doar la citire... ca la scriere e mai rapid cu printf :P. Iar cel mai rapid e cu parsare ... indiferent de compilator. Titlul: Răspuns: Diferenta streamuri - functii Scris de: A Cosmina - vechi din August 08, 2009, 11:13:33 Eu sunt de parere ca atunci cand programezi in C++ ar trebui sa folosesti stream-uri pentru ca sunt "de-acolo", iar cand programezi in C utilizezi functiile standard. :peacefingers:
Titlul: Răspuns: Diferenta streamuri - functii Scris de: Andrei Misarca din August 08, 2009, 11:29:17 Eu sunt de parere ca atunci cand programezi in C++ ar trebui sa folosesti stream-uri pentru ca sunt "de-acolo", iar cand programezi in C utilizezi functiile standard. :peacefingers: Avand in vedere ca la un program este important sa functioneze corect si cat mai rapid, ar trebui sa folosesti functia care viteza cea mai buna. De altfel, cea mai rapida este parsarea citirii, insa uneori este destul de anevoioasa(de ex. in cazul numerelor reale). |