C Vs C ++ Vs C ++ 14 (A Comparación del tiempo de ejecución)

Durante la programación, a veces puede haber estado atrapado en una posición como cuando tiene la opción de hacer esa pregunta en C y C ++ o C ++ 14, entonces el factor decisivo se basa en el tiempo de ejecución y la capacidad del programa para adaptarse a los cambios en el futuro . Aquí C ++, C ++ 14 tienen una ventaja sobre C ya que tiene funciones súper predefinidas en su biblioteca llamada Standard Template Library, conocida popularmente como STL, que es un conjunto de clases de plantillas de C ++ para proporcionar estructuras y funciones de datos de programación comunes como listas, pilas , matrices, etc. Es una biblioteca de clases de contenedores, algoritmos e iteradores que ahorra toneladas de tiempo al proporcionar varias estructuras de datos al programador con un clic.

La principal diferencia entre C y C ++ es que C es un lenguaje de programación procedimental y no admite clases y objetos, mientras que C ++ es una combinación de lenguaje de programación orientado a procedimientos y objetos; por lo tanto, C ++ puede llamarse un lenguaje híbrido.

Ahora, llegando al punto, puede haber escuchado que C ++ es más lento que C, pero ¿ha visto las estadísticas? Después de hacer ligeras modificaciones en el programa, podemos hacer que un programa C ++ se ejecute al mismo tiempo o, a veces, incluso más rápido que un programa correspondiente escrito en C Aquí tomé 2 preguntas sobre Búsqueda binaria y luego las codifiqué en C y C ++ y C ++ 14 y luego comparé su tiempo de ejecución.

Si generalmente usa cin / cout en C ++, la siguiente modificación puede ser bastante útil. Solo inclúyalo al comienzo del programa y úselo en main y estará listo.

Puedes encontrar lo que hace aquí.

Q1. El misterio del jabón

Es una pregunta de búsqueda binaria general en la que se dan q consultas y tenemos que buscar binariamente q número de veces en n elementos y su complejidad ID O (Q * Log (N)) donde N no es de elementos en la matriz.

Puedes encontrar la solución aquí.

Al codificarlo y ejecutarlo en casos de prueba grandes, esto es lo que obtuve.

Tiempo de ejecución de Q1 usando G ++ 5.4.0

Puede ver claramente que C es mucho más rápido que C ++ 14, pero lo que debe notar es que al usar esa modificación (refuerzo) se puede ver claramente que C ++ 14 y C ++ superan a C en su tiempo de ejecución (en caso de grandes casos de prueba).

Q2 Iniciando el desarrollo del juego

Esta es una pregunta fácil y media que implica hacer N búsquedas binarias en una matriz de 2-d con N filas y M columnas y luego encontrar el mínimo de la respuesta obtenida en cada fila, que es nuestra respuesta final. La complejidad resulta ser O (Nlog (M)).

La solución se puede encontrar aquí.

Ahora codificando en 3 idiomas diferentes aquí es lo que obtuve:

Tiempo de ejecución de Q2 usando G ++ 5.4.0

Aquí también se puede ver claramente que C supera a C ++ 14 pero utilizando esa modificación, C ++ es más rápido que C.

Algunos incluso usan getchar () desbloqueado (aunque tiene una fuga de seguridad), que es el más rápido de todos estos, ya que lee y escribe directamente usando el registro sin pasar por las secuencias intermedias (solo se usa si el tiempo es una gran preocupación). A veces, los límites de tiempo en las preguntas son tan estrictos que estas modificaciones juegan una regla crucial, sin ellas uno puede obtener TLE.

El compilador también juega un papel crucial. Dos de ellos son G ++ 5.4.0 y CLANG. Un compilador es un programa de computadora (o un conjunto de programas) que transforma el código fuente escrito en un lenguaje de programación (el idioma fuente) en otro lenguaje de computadora (el idioma de destino), y este último a menudo tiene una forma binaria conocida como código objeto. El compilador que puede hacer este trabajo más rápido será mejor.

PROS DE GCC

1. GCC admite lenguajes a los que no apunta clang, como Java, Ada, FORTRAN, Go, etc.

2. GCC admite muchas extensiones de lenguaje, algunas de las cuales no están implementadas por Clang. Por ejemplo, en modo C, GCC admite funciones anidadas y tiene una extensión que permite VLA en estructuras.

PROS DE CLANG

  1. Clang es mucho más rápido y usa mucha menos memoria que GCC.
  2. El soporte de Clang para C ++ es más compatible que el de GCC en muchos aspectos.
  3. Clang admite muchas extensiones de lenguaje, algunas de las cuales no son implementadas por GCC. Por ejemplo, Clang proporciona atributos para verificar la seguridad de subprocesos y los tipos de vectores extendidos.
  4. Clang ha sido diseñado desde el principio para proporcionar diagnósticos extremadamente claros y concisos (mensajes de error y advertencia), e incluye soporte para diagnósticos expresivos.

Así que esto concluye mi pequeña actividad divertida de comparar el tiempo de ejecución entre los dos lenguajes más utilizados en la programación de computadoras usando la búsqueda binaria como pivote. Espero que hayas adquirido algún conocimiento al leer esto y puedas elegir el lenguaje de programación de una mejor manera.

Feliz lectura !