Strings aus sqlite db in listicon gadget übertragen
Verfasst: 12.02.2017 13:56
hallo und guten tag.
Ich nutze eine sqlite Tabelle mit ca. 600 Spalten und im Moment ca. 500 Zeilen (ja, ich weiß. Sie ist bereits normalisiert und eine Alternative ist leider nicht möglich
..)
Stelle ich die Tabelle in einem ListIcon dar, benötigt PB ca. 260 sekunden. Gambas schafft das in 6 Sekunden.
Was sich für mich etwas kurios darstellt ist folgendes:
Habe ich eine Tabelle mit 6 Spalten ist die Darstellungszeit ca. 0.03 s. Nachvollziehbar.
Wenn ich die Tabelle mit 600 Spalten verwende und in einer Schleife nur die ersten 6 Spalten einlese, benötigt PB dennoch wesentlich länger. Mehr als 3 Sekunden.
Wie kann das sein? Ich kann mir das nur mit einem Speicherproblem erklären. Liegen die Spalten einer ausgelesenen Zeile im Result nicht sequentiell vor, so dass PB jede Spalte erst suchen im Zeilen Result?
Wenn jemand eine Lösung für die Performance wüsste, dann wäre ich sehr dankbar.
__________________________________________________
Color-Tags>Code-Tags
12.02.2017
RSBasic
Ich nutze eine sqlite Tabelle mit ca. 600 Spalten und im Moment ca. 500 Zeilen (ja, ich weiß. Sie ist bereits normalisiert und eine Alternative ist leider nicht möglich
Stelle ich die Tabelle in einem ListIcon dar, benötigt PB ca. 260 sekunden. Gambas schafft das in 6 Sekunden.
Was sich für mich etwas kurios darstellt ist folgendes:
Habe ich eine Tabelle mit 6 Spalten ist die Darstellungszeit ca. 0.03 s. Nachvollziehbar.
Wenn ich die Tabelle mit 600 Spalten verwende und in einer Schleife nur die ersten 6 Spalten einlese, benötigt PB dennoch wesentlich länger. Mehr als 3 Sekunden.
Wie kann das sein? Ich kann mir das nur mit einem Speicherproblem erklären. Liegen die Spalten einer ausgelesenen Zeile im Result nicht sequentiell vor, so dass PB jede Spalte erst suchen im Zeilen Result?
Wenn jemand eine Lösung für die Performance wüsste, dann wäre ich sehr dankbar.
Code: Alles auswählen
Enumeration
#dbase
EndEnumeration
Procedure showData(dbName.s)
countCol.i=0
i.i=0
j.i=-1
; PureLVSORT_Disabled(#True|#False)
If OpenDatabase(#dbase,dbName,"","")
If DatabaseQuery(#dbase, "SELECT * FROM repmittel")
countCol=DatabaseColumns(#dbase)
For i=0 To DatabaseColumns(#dbase)-1
If i=0
SetGadgetItemText(ListIcon_0,-1,DatabaseColumnName(#dbase,i),i)
Else
AddGadgetColumn(ListIcon_0,i,DatabaseColumnName(#dbase,i),GadgetWidth(ListIcon_0)/7)
EndIf
Next i
EndIf
time1=ElapsedMilliseconds()
While NextDatabaseRow(#dbase)
j+1
AddGadgetItem(ListIcon_0,j,GetDatabaseString(#dbase,0))
Debug DatabaseColumnName(#dbase,0)
For i=1 To ; bzw. countCol (s.oben)
SetGadgetItemText(ListIcon_0,j,(GetDatabaseString(#dbase,i)),i)
; Debug GetDatabaseString(#dbase,i)
Next i
Wend
FinishDatabaseQuery(#dbase)
Else
Debug DatabaseError()
EndIf
time2=ElapsedMilliseconds()
time3.f=(time2-time1)/1000
SetGadgetText(Text_0,StrF(time3))
ProcedureReturn
EndProcedure Color-Tags>Code-Tags
12.02.2017
RSBasic