PureBasic

Forums PureBasic
Nous sommes le Dim 16/Juin/2019 15:47

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 13 messages ] 
Auteur Message
 Sujet du message: Accélérer le remplissage d'une listicongadget
MessagePosté: Jeu 23/Mai/2019 18:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 18/Jan/2007 14:08
Messages: 234
Bonjour à tous et merci de me lire

J'aimerais remplir une lisicongadget avec beaucoup d'élément +de 5000 lignes(pièces d'un magasin d'atelier)

Mais voilà cela peut vraiment être long....

Si vous savez comment accélérer ce processus, je vous remercie de m'aider.


Code:
Procedure GadgetEvent()
  Select EventGadget()

    Case 2
 
      For i=1 To 1000
        AddGadgetItem(1, -1, "ID"+i+Chr(10)+"I like to do this faster!")
        AddGadgetItem(1, -1, "ID"+i+Chr(10)+"If you know how to do that...think you to help me :-)")
        AddGadgetItem(1, -1, "ID"+i+Chr(10)+"J'aimerais accélérer l'affichage d'une longue liste!!!")
        AddGadgetItem(1, -1, "ID"+i+Chr(10)+"Si vous savez comment faire...Merci de m'aider")
      Next
     
  EndSelect
EndProcedure


If OpenWindow(0, 100, 100, 600, 600, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(2,5,2,100,20,"Go")
  ListIconGadget(1, 5, 25, 590, 565, "ID", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
  AddGadgetColumn(1, 1, "NOM", 250)

  BindEvent(#PB_Event_Gadget, @GadgetEvent())

EndIf


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Jeu 23/Mai/2019 22:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8665
Salut Stephou.
J'ai testé avec 5000 entrées. Sur un i5 6600K je mets 1.5 sec pour tout afficher... Je trouve pas que ce soit spécialement long !? 8O
Du as désactivé le débug pour tes tests ?

En cachant la fenêtre pendant le traitement, je gagne cependant la moitié du temps !

Code:
Procedure GadgetEvent()
   Select EventGadget()

     Case 2
       
       HideWindow(0,1)  ; essaye avec et sans

       start = ElapsedMilliseconds()
       For i=1 To 5000
         AddGadgetItem(1, -1, "ID"+i+Chr(10)+"I like to do this faster!")
       Next
       endtime = ElapsedMilliseconds()-start
       
       MessageRequester("",Str(endtime) + " ms",0)
     
HideWindow(0,0) ; essaye avec et sans
   EndSelect
EndProcedure

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Ven 24/Mai/2019 8:57 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
@Ar-s oui c'est rapide avec un exe PureBasic. :wink:

Avec Spiderbasic ce même code est généré en JavaScript et il faut environ 4 secondes (sans debug) pour afficher le résultat.

Petite remarque MessageRequester() n'existe pas avec SpiderBasic

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Ven 24/Mai/2019 9:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8665
Oups je n'avais pas vu que l'on était dans la section spider ! :roll:

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Ven 24/Mai/2019 10:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
Une solution avec une gestion d'un timer.
Code:
Procedure GetDatabase() 
  Static i
 
  AddGadgetItem(1, -1, "ID"+i+Chr(10)+"I like to do this faster!")
  AddGadgetItem(1, -1, "ID"+i+Chr(10)+"If you know how to do that...think you to help me :-)")
  AddGadgetItem(1, -1, "ID"+i+Chr(10)+"J'aimerais accélérer l'affichage d'une longue liste!!!")
  AddGadgetItem(1, -1, "ID"+i+Chr(10)+"Si vous savez comment faire...Merci de m'aider")
 
  SetGadgetText(3, Str(i * 4) + " / 4000")
 
  i+1
 
  If i > 1000
    UnbindEvent(#PB_Event_Timer, @GetDatabase())
    RemoveWindowTimer(0, 1)
    DisableGadget(2, #False)
  EndIf
EndProcedure

Procedure GadgetEvent()
  Select EventGadget()
    Case 2
      DisableGadget(2, #True)
      AddWindowTimer(0, 1, 0)
      BindEvent(#PB_Event_Timer, @GetDatabase())
  EndSelect
EndProcedure

If OpenWindow(0, 100, 100, 600, 600, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CloseDebugOutput()
 
  ButtonGadget(2,5,2,100,20,"Go")
  TextGadget(3, 110, 2, 100, 20, "")
  ListIconGadget(1, 5, 25, 590, 565, "ID", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
  AddGadgetColumn(1, 1, "NOM", 250)
 
  BindEvent(#PB_Event_Gadget, @GadgetEvent())
EndIf

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Ven 24/Mai/2019 19:49 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3413
1) Si, au lieu de mettre -1, vous mettiez un rang précis (1,2,3, etc...), ça économiserait du temps ou pas ?

2) Est-ce que créer 5000 items vides dans un temps initial, puis remplacer les items ensuite, ça ne diminue pas le temps de remplacement ?

_________________
Juste la 4G pour Smartphone


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Sam 25/Mai/2019 5:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 18/Jan/2007 14:08
Messages: 234
Merci les gars pour vos réponses

@Ar-S: je te remercie pour ton implication dans la vie du forum, c'est super serviable de ta part.

@Ollivier: J'ai cru à tes idées, mais ça n'a rien changé....snif

@falsam: Génial cette gestion de timer, je débute en SB et n'ayant pas thread je ne savais pas comment faire, et je n'avais pas eu l'idée de prendre un timer (que j'utilise pourtant régulièrement en PB)

Bon par contre il n'y a rien qui accélère....

Mais en bidouillant vos exemples, je suis tombé sur le code ci dessous.
C'est quasi instantané, par contre l'affichage clignote un peu lorsque l'on bouge la liste.

Surprenant non!!! ???

Code:
If OpenWindow(0, 100, 100, 600, 600, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CloseDebugOutput()
 
  ButtonGadget(2,5,2,100,20,"Go")
  TextGadget(3, 110, 2, 100, 20, "")
  ListIconGadget(1, 5, 25, 590, 565, "ID", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
  AddGadgetColumn(1, 1, "NOM", 250)
 
    For i=0 To 4000
        AddGadgetItem(1, -1, "ID"+i+Chr(10)+"I like to do this faster!")
     Next

EndIf


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Sam 25/Mai/2019 5:29 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3413
Tu cherches la petite bête ! Mais c'est bon à savoir le jour où je serai motivé à m'offrir SB.

T'es en train de sous-entendre qu'il perd du temps à passer d'un gadget à l'autre ?

_________________
Juste la 4G pour Smartphone


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Sam 25/Mai/2019 10:22 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 18/Jan/2007 14:08
Messages: 234
Je ne sous entends rien je constate , stupéfait, je ne comprends pas pourquoi...???
Mais ça peut servir


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Sam 25/Mai/2019 21:55 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3413
Et c'est stupéfiant ! Ça (pas toi, le système dans son résultat sans savoir quelle couche logicielle est responsable de ça) sous-entend qu'il est recommandé de traiter certaines tâche, un gadget après l'autre.

Merci pour ce partage d'idée (même de simple constat !).

_________________
Juste la 4G pour Smartphone


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Mar 28/Mai/2019 9:10 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 898
10 000 entrées en 0.1 s mais sous Windows seulement.


Code:
EnableExplicit

Define EventID
Define a
Define StartTime
Define ElapsedTime

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ListIconGadget(1,10,10,480,380,"",400,0)
  SendMessage_(GadgetID(1),#WM_SETREDRAW,0,0) ; le gadget n'est pas redessiné après un changement

  StartTime = ElapsedMilliseconds()

  For a=1 To 10000
    AddGadgetItem(1,-1,"Item "+Str(a),0,0)
  Next

  SendMessage_(GadgetID(1),#WM_SETREDRAW,1,0) ; on redessine

  ElapsedTime = ElapsedMilliseconds()-StartTime

  MessageRequester("",Str(ElapsedTime)+" ms. après 10.000 entrées.",0)

  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf


Mesa.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Mar 28/Mai/2019 12:49 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8665
Bien joué, j'avais tenté avec un disablegadget ce qui ne changeait rien ;)

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Accélérer le remplissage d'une listicongadget
MessagePosté: Mar 28/Mai/2019 17:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
@Mesa : La demande était pour SpiderBasic :wink:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 13 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye