Prozess benötigt zu viel CPU-Leistung!

  • VB.NET
  • .NET (FX) 1.0–2.0

    Prozess benötigt zu viel CPU-Leistung!

    Moin! :)
    Ich brauche eure Hilfe, ich habe ein Programm geschrieben, dieses mir leider sehr viel CPU-Last verursacht.
    Ich könnte es soweit optimieren, dass es nun ungefähr folgenden Wert hat, 11-16% und mehr!
    Davor hatte es teilweise sogar einen Wert von über 30%.
    Mein Ziel ist, diesen Wert so gering wie möglich zu haben.
    Kann mir jemand noch helfen, wo ich den Code noch optimieren kann?
    Oder muss der User wirklich so viel CPU-Last zu Verfügung haben?
    Das wäre aber sehr schlecht….
    Deshalb habe ich mir noch einen Plan B ausgesucht.
    Ist es von der CPU-Last schönender, wenn ich alle Werte gleichzeitig sende,
    anstatt jeden String einzeln abzusenden?
    Ich glaube das könnte, die CPU-Last verbessern...
    Aber meine Befürchtung ist dann, nicht das der String zu lang wird, und nicht ganz versendet wird.
    Wenn der User zum Beispiel tausende Fenster geöffnet hat, und deshalb der String nicht mehr ausreicht.
    Oder ist diese Angst unbegründet?
    Ich weiß ja nicht, wie lang der String sein darf, wenn man diesen versendet!
    Freue mich auf eure Hilfe.
    Das Projekt habe ich mal hochgeladen.
    BIG THX



    Projekt:
    *



    Edit2:
    Ich habe noch weitere Screenshort hochgeladen…. :!:
    Die Hauptanwendung empfängt vom Programm Auslesen alle wichtigen Infos.
    Es sendet die geöffneten Prozesse und Titel zum Hauptprogramm.
    Ich benötige auf jeden Fall zwei separate EXE-Dateien.
    Deshalb versende ich die Info von Programm A zu B.




    Edit3:
    Ich habe mein Projekt nun etwas umgeschrieben.... :!:
    Jetzt sendet es alle 3 Sekunden, den Inhalt zur Hauptanwendung.
    Das filtern der doppelten Einträge übernimmt nun die Hauptanwendung.
    Damit ich etwas CPU-Last sparen kann.
    Die Haupanwendung benötigt nur 0,1 bis 0,3 %.
    Mein Problemkind das Ausleseprogramm benötigt jetzt nur noch zwischen 0,1 bis 1,6% .
    Ganz selten für paar MS auch etwas mehr %…
    Nun meine Frage, kann ich das Programm so lassen?
    Was passiert wenn der User mehr Prozesse am Laufen hat, dies ein String nicht mehr versenden kann?
    Oder ist das unmöglich, dass der String zu lang wird?

    Ich habe mein verbessertes Projekt auch hochgeladen.
    Wäre cool, wenn jemand es auch testen kann.
    Freue mich auf eure Hilfe.



    Projekt:
    *


    edit4:
    Unter Windows XP zeigt es sogar teilweise 0% CPU-last an. 8-)




    edit5:
    Ich habe das Problem lösen können. :)
    Erstmal sendet das Ausleseprogramm der Hauptanwendung einen String.
    Dieser String kann sehr lang sein!
    Ich habe einen 100MB String versenden können, das bedeutet dass meine Befürchtung nun doch kein Problem ist.
    Da der Benutzer niemals eine solange Liste von Prozessen haben kann.
    Vielleicht 1,2MB aber das ist auch sehr unwahrscheinlich...
    Und um das blöde Split Problem zu beseitigen,
    bin ich auf die Idee gekommen, einfach das Zeichen weg zulassen.
    Der String sieht nun so aus „FenstertitelName“ zweite Zeile „prozessname.exe“.
    Außerdem habe ich das filtern beschleunigen können.
    Die CPU last beträgt ca. 0,1% bis 1,5%.

    Ich möchte mich bedanken, und hoffe dass ich mit meiner gefundenen Lösung, auch anderen helfen könnte.
    :thumbsup:


    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „Cheffboss“ ()