XbpPushButton zu langsam

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

DelUser01

XbpPushButton zu langsam

Beitrag von DelUser01 » Do, 17. Mai 2018 0:35

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.

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11352
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: XbpPushButton zu langsam

Beitrag von AUGE_OHR » Do, 17. Mai 2018 2:29

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.
gruss by OHR
Jimmy

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Do, 17. Mai 2018 7:19

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.

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Do, 17. Mai 2018 7:32

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%?).

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: XbpPushButton zu langsam

Beitrag von ramses » Do, 17. Mai 2018 13:01

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

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Do, 17. Mai 2018 14:30

Hallo Carlo
ramses hat geschrieben:
Do, 17. Mai 2018 13:01
zum 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.

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: XbpPushButton zu langsam

Beitrag von ramses » Do, 17. Mai 2018 15:13

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

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Do, 17. Mai 2018 15:28

@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.

Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 115
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Re: XbpPushButton zu langsam

Beitrag von BJelinek » Do, 17. Mai 2018 17:12

Hallo Roland,

welche Win 10 Version ?

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

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Fr, 18. Mai 2018 0:32

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.

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: XbpPushButton zu langsam

Beitrag von ramses » Fr, 18. Mai 2018 11:33

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

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7253
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: XbpPushButton zu langsam

Beitrag von Tom » Fr, 18. Mai 2018 11:45

Es gibt einige Virenscanner, die "Prozessüberwachung" vornehmen, z.B. Kaspersky. Das verzögert nach meiner Erfahrung den Dialogaufbau, zuweilen sogar erheblich.
Herzlich,
Tom

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Fr, 18. Mai 2018 11:49

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.

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Fr, 18. Mai 2018 11:51

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).

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Fr, 18. Mai 2018 15:02

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.

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: XbpPushButton zu langsam

Beitrag von ramses » Fr, 18. Mai 2018 16:49

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

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7253
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: XbpPushButton zu langsam

Beitrag von Tom » Fr, 18. Mai 2018 16:59

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.
Herzlich,
Tom

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: XbpPushButton zu langsam

Beitrag von ramses » Fr, 18. Mai 2018 17:21

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

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11352
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: XbpPushButton zu langsam

Beitrag von AUGE_OHR » Fr, 18. Mai 2018 23:01

Roland Gentner hat geschrieben:
Fr, 18. Mai 2018 15:02
das 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
gruss by OHR
Jimmy

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Fr, 18. Mai 2018 23:17

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.

DelUser01

Re: XbpPushButton zu langsam

Beitrag von DelUser01 » Fr, 18. Mai 2018 23:35

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?

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: XbpPushButton zu langsam

Beitrag von ramses » Sa, 19. Mai 2018 6:11

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

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13024
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: XbpPushButton zu langsam

Beitrag von Jan » Sa, 19. Mai 2018 6:39

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: XbpPushButton zu langsam

Beitrag von ramses » Sa, 19. Mai 2018 8:24

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

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17955
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: XbpPushButton zu langsam

Beitrag von Manfred » Sa, 19. Mai 2018 8:44

Hallo Carlo,
ich glaube hier hat das alles mal angefangen.
https://www.xbaseforum.de/viewtopic.php ... lit=thawte
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Antworten