Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/10/2012, 06:40
E_Blue
 
Fecha de Ingreso: mayo-2011
Mensajes: 102
Antigüedad: 13 años
Puntos: 0
Pregunta Consumo de recursos de procesador

Hola, tengo una aplicación con un Form que contiene un par de TabPages dentro de un TabControl con dos RichTextBox a los cuales escribo a través de delegados; también tengo 3 Timers, uno cada 10 segundos y los otros dos cada 1 segundo, y por ultimo un control SerialPort a 19200bps y una conexión a un servidor MySQL.

Todo lo antes mencionado me esta consumiendo alrededor de 50MB de RAM, esto no lo veo mal, lo que si me sorprende es que consuma el 50% de los recurso del procesador (Pentium Dual Core E5300).

Mi pregunta es, ¿Hay alguna forma de saber que parte del programa es la que esta consumiendo tantos recursos del procesador?¿Que practicas se pueden implementar para reducir el consumo de procesador?

Edito:

Al parecer ocurre luego de un par de horas de funcionamiento, empiezo a sospechar que los RichTextBox, al llenarse, hacen que la aplicación consuma mas recursos.

El código que estoy usando en lo delegados es el siguiente:

Código vb:
Ver original
  1. Private Sub PrintLog(ByVal NewText As String, Optional ByVal NewLine As Boolean = True)
  2.  
  3.         If Me.InvokeRequired Then
  4.             Dim Txt As New PrintLogDelegate(AddressOf PrintLog)
  5.             Me.Invoke(Txt, New Object() {NewText})
  6.  
  7.         Else
  8.             Dim FechaHora As String = ""
  9.             'If NewLine And LogRTB.TextLength > 1 Then 'Evita que se agregue un /r/n a la primera linea
  10.            If NewLine Then
  11.                 FechaHora = GetFechaHora() & " | "
  12.                 If LogRTB.TextLength > 1 Then
  13.                     NewText = vbCrLf & FechaHora & NewText
  14.                 Else
  15.                     NewText = FechaHora & NewText
  16.                 End If
  17.             End If
  18.             LogRTB.AppendText(NewText)
  19.  
  20.  
  21.             LogRTB.SaveFile(LogPath & ".log", RichTextBoxStreamType.PlainText)
  22.             If LogRTB.TextLength > 1000000 Then
  23.                 LogRTB.Clear()
  24.                 'Si supera el millon de caracteres renovar el nombre del archivo para que quede listo para el proximo
  25.                LogPath = Application.StartupPath & "\" & GetFechaHora().Replace(":", "")
  26.             End If
  27.  
  28.             If LogAutoScrollChk.Checked Then
  29.                 LogRTB.ScrollToCaret()
  30.             End If
  31.         End If
  32.     End Sub

¿Ustedes lo ven muy pesado?

Última edición por E_Blue; 10/10/2012 a las 07:31