Listicongadget sehr langsam bei der Darstellung

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
kmais
Beiträge: 45
Registriert: 09.02.2017 13:54

Listicongadget sehr langsam bei der Darstellung

Beitrag von kmais »

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.
Lord
Beiträge: 313
Registriert: 21.01.2008 19:11

Re: Listicongadget sehr langsam bei der Darstellung

Beitrag von Lord »

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.
Bild
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Listicongadget sehr langsam bei der Darstellung

Beitrag von Sicro »

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
@kmais: Es wäre schön gewesen, wenn du so ein Code zum Testen bereitgestellt hättest.

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.
Bild
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
kmais
Beiträge: 45
Registriert: 09.02.2017 13:54

Re: Listicongadget sehr langsam bei der Darstellung

Beitrag von kmais »

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
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Listicongadget sehr langsam bei der Darstellung

Beitrag von mk-soft »

Habe ich bestimmt schon 100 mal irgendwo rein kopiert.

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
kmais
Beiträge: 45
Registriert: 09.02.2017 13:54

Re: Listicongadget sehr langsam bei der Darstellung

Beitrag von kmais »

... und dennoch immer wieder schön ... :mrgreen:

Danke ... :allright:
Antworten