¿Hay algún beneficio de rendimiento en el uso de varios subprocesos en una computadora con una única CPU que no tiene hyperthreading?Múltiples subprocesos y rendimiento en una única CPU
Respuesta
En términos de velocidad de cálculo, No. De hecho, las cosas se ralentizarán debido a la sobrecarga de administrar los hilos.
En términos de capacidad de respuesta, sí. Por ejemplo, puede esperar un hilo en una operación IO y hacer que otro ejecute una GUI al mismo tiempo.
Independientemente del número de CPU disponibles, si necesita multitareas preventivas y/o aplicaciones con componentes asíncronos (es decir, casi cualquier cosa que combine una GUI sensible con una cantidad de computación no trivial o procesamiento continuo de E/S), el multihilo funciona mucho mejor que la alternativa, que es usar múltiples procesos para cada aplicación.
Esto se debe a que los hilos en el mismo proceso pueden intercambiar datos de manera mucho más eficiente que los procesos múltiples, porque comparten el mismo contexto de memoria.
Consulte this Wikipedia article on computer multitasking para obtener una explicación bastante concisa de estos problemas.
Depende de su aplicación. Si pasa todo el tiempo usando la CPU, el multihilo simplemente ralentizará las cosas, aunque es posible que pueda usarlo para responder mejor al usuario y así dar la impresión de mejor rendimiento.
Sin embargo, si su código está limitado por otras cosas, por ejemplo, utilizando el sistema de archivos, la red o cualquier otro recurso, multithreading puede ayudar, ya que permite que su aplicación se comporte de manera asincrónica. Entonces, mientras un hilo espera que un archivo se cargue desde el disco, otro puede consultar un servidor web remoto y otro redibujar la GUI, mientras que otro está haciendo varios cálculos.
Trabajar con varios subprocesos también puede simplificar la lógica de su negocio, ya que no tiene que prestar tanta atención a cómo varias tareas independientes deben intercalarse. Si la lógica de programación del sistema operativo es mejor que la suya, entonces es posible que vea un mejor rendimiento.
Sí, hay una ventaja de utilizar varios subprocesos (o procesos) en una sola CPU: si un subproceso está ocupado esperando algo, otros pueden continuar haciendo un trabajo útil.
Sin embargo, esto puede ser compensado por la sobrecarga de la conmutación de tareas. Deberá comparar y/o perfilar su aplicación en hardware de grado de producción para averiguarlo.
¡Absolutamente! Si haces cualquier tipo de E/S, hay una gran ventaja de tener un sistema multiproceso. Mientras un hilo espera una operación de E/S (que es relativamente lenta), otro hilo puede hacer un trabajo útil.
Puede considerar el uso de múltiples hilos en una sola CPU
- Si utiliza los recursos de red
- Si lo hace operaciones de alto intensiva IO
- Si extraer datos de una base de datos
- Si explota otras cosas con posibles retrasos
- Si desea hacer su aplicación con la reacción ultraspeed
Cuando no se debe utilizar múltiples hilos en una sola CPU
- operaciones de alto intensivo que hacen casi el 100% de uso de CPU
- Si no está seguro de cómo utilizar hilos y la sincronización
- Si su aplicación no se puede dividir en varios procesos paralelos
- 1. Identificación única de marca de tiempo de alto rendimiento para varios subprocesos en Haskell
- 2. Instalación única, múltiples dominios y aplicaciones?
- 3. Múltiples archivos CSS y rendimiento
- 4. Android: actividad única, vistas múltiples
- 5. Múltiples ViewModels asociados con una única vista
- 6. clasificación de subprocesos múltiples
- 7. Perfilado de aplicaciones C++ de subprocesos múltiples
- 8. ¿Cómo encontrar una aplicación de subprocesos múltiples?
- 9. Depuración de una aplicación de subprocesos múltiples
- 10. ¿Cuál es una buena proporción de subprocesos de Java a CPU en Solaris?
- 11. python multiprocesamiento frente a subprocesos para trabajos encuadernados en cpu en Windows y Linux
- 12. MySQL: restricción única en campos múltiples
- 13. Agregue una restricción única en columnas múltiples con FluentNHibernate
- 14. Registro seguro de subprocesos múltiples
- 15. Afinidad de OpenMP y CPU
- 16. Rendimiento para múltiples bloques
- 17. Esperando múltiples subprocesos para completar en Java
- 18. Errores de subprocesos múltiples en C#
- 19. ¿Cómo administro múltiples subprocesos en Perl?
- 20. Shiro en un entorno de subprocesos múltiples
- 21. Algoritmo de subprocesos múltiples para resolver sudoku?
- 22. ¿Qué módulos debo considerar para hacer subprocesos múltiples en Perl?
- 23. HttpListener de subprocesos múltiples con aguardar asíncrono y tareas
- 24. C múltiples declaraciones de línea única
- 25. ¿Cómo pruebo múltiples navegadores con selenio y una única suite NUnit y lo mantengo SECO?
- 26. app.config múltiples valores de clave única
- 27. Solicitud única a múltiples respuestas asíncronas
- 28. R- establecer una fecha única de múltiples columnas
- 29. OpenCL: ejecutar múltiples dispositivos CPU/GPU
- 30. Contextos múltiples apuntando a una única aplicación web
En un sentido académico, tiene toda la razón. Sin embargo, ningún programa en la tierra es 100% trabajo de la CPU, lo que significa que en la práctica, múltiples hilos pueden tener un impacto positivo a pesar de que solo hay una unidad de computación –
¿Puede esta respuesta ser más elaborada? Por ejemplo, ¿qué beneficio tiene el multihilo en comparación con los multiprocesadores? – starcorn