Seite 2 von 4

Verfasst: 09.03.2009 16:15
von ts-soft
Mal nen Tip am Rande:
wenn API, dann möglichst komplett API, also erstellen des Controls und
auswerten im Callback,
wenn PB, dann möglichst nur PB, es sei denn die Funktionalität fehlt.
Das Mixen kann zu Fehlfunktionalität, wenn nicht jetzt, evtl. mit der nächsten
Version von PB, führen.

Geschwindigkeitsunterschiede sind mehr als unwahrscheinlich, da PB intern
meist auch nichts anderes macht, als die API aufrufen.
Selbst das Aufrufen der API per ASM bringt da meist keine Unterschiede, die
irgendwie Meßbar wären :mrgreen:

Verfasst: 09.03.2009 17:05
von hjbremer
sehe ich völlig anders !!!

und FehlFunktionalität siehe PB 3.9x zu 4.0 und 4.2 zu 4.3 und was hat das mit Api zu tun ?

Verfasst: 09.03.2009 17:22
von edel
ts-soft hat geschrieben:
Geschwindigkeitsunterschiede sind mehr als unwahrscheinlich, da PB intern
meist auch nichts anderes macht, als die API aufrufen.
Selbst das Aufrufen der API per ASM bringt da meist keine Unterschiede, die
irgendwie Meßbar wären :mrgreen:
Das braucht man nicht mal messen. PB hat in diesem Fall gar keine
Chance gegen die API Variante. API ist gerade bei grossen Listen
vorzuziehen. Das Argument mit dem Mixen ist auch an den Haaren
herbeigezogen, es sei denn Fred benutzt in der naechsten Version
ein anderes GUI Framework, was recht unwahrscheinlich ist.

Verfasst: 09.03.2009 17:42
von ts-soft
> Das Argument mit dem Mixen ist auch an den Haaren herbeigezogen
Dann lies mal mehr im engl. Bugforum.
Z.B. das Windows-Problem mit den Gridlines wird PB-Intern gelöst, so das
es hier Einschränkungen bezüglich der API-Nutzung gibt.
Kann das jetzt aber im Bug-Forum nicht mehr finden, da Fehler durch
mixen von API und nativen PB-Befehlen keine Bugs darstellen und der
Beitrag dort inzwischen gelöscht oder verschoben wurde.

> Das braucht man nicht mal messen. PB hat in diesem Fall gar keine Chance gegen die API Variante
Warum sollte PB da intern was anderes nutzen?

Verfasst: 09.03.2009 19:22
von edel
PB benutzt hier ein ganz anderen Befehl. Aber extra fuer dich :

Code: Alles auswählen


DisableDebugger

Procedure main()
  Protected win
  Protected lv
  Protected event
  Protected i
  Protected item
  Protected time
  Protected count
  
  win = OpenWindow(0,#PB_Ignore,#PB_Ignore,304,304,"Test")
  
  lv = ListIconGadget(0,2,2,200,300,"Test",200,#PB_ListIcon_MultiSelect|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)  
  ButtonGadget(1,205,2,75,23,"API Test")
  TextGadget(2,205,32,75,23,"Time : ")
  
  ButtonGadget(3,205,57,75,23,"PB Test")
  TextGadget(4,205,87,75,23,"Time : ")  
  
  For i = 0 To 10000
    AddGadgetItem(0,-1,"null")
  Next   
  
  Repeat 
    event = WaitWindowEvent()
    
    If event = #PB_Event_Gadget
      
      If EventGadget() = 1
        
        time = ElapsedMilliseconds()
        Repeat 
          item = SendMessage_(lv,#LVM_GETNEXTITEM,item,#LVNI_SELECTED)
        Until item = -1
        
        SetGadgetText(2,"Time : " + Str(ElapsedMilliseconds() - time))
        
        item = 0
        
      EndIf 
      
      If EventGadget() = 3
        
        time = ElapsedMilliseconds()
        count = CountGadgetItems(0) - 1 
        
        For i = 0 To count
          item = GetGadgetItemState(0,i) 
        Next 
        
        SetGadgetText(4,"Time : " + Str(ElapsedMilliseconds() - time))
        
        item = 0
        
      EndIf 
      
    EndIf 
    
  Until event = #PB_Event_CloseWindow
  
EndProcedure:main()

Verfasst: 09.03.2009 19:28
von php-freak
Naja jetzt funktioniert es ja! Danke an euch alle!

Verfasst: 09.03.2009 20:00
von ts-soft
> Aber extra fuer dich :
Soll das ein Witz sein? 0 - 15 ms Unterschied :mrgreen:
Ich glaubs ja nicht

Und wenn ich für die API Routine auch For Next nehme ist der Unterschied weg :wink:

Verfasst: 09.03.2009 20:23
von php-freak
Um noch einmal kurz aufs Thema zu kommen:

Wie funzt das ganze für die 2. Spalte? Zum reinschreiben musste ich Chr(10) verwenden!

Verfasst: 09.03.2009 20:27
von ts-soft

Code: Alles auswählen

GetGadgetItemText(0, i, 1)
siehe dritter optionaler Parameter (ist Deine Hilfe kaputt?)

Verfasst: 09.03.2009 20:44
von edel
ts-soft hat geschrieben:> Aber extra fuer dich :
Soll das ein Witz sein? 0 - 15 ms Unterschied :mrgreen:
Ich glaubs ja nicht

Und wenn ich für die API Routine auch For Next nehme ist der Unterschied weg :wink:
Wenn du 3 Items markierst, wird die Schleife 4 mal durchlaufen, dann
abgebrochen. Mit PB durchlaeufst du immer alle Items.

aber von mir aus kannste dann auch noch nen Delay(1000) reinpacken,
damit es mit API dann noch langsamer ist ... /:->