They aren't the same thing so the comparison is weird.
endl
has a flush
which is important when doing something like embedded work or RTOS development. If i was doing multiple lines they all were \n
until the last line when i actually want to push the buffer.
Obviously depending on the tuning of the compiler's optimization multiple flushes could be reduced but the goal should always be to write as optimal as possible.