Hallo,
Ich fülle ein Listicongadget mit 600 Spalten und etwa 400 Zeilen über den üblichen Weg mit addgadgetitem.
Das ganze braucht mit Linux fast 3 Minuten!
Führe ich den absolut gleichen Code mit Windows aus braucht das ganze noch nicht einmal 1 Sekunde.
Ich vermute, dass dieses sehr unterschiedliche Verhalten an der Nutzung von Qt bzw. GTK durch Pb in Linux liegt. Evtl. greift Pb in Windows nur auf dessen Api zu.
Am Code liegt es nicht. Der Flaschenhals ist definitiv das Gadget.
Wenn jemand mehr dazu weiß wäre das toll.
Mit Gambas über ein Grid habe ich die gleiche Performance wie Pb über Windows. Gambas nutzt GTK.
Das Verhalten in Linux ist unabhängig von der Ubuntu Distri. Ich habe es mit verschiedenen Lubuntu, Kubuntu und Mint Versionen getestet.
Listicongadget sehr langsam bei der Darstellung
Re: Listicongadget sehr langsam bei der Darstellung
Hallo!
Ich nutze kein Linux, aber hast Du einmal probiert, während des Befüllens
das Gadget mittels HideGadget() zu deaktivieren, damit nicht bei jedem
neuen Eintrag das Gadget aktualisiert wird?
Vielleicht gibt es bei Linux ein Gegenstück zu
SendMessage_(GadgetID(#List), #WM_SETREDRAW, #False, 0) bzw.
SendMessage_(GadgetID(#List), #WM_SETREDRAW, #True, 0)
um das aktualisieren aus-/einzuschalten.
Das benutze ich bei Windows in solchen Fällen.
Ich nutze kein Linux, aber hast Du einmal probiert, während des Befüllens
das Gadget mittels HideGadget() zu deaktivieren, damit nicht bei jedem
neuen Eintrag das Gadget aktualisiert wird?
Vielleicht gibt es bei Linux ein Gegenstück zu
SendMessage_(GadgetID(#List), #WM_SETREDRAW, #False, 0) bzw.
SendMessage_(GadgetID(#List), #WM_SETREDRAW, #True, 0)
um das aktualisieren aus-/einzuschalten.
Das benutze ich bei Windows in solchen Fällen.
Re: Listicongadget sehr langsam bei der Darstellung
Code: Alles auswählen
columsCount = 600
itemsCount = 400
If OpenWindow(0, 100, 100, 1000, 500, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 5, 5, 1000, 500, "1", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
; Spalten hinzufügen
For i = 2 To columsCount ; Start bei "2", weil ja bereits eine Spalte existiert
AddGadgetColumn(0, i, Str(i), 100)
Next
; Liste füllen
HideGadget(0, #True)
DisableGadget(0, #True)
For i = 1 To itemsCount
item$ = ""
For x = 1 To columsCount
If item$ <> ""
item$ + Chr(10)
EndIf
item$ + "Entry_" + Str(i) + "/" + Str(x)
Next
AddGadgetItem(0, -1, item$)
Next
DisableGadget(0, #False)
HideGadget(0, #False)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
GTK-3: 2 Minuten (durch HideGadget() oder DisableGadget() wird es nicht besser)
GTK-2: 6 Sekunden
QT: 2 Sekunden
Eine Lösung für das langsame Befüllen unter GTK-3 habe ich leider nicht.
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Re: Listicongadget sehr langsam bei der Darstellung
He, danke schön.
Ich wusste es !!!!
Ich habs jetzt mit GTK2 als Subsystem getestet - 3,2 sek. Super!!! Das ist doch schon etwas ganz anderes.
Meinen Code habe ich nicht gepostet, weil die Daten aus einer Datenbank stammen. Das Füllen geschieht über addgadgetitem ohne irgendetwas besonderem vorher oder nachher . Da ist einfach nichts. Und Windows bekommt exakt den gleichen Code.
Es liegt definitiv an den verwendeten Libraries.
Jetzt habe ich doch noch eine Frage.
GTK2 ist bei mir schon im Subsystem drinnen, PB 5.7.
Wie bekomme ich jetzt Qt rein? Also, welche Libraries und woher? Qt ist installiert.
Da brauche ich wirklich Unterstützung.
Aber vieeeeelen Dank für deinen Test.
Klaus-Peter
Ich wusste es !!!!
Ich habs jetzt mit GTK2 als Subsystem getestet - 3,2 sek. Super!!! Das ist doch schon etwas ganz anderes.
Meinen Code habe ich nicht gepostet, weil die Daten aus einer Datenbank stammen. Das Füllen geschieht über addgadgetitem ohne irgendetwas besonderem vorher oder nachher . Da ist einfach nichts. Und Windows bekommt exakt den gleichen Code.
Es liegt definitiv an den verwendeten Libraries.
Jetzt habe ich doch noch eine Frage.
GTK2 ist bei mir schon im Subsystem drinnen, PB 5.7.
Wie bekomme ich jetzt Qt rein? Also, welche Libraries und woher? Qt ist installiert.
Da brauche ich wirklich Unterstützung.
Aber vieeeeelen Dank für deinen Test.
Klaus-Peter
Re: Listicongadget sehr langsam bei der Darstellung
Habe ich bestimmt schon 100 mal irgendwo rein kopiert.
Mein Installations-Guide für Linux
Mein Installations-Guide für Linux
Purebasic
---------
sudo apt-get install build-essential gcc g++
sudo apt-get install libxxf86vm-dev libxine2-dev unixodbc-dev libsdl1.2-dev libsdl2-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev libwebkitgtk-dev libwebkitgtk-3.0-dev libwebkit2gtk-4.0-dev
Subsystem qt
------------
sudo apt-get install qtbase5-dev qttools5-dev qtmultimedia5-dev qtdeclarative5-dev libqt5svg5-dev libqt5webkit5-dev libqt5multimedia5-plugins
Ubuntu Gnome 18.xx (For PB-IDE)
-------------------------------
sudo apt install libcanberra-gtk-module
Obsoleted
---------
;sudo apt-get install libgnome2-dev
;sudo apt-get install libgnomeprintui2.2-dev libxine-dev
Ubuntu missing default libs (Without developer packets)
-------------------------------------------------------
gtk2
- sudo apt-get install libgtk2.0
gtk3
- sudo apt-get install libwebkitgtk-3.0
qt
- sudo apt install qt5-default
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Listicongadget sehr langsam bei der Darstellung
... und dennoch immer wieder schön ...
Danke ...
Danke ...