Tengo una aplicación multiproceso C#, donde la lógica central se encuentra en un controlador de eventos Timer.Elapsed
. El controlador de eventos contiene 2 for
loops que ejecuta un máximo de n * n = 5 * 5 = 25 times
.Aplicación C# - Reducir el uso de la CPU
La aplicación funciona bien en mi PC. Ejecuté VS 2010 Profiler
frente a la aplicación y promedios de uso de CPU en 20%.
probador La compañía dice que en su PC este salta a entre 50% y 100% en su PC. Esto está causando problemas de rendimiento para él.
- ¿Hay algo que pueda hacer para remediar esto?
- ¿Qué significa realmente un alto uso de CPU?
- ¿Podría esto afectar su PC?
- ¿Es posible decirle a una aplicación que utilice solo
X
cantidad de en la CPU?
Cualquier ayuda sería apreciada.
El número de veces que se ejecuta el bucle significa algo en el contexto de lo que ejecuta. Si ejecuta costosas operaciones 25 veces, eso podría ser un gran problema. Si sumas 25, no importará. – rerun
¿Con qué frecuencia está disparando su temporizador? ¿Esperas a que la operación se complete antes de volver a iniciar el temporizador, o simplemente sigues pateando tus loops una y otra vez independientemente de si el anterior ha terminado? –
El temporizador se ejecuta cada segundo. En el controlador de eventos del temporizador, detengo el temporizador en la primera línea de código y lo reinicio en la última línea de código. Efectivamente, esto solo crea un retraso de 1 segundo entre los eventos. El código entre iniciar y detener el temporizador, hace algunos cálculos en la memoria en un ConcurrentDictionary, que puede crecer bastante. Los cálculos son bastante simples pero se basan en grandes cantidades de datos. No ocurre interacción con la IU en este controlador de eventos, por lo tanto, no estoy usando un DispatcherTimer ni un BackgroundWorker. El ConcurrentDictionary se actualiza mediante varios eventos. – c0D3l0g1c