printf/scanf a cout/cit

0

witam

chce zapytac czym to sie rozni w wydajnosci i ogolnie, no pisania aplikacji tylko do dzialania w terminalu ktora opcja lepsza ? mi sie ogolnie jakos printf/scanf bardziej podobaja, i sposob zapisania, i wyglad w kodzie(xd), jest jakas znaczaca roznica za przeniesieniem sie na cin/cout ?

0

cout używa strumienia

0

printf/scanf są wydajniejsze, lecz generalnie powinieneś korzystać z cin/cout, ponieważ są nowocześniejsze oraz bezpieczniejsze.
Po co trwać w epoce kamienia łupanego?

0

Coz, ja pisze,kompiluje i debuguje w emacsu, nawet czesto przegladam tam internet, sprawdzam poczte czy uzywam powloki :) Ale nie uwazam sie za takiego jaskiniowca xd

No okej a wiec skoro printf/scanf sa wydajniejsze to ich bede uzywal, poza tym tak jak wspomnialem duzo bardziej mi sie podoba tak pisac, a jesli nie ma kolosalnej roznicy to nie widze powodu zeby zmieniac na cin/cout :) dzieki

0

Mój "benchmark" https://gist.github.com/hauleth/3439252 pokazuje, że strumienie są szybsze:

Output:
std::cout bez sync_with_stdio(0)

real	0m0.082s
user	0m0.077s
sys	0m0.006s

std::cout z sync_with_stdio(0)

real	0m0.077s
user	0m0.076s
sys	0m0.000s

printf()

real	0m0.106s
user	0m0.101s
sys	0m0.004s

Output:
std::cin bez sync_with_stdio(0)

real	0m0.013s
user	0m0.008s
sys	0m0.004s

std::cin z sync_with_stdio(0)

real	0m0.017s
user	0m0.017s
sys	0m0.000s

scanf()
test.cpp: In function ‘int main()’:
test.cpp:2:75: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
 int main(){ int test;  for(int i = 0; i < 1000000; i++)  { scanf("%d", &i);} return 0;}
                                                                           ^

real	0m0.248s
user	0m0.103s
sys	0m0.144s
1

jest jakas znaczaca roznica za przeniesieniem sie na cin/cout ?

Różnica ma znaczenie tylko jak rozwiązujesz zadania na SPOJ-u albo wypluwasz naprawdę megabajty na wyjście. Tak to nie masz się czym przejmować.

Po co trwać w epoce kamienia łupanego?

Po to, że cout nie nadaje się przy tworzeniu programów wielojęzycznych.

Z printf można zdefiniować że tekst angielski wygląda tak:

"%d file(s) found."

a polski tak:

"Znaleziono %d plik(ów)."

i umieścić teksty w jakichś zasobach, albo zewnętrznym pliku.

A teraz spróbuj to zrobić z coutem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1