Colección de citas famosas - Slogan de motivación - El lenguaje C utiliza lectura para leer la información del puerto serie. ¿Existe alguna diferencia en eficiencia entre leer por bytes y leer una cierta longitud a la vez?

El lenguaje C utiliza lectura para leer la información del puerto serie. ¿Existe alguna diferencia en eficiencia entre leer por bytes y leer una cierta longitud a la vez?

Definitivamente hay una diferencia y es grande.

Debido a que read es un programa en modo de usuario, y cada lectura corresponde a una llamada al sistema (cambiar del modo de usuario al modo kernel y luego volver al modo de usuario), de hecho, lo que consume más tiempo es el interruptor de estado.

Si lees 5 bytes a la vez, solo hay una llamada al sistema (dos cambios de estado).

Si lee un byte a la vez, deberá leerlo cinco veces y habrá cinco llamadas al sistema (10 cambios de estado).

La diferencia específica está relacionada con el entorno real y se necesitan muchos datos para verlo durante las pruebas.