Cada uno tiene sus propios gastos generales. Dependiendo de lo que imprima, cualquiera puede ser más rápido.
Aquí hay dos puntos que vienen a la mente -
printf() tiene que analizar el "formato" cadena y actuar en consecuencia, lo que añade un costo.
cout tiene una jerarquía de herencia más compleja y pasa alrededor de los objetos.
En la práctica, la diferencia no debería importar para todos excepto para los casos más extraños. Si crees que realmente importa, ¡mide!
EDITAR-
Oh, diablos, no creo que esté haciendo esto, pero para que conste, en mi caso de prueba muy específica, con mi máquina muy específica y su carga muy específica, en la compilación Suelte usando MSVC -
Impresión 150,000 "Hello, World!" S (sin usar endl) toma aproximadamente -
90ms para printf(), 79ms para cout.
Impresión 150,000 dobles al azar toma aproximadamente -
3450ms para printf(), 3420ms para cout.
(promediada en 10 ejecuciones).
Las diferencias son tan escasas que esto probablemente no significa nada ...
manzanas o naranjas: que son más sabrosos? – bk1e
Si es importante para usted, escriba una aplicación pequeña que haga las dos cosas y la hora. Eso debería llevarte los 15 minutos para hacer. –
@Neil: no es * que * simple. std :: cout y operator << causan que se emita más código en el momento de la llamada. Toda la lógica de printf se encuentra en el CRT, pero utiliza la lógica de tiempo de ejecución para interpretar la cadena del argumento. Por lo tanto, los programas grandes con muchos sitios de llamadas y muchas directivas de formato diferentes pueden ver diferentes efectos que un pequeño programa de prueba con solo un gran 'por (mucho) {printf ("% d ", i); } ' – MSalters