¿Por qué las operaciones IO de los lenguajes interpretados son lentas si las bibliotecas están escritas en C?

Esta es una pregunta interesante porque la respuesta real es “Las operaciones de E / S no deberían ser notablemente más lentas” y tiene poco que ver con el idioma en que se escriben las bibliotecas.

Fuera si el proceso. Básicamente, cuando haces E / S, el programa tiene que salir de su proceso principal para hacerlo, lo que generalmente implica un largo tiempo de espera para la finalización de E / S que tiene que ver con el idioma en el que están escritos los programas o si son idiomas interpretados o no.

¿Cuál podría ser la diferencia? Probablemente haya algún otro factor, como el almacenamiento en caché, la indexación, el algoritmo para la E / S, etc. He resuelto miles de estos problemas y nunca he visto una situación en la que el lenguaje de programación marcara una diferencia al preocuparse.

Muchas posibles causas de raíz. Por otro lado, hay muchas otras cosas que pueden ralentizar la E / S que requieren una experiencia considerable para encontrar o incluso comprender. Esto se debe simplemente a que el software a menudo está diseñado para acelerar la E / S o al menos se percibe que lo hace más rápido mediante el uso de estructuras de datos más complejas y algoritmos más eficientes.

Aquí viene el lechero. La velocidad de E / S se puede comparar con la obtención de 1000 litros de leche. Si quieres leche realmente fresca, debes tener una vaca o ir al disco cada vez que se trate de datos. Si desea 1000 litros de leche, puede hacer 1000 viajes para obtener un litro o un viaje para obtener 1000 litros, o hacer E / S a granel en el caso de los datos. Si le preocupa la calidad de la leche, puede hacer pruebas costosas para detectar contaminantes, o una validación de datos tan costosa. Creo que ya puede entender las analogías, pero encantar el lenguaje de programación sería como elegir obtener la leche en cartones de papel o botellas de plástico; no afectaría el almacenamiento de la entrega de la leche.

Más información por favor. Si está indicando un problema de rendimiento, siempre es bueno dar las mediciones de lo lento y lo bueno conocido para que las circunstancias puedan analizarse adecuadamente.

Porque IO es lento. Porque el medio es lento. No tiene nada que ver con la implementación de software.

Porque tienen que traducirse en el momento de la ejecución y porque la traducción puede dar lugar a una serie de llamadas a las funciones C de nivel inferior.