German Ladegeschwindigkeit auf PPC

Museltook

Member
Von was ist eigentlich die Ladegeschwindigkeit des Apps auf dem PPC abhängig? Ich versuche gerade eine Anwendung mit SQLite DB zu basteln. Zu Beginn erschien das erste Form des App noch sehr zügig auf dem PDA Screen. Nun habe ich mittlerweile mehrere Forms mit dem Designer gebastelt und diverse Controls darauf verteilt. Scheinbar beeinflusst das doch die Lagegeschwindigkeit enorm. Das auslesen der SQLite DB scheint nicht wirklich die Ursache zu sein.

Würde es etwas bringen, die Controls und Forms, die ich später im App brauche erst mit dem Click auf den jeweiligen Menübefehl zu erzeugen?

Die DB selber hat derzeit ca. 1000 Einträge und wird sich an Volumen vermutlich verdoppeln.
 

specci48

Well-Known Member
Licensed User
Longtime User
Hallo bilbob,

je schneller der Ppc, desto scheller läuft natürlich das Programm... :)

Aber im Ernst:
Das erste Starten eines .Net Programms dauert i.d.R. etwas länger, weil der Ppc erst die .Net Laufzeitkomponenten nachladen muss. Anschließend starten die .Net Programme recht zügig.

Die Anzahl der Forms wirkt sich weniger auf die Geschwindigkeit sondern eher auf die Größe des Programmes aus. Ein dynamisches Erzeugen der Controls bringt erst ab einer bestimmten Größenordnung etwas, und hat auch hier "nur" Einfluss auf die Ladezeit, da sämtliche statischen Controls bereits beim Programmstart erzeugt werden. Deine angedeuteten 2000 Datensätze aus einer SQLite-DB stellen wirklich kein Problem dar.

Da Du hier als unregistrierter User auftrittst nehme ich allerdings einmal an, dass Du derzeit mit der Trail-Version experimentierst. Hierbei ist die Geschwindigkeit der Ppc-IDE nicht mit (sinnvoll) einem compilierten Programm zu vergleichen. Auf der Ppc-IDE wird der Code nur interpretiert und bei Programmausführung läuft die IDE überwachend im Hintergrund. Dies alles kostet relativ viel Zeit und steigert sich schnell mit der Programmgröße. Compilierte Programm laufen deutlich schneller.


Gruß
specci48
 

Museltook

Member
Danke für die ausführliche Antwort. Ja derzeit teste ich noch die Möglichkeiten die ich mit dem Programm habe. Sollte das Script/Programm was ich basteln möchte aber so funktionieren wie ich es möchte, dann steht einem Kauf der Vollversion nichts im Wege. Derzeit kämpfe ich noch mit der Struktur einiger Codebeispiele aber das krieg ich denk ich mal auch noch hin. Was mir aber etwas Kopfzerbrechen macht ist zum Beispiel folgendes Szenario:

Ich habe in einer Tabelle eine Zelle markiert (oder irgednwas anderes in einer Variable) und möchte dies nun an einen anderen Sub als Variable übergeben. Irgendwie steht ich da auf dem Schlauch, bin leider noch PHP gewohnt in den Grundzügen... egal... danke erst mal...
 

specci48

Well-Known Member
Licensed User
Longtime User
Ich habe in einer Tabelle eine Zelle markiert (oder irgednwas anderes in einer Variable) und möchte dies nun an einen anderen Sub als Variable übergeben. Irgendwie steht ich da auf dem Schlauch,...

Nichts leichter als das:
Eine Auswahl merkst man sich z.B. als globale Variable in der "Sub Globals":
B4X:
Sub Globals
   meineAuswahl = ""
End Sub
dann kannst Du von überall aus (also aus jeder Sub) auf diese Variable zugreifen und sie auch verändern.

Auf ein vorhandenes Control-Element (also z.B. auch eine Tablle) kann man ebenfalls aus jeder Sub zugreifen.

Möchtest Du eine Konstante oder eine lokale Variable im Programmfluss weiterrreichen, so kann man diese einfach als Parameter übergeben. Auszug aus der Hilfe:

B4X:
Sub Button1_Click
      Msgbox("The mean of 20 and 30 is " & crlf & Mean(20,30))
End Sub
Sub Mean (a,b)
      Return (a+b)/2
End Sub


Gruß
specci48
 

corwin42

Expert
Licensed User
Longtime User
Würde es etwas bringen, die Controls und Forms, die ich später im App brauche erst mit dem Click auf den jeweiligen Menübefehl zu erzeugen?
Ich habe auch die Erfahrung gemacht, dass bei vielen Forms mit vielen Controls die Applikation sehr lange zum starten braucht. Ich gehe mittlerweile dazu über, die Forms wirklich erst dann zu erstellen, wenn sie wirklich geöffnet werden (also in einer InitForm Routine). Ich benutze den Designer dann also gar nicht mehr.

Problem dabei ist nur, dass in der IDE die Code-Completion nicht mehr so schön funktioniert, da die Controls in der IDE nicht mehr als Objekte erkannt werden. Weiterhin muss man das Layout dann natürlich komplett manuell machen und hat nicht mehr so einen schönen Grafischen Editor.

Bei mit Basic4PPC erstellten Applikationen werden erst alle mit dem Designer erstellten Objekte in allen Modulen erzeugt. Dann werden aus allen Modulen die Globals Subs aufgerufen. D.h. wenn man in der Globals Sub schon Objekte initialisiert, verzögert das auch den Start der Applikation.

Gruß,
Markus
 

Heinz

Active Member
Licensed User
Longtime User
Arbeitest du mit dem Table - Control ?
Wann setzt du die .visible - Eigenschaft ?

Wenn ja, dann versuche mal zuerst die Datenbank
zu laden und erst dann das Table sichtbar zu machen.
(Table1.visible = True)

Hintergrund : sowohl Windows Mobile als auch normales
Windows muß bei jeder Änderung (z.B. eine neue Zeile
einfügen) die Tabelle neu zeichnen. Beim Einlesen von
1000 Datensätzen muß auch 1000 mal neu gezeichnet
werden. Beim starken PC merkt man das so gut wie
nicht, aber bei einem kleinen PDA macht das schon
einen gewichtigen Teil an Zeit aus, da geringe Prozessor
und Grafikleistung.

Ich glaube, mich zu erinnern, mal ein ähnliches Problem
gehabt zu haben. Hatte im letzten Jahr kaum Zeit, viel
in B4PPC zu programmieren.

Mit obigem Tipp könnte man zumindest den Start stark
beschleunigen.
 
Top