Librería de Snippets en C/C++

Iniciado por z3nth10n, 22 Julio 2013, 19:48 PM

0 Miembros y 1 Visitante están viendo este tema.

eferion

Cita de: OmarHack en  2 Agosto 2013, 06:38 AM
No creo que haya tanta diferecia, si me lo puedes demostrar las usaré :P
Gracias, voy a informarme, un saludo.

A ver, las llamadas a printf, cout, etc, se comunican directamente con el sistema.

Sin embargo, un system( " ... " ) es más complejo:

* En primer lugar, no es portable.
* En segundo lugar, una llamada a system( "echo ..." ), por ejemplo implica ejecutar el programa pause, es decir, tu aplicación solicita al sistema la ejecucion de la aplicación echo, esta aplicación se ejecuta, recibe el mensaje y entonces hace su propia llamada a printf, después finaliza, se liberan los recursos y tu programa vuelve a recuperar el hilo de ejecución.

Se puede afirmar, por tanto, que usar funciones propias de c y c++ para interactuar con el usuario son muuuuucho más eficientes que usar system.

0xDani

Código (cpp) [Seleccionar]
#include <iostream>
#include <chrono>
#include <cstdlib>

int main()
{
auto t1 = std::chrono::high_resolution_clock::now();

for(int i=0; i<10000; i++)
  system("echo hello");

auto t2 = std::chrono::high_resolution_clock::now();

auto t3 = std::chrono::high_resolution_clock::now();

for(int i=0; i<10000; i++)
  std::cout << "hello" << std::endl;

auto t4 = std::chrono::high_resolution_clock::now();

auto span = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1);

std::cout << "It took " << span.count() << "seconds to print text using echo" << std::endl;

auto span2 = std::chrono::duration_cast<std::chrono::duration<double>>(t4 - t3);

std::cout << "It took " << span2.count() << "seconds to print text using cout" << std::endl;

return 0;
}


Este código hace una comparación del tiempo que se tarda en imprimir "hello" en pantalla usando system() y llamando a echo; y usando cout. Se debe compilar en modo C++11.

Cita de: OutputIt took 30.9291 seconds to print text using echo
It took 0.768124 seconds to print text using cout

En fin, no es una buena práctica llamar a system.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM