Es posible que haya encontrado estas declaraciones, C está más optimizado o el rendimiento de C es mejor que los lenguajes superiores, por lo que discutiré las razones de esta hipótesis.
Primero, enumeremos las funcionalidades que proporcionan lenguajes como Java y no C:
- Comprobación de límite de índice de array
- Comprobación de valores de variables no inicializados
- Comprobar si hay fugas de memoria
- Comprobar la desreferencia del puntero nulo
- Recolección automática de basura
- Comprobación de tipos en tiempo de ejecución
- Manejo de excepciones
y hay más funciones de este tipo que no están presentes en C.
Las funciones adicionales tienen un costo y el costo incluye la disminución de la velocidad y el aumento del tamaño .
Tomemos un ejemplo de asignación dinámica en C y Java
Java:
MyClass obj = new MyClass();
¿Consideró el tamaño del objeto ? La respuesta es No. La razón es que el lenguaje mismo lo maneja automáticamente en segundo plano y no es necesario que escriba un código específico para él.
Pero en el caso de C
struct MyStruct *obj = malloc(sizeof(struct MyStruct));
Como puede ver en el código anterior, las tareas de asignación de referencia al puntero, la asignación de tamaño la realiza explícitamente el programador y, por último, libera la memoria asignada.
La verificación de límite de array es compatible con Thumb Execution Environment (ThumbEE), sus otras características incluyen verificaciones automáticas de puntero nulo en cada instrucción de carga y almacenamiento, una instrucción especial que llama a un controlador.
Otra razón es la cercanía de C al lenguaje ensamblador, en la mayoría de los casos sus instrucciones se asignan directamente al lenguaje ensamblador, C está a solo uno o dos niveles de abstracción del lenguaje ensamblador, mientras que Java está a un mínimo de 3 niveles de abstracción del ensamblador.
Referencias:
1) por qué-es-c-tan-rápido-y-por-qué-no-otros-idiomas-son-tan-rápidos-o-más-rápidos
2) ARM_architecture#Thumb_Execution_Environment_.28ThumbEE.29
3) Vista de Linus Torvalds
Este artículo es una contribución de Mandeep Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA