Seite 1 von 3

XbpPushButton zu langsam

Verfasst: Do, 17. Mai 2018 0:35
von DelUser01
Hallo

seit wenigen Wochen habe ich ein massives Geschwindigkeitsproblem.
Inzwischen konnte ich die "Bremse" lokalisieren: XbpPushButton()
Bis vor wenigen Wochen lief das Ganze noch akzeptabel. Aber seit ca. 2-4 Wochen ist die Sache in die Knie gegangen. Geschätzt mind. 3x langsamer.
Wenn ich oCrt():LockUpdate( .T. ) nicht verwende kann man zuschauen wie die Buttons nacheinander "gemalt" werden. Bei durchschnittlich 60 Buttons dauert das ca. 1.5 Sekunden!
Verwende ich LockUpdate passiert eben ca. 1,5 Sekunden nichts.
Mit XbpImageButton scheinbar kein zusätzlicher Zeitverlust.

Selbst wenn ich "nur" 10 Buttons nehme bremst das schon deutlich.

Xbase++ 2.0 Build 918
MS Win 10 Pro 64 Upd 1803 - mit Upd 1703 aber genauso langsam
Die Hardware (CPU, RAM u.a.) scheint dabei fast keine Rolle zu spielen.

Auch die Größe der Buttons, der Font u.a. (Fenstergröße) scheint keinen Einfluss darauf zu haben.

Jimmy hatte auch schon vor längerer Zeit von soetwas berichtet:
https://www.xbaseforum.de/viewtopic.php ... sam#p17681

Entweder habe ich irgendwo einen dicken Fehler eingebaut oder die Updates machen Probleme. Zumindest der Virenscanner hat dises mal keine Schuld...

Nachtrag
Das oBtn:Destroy() der Buttons dauert auch recht lange, da kann man auch zuschauen wie die Buttons wieder "wegradiert" werden.
Die oben genannte Laufzeit ist zusammengesetzt aus Destroy und Create.

Re: XbpPushButton zu langsam

Verfasst: Do, 17. Mai 2018 2:29
von AUGE_OHR
du hast nicht eine neue GFK oder Treiber ?
wirken andere XbParts auch so langsam oder nur die XbpPushbutton ?

wenn ich eine Tastatur mit 102 XbpPushbutton() aufbaue dauert es < 1 Sec. auf meinem P4 Prescott 3 Ghz
wenn du mehr brauchst stimmt was nicht ... oder machst du so viel Ownerdraw ?

---

üblicherweise würde man die Caption belegen aber bei Ownerdraw kann man das ja zur Laufzeit machen.

immer

Code: Alles auswählen

   cText  := "Button : "+LTRIM(STR(nCount))
16 x 9 Button normal

Code: Alles auswählen

   oBtn := XbpPushButton():new(oDraw,, {xPos,yPos},{xSize,ySize},,.F. )
   oBtn:useVisualStyle := .F. // ohne Effekte
   oBtn:caption := cText

0,5 - 0,6 Sec
Ownerdraw normal

Code: Alles auswählen

   oBtn:drawMode := XBP_DRAW_OWNER
   if NormalDraw
      oBtn:draw := {|oPS, aInfo, oSelf| MyPaint(oPS, aInfo, oSelf) }
      oBtn:caption := cText

0,7 - 0,8 Sec
Ownerdraw Versuch Parameter cText ohne Caption

Code: Alles auswählen

   else
      // funktioniert so nicht in einer Schleife mit cText Zähler
      oBtn:draw := {|oPS, aInfo, oSelf| MyPaint(oPS, aInfo, oSelf, cText) }

0,6 - 0,7 Sec
Ownerdraw mit Function und Caption

Code: Alles auswählen

   oBtn:draw := MakeBlock()
   oBtn:caption := cText

0,5 - 0,6 Sec
Ownerdraw mit Function und cText als Parameter

Code: Alles auswählen

   oBtn:draw := MakeBlock(cText)

< 0,5 Sec
Ownerdraw ist gewöhnlich langsamer ... jede Zeile kostet Zeit
wenn man den Callback Slot über eine Function belegt wird der Codeblock IMHO zum "EarlyBoundCodeblock"

auch das "belegen" und "auslesen" der o:Caption kostet Zeit. Bei Ownerdraw brauche ich es aber erst wenn ich "malen" soll. damit komme ich sogar ein wenig unter die Zeit eines normalen Button ... wenn ich wirklich alles weg lasse (Effekte etc.)


probieren mal 1000 XbpPushbutton() mit/ohne Caption aus, bei der Menge sollte man es schnell merken.

Re: XbpPushButton zu langsam

Verfasst: Do, 17. Mai 2018 7:19
von DelUser01
Hallo Jimmy

Grafikkarte usw.
die Geschwindigkeit des Aufbau der Buttons variiert auf verschiedenster Hardware um ca. Faktor 2 bis 3.
von Intel P4 mit XP und UXGA über Core-2-Duo mit UXGA und i7-6700K mit 4K.

Der Unterschied zwischen Standard XbpPushButton und XbpImageButton (ownerdraw) ist max. 20%.

oBtn:XbpPushButton():New(...)
oBtn:Caption := cText
oBtn:Create()

Die Buttons sollen ja sofort mit Caption angezeigt werden - Deine Infos kann ich nicht richtig zuordnen - ich will ja nur Buttons, wenn möglich so schnell wie früher...

Natürlich habe ich bis die Buttons generiert werden einen gewachsenen "Wasserkopf" an Berechnungen davor.

Re: XbpPushButton zu langsam

Verfasst: Do, 17. Mai 2018 7:32
von DelUser01
Nachtrag #2

Ich habe auch den Eindruck, als würde die Geschwindigkeit immer langsamer je länger der PC läuft.
4 Std. 8 Std. 12 Std.
Das Programm läuft nicht immer durchgehend - bie Kunden ja, aber ich mache es ja sehr häufig auf und zu.

An manchen Plätzen an denen es tagsüber recht langsam wird könnte man meinen, dass der Bildaufbau nach einem Neustart etwas schneller ist (50%?).

Re: XbpPushButton zu langsam

Verfasst: Do, 17. Mai 2018 13:01
von ramses
Hallo Roland

jetzt wo du davon anfängst, tatsächlich bauen sich die Buttons langsamer auf als auch schon. ...

zum Vergleich habe ich dann die Version 2.0.685 geprüft. Diese verhält sich jedoch genau gleich wie die 918.

Das Problem scheint an Windows zu liegen ...

Gruss Carlo

Re: XbpPushButton zu langsam

Verfasst: Do, 17. Mai 2018 14:30
von DelUser01
Hallo Carlo
ramses hat geschrieben: Do, 17. Mai 2018 13:01zum Vergleich habe ich dann die Version 2.0.685 geprüft. Diese verhält sich jedoch genau gleich wie die 918.
Das ist aber schlecht wenn das mit einer älteren Compiler-Version genauso langsam ist - das wollte ich heute Abend auch testen.

Re: XbpPushButton zu langsam

Verfasst: Do, 17. Mai 2018 15:13
von ramses
Hallo Roland

ich habe in einer Maske 25 Button mit Text.
Wir meinen dass die früher einfach aufgepoppt ist, nun kannst du zusehen wie die Buttons der Reihe nach erstellt werden.

Teste es morgen mal bei einem Kunden.

Gruss Carlo

Re: XbpPushButton zu langsam

Verfasst: Do, 17. Mai 2018 15:28
von DelUser01
@Carlo
genau das ist das Problem...

Habe inzwischen die Steuerung an einigen Stellen umgebaut -also vermeintlich "optimiert", z.B. Wiederverwendung der Button-Objekte, permanentes Button-Array. Leider keine spürbare Verbesserung.

Re: XbpPushButton zu langsam

Verfasst: Do, 17. Mai 2018 17:12
von BJelinek
Hallo Roland,

welche Win 10 Version ?

Bei 1803 braucht man vieleicht die neuen Grafikkartentreiber, die es für 1803 gibt.

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 0:32
von DelUser01
Hallo Bernd

habe auf verschiedenen PCs getestet, es gab tatsächlich neue Grafiktreiber welche (noch) nicht über das normale W10 Update installiert wurden. Aber leider keine Verbesserung bei der Button-Geschwindigkeit.

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 11:33
von ramses
Hallo Roland

ich habe die Maske wie angekündgt bei einem Kunden getestet.

Siehe da: Sie popt sofort und vollständig auf! Das Fenster erscheint blitzartig und vorallem vollständig aufgebaut!! Nix warten.

Grafiktreiber sind bei beiden die aktuellsten.

Ich muss nun diese "Demo" erst mal mental verarbeiten ........

Gruss Carlo

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 11:45
von Tom
Es gibt einige Virenscanner, die "Prozessüberwachung" vornehmen, z.B. Kaspersky. Das verzögert nach meiner Erfahrung den Dialogaufbau, zuweilen sogar erheblich.

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 11:49
von DelUser01
Hallo Carlo

konnte bei meinen unterschiedlichen PCs noch nichts herausfinden was einen weiteren Hinweis für die Ursache liefert. Eventuell lasse ich bei einem Kunden alle PCs am Samstag einschalten und teste die durch.

Ich habe für die schlimmsten Stellen einen Workaround eingebaut.

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 11:51
von DelUser01
Hallo Tom

das ist ein guter Hinweis!
Das werde ich auch heute Nachmittag testen.
Bei mir und den betroffenen Kunden ist tatsächlich derselbe Virenscanner drauf (G Data).
Von denen weiß ich, dass die an manchen Stellen schon Probleme hatten Funktionen die abgeschaltet sein sollten auch wirklich zu deaktivieren - die liefen einfach im Hintergrund weiter (z.B. Port-Scanner).

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 15:02
von DelUser01
Hallo Tom

das war der entscheidende Hinweis mit dem Virenscanner!
Den Virenscanner habe ich vom Server und meinem Test-PC gelöscht und alles rennt wieder!
G Data macht seit kurzem auch so etwas - die sagen nur nicht genau wass.
Habe gerade ein inoffizielles Update bekommen in welchem die Prüfintensität nicht so hoch ist, damit soll es dan besser werden.

Ich setze seit enem Jahr G Data ein - was mich das Zeit und Geld gekostet hat - jetzt fliegen die raus.

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 16:49
von ramses
Hallo Roland

bist du mit der Geschwindigkeit voll zufrieden? Poppt deine Maske nun fertig aufgebaut auf oder kannst du immer noch zusehen wie die Buttons gezeichnet werden? Hast du ein 64-Bit Windows?

Gruss Carlo

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 16:59
von Tom
Hallo, Roland.

Das freut mich - einerseits. Andererseits ist das total ärgerlich, dass Virenscanner auch diese Form von Ärger machen können, zumal man es häufig überhaupt nicht erfährt - die Kunden sind genervt von der vermeintlichen Langsamkeit des Programms, aber teilen das nicht mit.

Ursache ist, dass sich viele Scanner einfach in alle API-Calls klemmen und versuchen, herauszufinden, ob da was Gefährliches passiert. Es gibt drei Lösungen:

1. Man stellt die Scanner so ein, dass die Anwendung ausgespart wird. Das ist allerdings mühselig und nicht immer verlässlich.
2. Man lässt sich vom Hersteller whitelisten. Das geht, ist aber auch ziemlich aufwendig. Bei einigen muss man jede neue Version einreichen.
3. Man signiert die Software hochoffiziell, also über Microsofts Codesigning. Die meisten Scanner nehmen solche Anwendungen aus. Für diesen Weg haben wir uns entschieden.

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 17:21
von ramses
Hallo Tom

es gäbe da der vollständigkeithalber noch einen weiteren Punkt (der sogar noch neue Geschäftsmodelle öffnet)

4- Man baut die App zu einer Web-App um die auf dem Client OHNE Installation sofort im Browser läuft. Für diesen Weg haben wir uns entschieden.

Gruss Carlo

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 23:01
von AUGE_OHR
Roland Gentner hat geschrieben: Fr, 18. Mai 2018 15:02das war der entscheidende Hinweis mit dem Virenscanner!
schön das du es gefunden hast =D>
aber ich hätte erwartet das du vorher solche Möglichkeiten schon probiert hättest ... #-o

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 23:17
von DelUser01
Hallo Jimmy

dass Virenscanner inzwischen nicht nur die Festplatte und das Netzwerk lahmlegen sondern auch schon Prozesse und Fenster/Buttons ist schon der Hammer. Das ist mit (bisher) nicht im Traum eingefallen.

Re: XbpPushButton zu langsam

Verfasst: Fr, 18. Mai 2018 23:35
von DelUser01
Zur Info

habe von G DATA inzwischen eine Sonderversion bekommen welche nicht so heftige "Verhaltensüberwachung" durchführt. Läuft dann alles ein bishen schneller - aber ab und zu bleibt dafür das Ganze so gut wie stehen - also auch Mist.
Wie kann man nur zu Lasten der Kunden so etwas entwickeln und rausgeben???

Die sogenannte "Verhaltensüberwachung" kann man nicht einmal ausschalten...
Wo soll das noch hinführen?

Re: XbpPushButton zu langsam

Verfasst: Sa, 19. Mai 2018 6:11
von ramses
Hallo Roland
Wo soll das noch hinführen?
Mit den aktuell gesetzten Zielen "Mobile first" der grossen der IT dazu dass herkömliche Apps nicht nur stategisch ausgebremst werden sondern auch technisch. Wäre dem nicht so wäre dieses Problem schon den ersten Testern bei G-Data aufgefallen..... Leider will auch MS$ diesen Weg beschreiten. Wenn du dir Büroarbeitsplätzte anschaust sind oft neben dem Browser gar keine Programme mehr installiert.....

Gruss Carlo

Re: XbpPushButton zu langsam

Verfasst: Sa, 19. Mai 2018 6:39
von Jan
Ich erinnere mich mit Grausen an die Zeiten, wo Avira immer mal wieder meine Xbase++-Programme als Virenbefallen "erkannte". Immer wieder sind die bei der Gratwanderung zu scharf eingestellt gewesen.

Seit ein paar Jahren arbeite ich mit Thawte-Zertifikaten. Ob das nur daran liegt oder auch daran, das Avira lernfähig ist weiß ich nicht - auf jeden Fall habe ich dieses Problem seither nie wieder gehabt.

Jan

Re: XbpPushButton zu langsam

Verfasst: Sa, 19. Mai 2018 8:24
von ramses
Hallo Jan

ich nehme an du meinst Code-Sig und nicht SSL.
Und wie läuft das ab? Kannst diu deine exe selbst signieren?

Gruss Carlo

Re: XbpPushButton zu langsam

Verfasst: Sa, 19. Mai 2018 8:44
von Manfred
Hallo Carlo,
ich glaube hier hat das alles mal angefangen.
https://www.xbaseforum.de/viewtopic.php ... lit=thawte