Apéndice A. Consejos para desarrolladores


Cada texto de programación cubre problemas sobre asignación de memoria y rendimiento de funciones específicas. Cuando usted desarrolle su software, tenga en cuenta los aspectos que pueden aumentar el consumo de energía en los sistemas en los cuales se ejecuta el software. Aunque estas consideraciones no afectan cada línea de código, puede optimizar su código en áreas en las cuales se presentan cuellos de botella para rendimiento.
Algunas técnicas que suelen ser problemáticas incluyen:
  • el uso de hilos.
  • los despertadores de CPU innecesarios y el uso ineficiente de despertadores. Si debe despertar, haga todo al mismo tiempo (carrera a ralentí) y tan pronto como sea posible.
  • el uso innecesario de [f]sync().
  • el polling activo innecesario o uso de plazos cortos o regulares. (Reaccionar a eventos en su lugar)
  • no usar eficientemente despertadores.
  • acceso ineficiente de disco. Usar grandes buffers para evitar el acceso frecuente a disco. Escribir un gran bloque a la vez.
  • el uso ineficiente de temporizadores. Temporizadores de grupo a través de aplicaciones (o incluso a través de sistemas) si es posible.
  • excesiva E/S. consumo de energía o uso de memoria (incluyendo filtraciones de memoria)
  • realización innecesaria de computos.
Las siguientes secciones examinan algunas de estas áreas de una forma más detallada.

A.1. Uso de hilos

Se cree que el uso de hilos hace que las aplicaciones tengan un rendimiento mejor y más ágil, pero no es cierto en todos los casos.
Python

Python usa el Global Lock Interpreter[1], por lo tanto, el uso de hilos es solo útil para operaciones de E/S mayores. Unladen-swallow [2] es una aplicación de Python más rápida con la cual puede optimizar su código.

Perl

Los hilos de Perl fueron creados originalmente para aplicaciones que se ejecutan en sistemas sin bifurcaciones (como los sistemas con sistemas operativos de Windows de 32 bits). En hilos de Perl, los datos se copian para cada hilo (Copia en Escritura). Los datos no son compartidos de forma predeterminada, puesto que los usuarios deben definir el nivel de datos compartidos. Para compartir datos, el módulo threads::shared tiene que estar incluido. Sin embargo, los datos no son solamente copiados (Copia en Escritura), sino que el módulo también crea variables vinculadas para los datos, lo cual toma aún más tiempo y es aún mucho más lenta. [3]

C

Los hilos C comparten la misma memoria, cada hilo tiene su propia pila y el kernel no tiene que crear nuevos descriptores de archivo ni asignar nuevo espacio de memoria. C puede usar el soporte de más CPU para más hilos. Por lo tanto, para maximizar el rendimiento de sus hilos, utilice un lenguaje de bajo nivel como C o C ++. Si utiliza un lenguaje de scripts, considere escribir un vínculo C. Use perfiladores para identificar las partes de su código que se ejecutan pobremente. [4]

Red Hat logoGithubRedditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

© 2024 Red Hat, Inc.