PureBasic
https://www.purebasic.fr/french/

Listicon rapide
https://www.purebasic.fr/french/viewtopic.php?f=15&t=13704
Page 1 sur 1

Auteur:  Mesa [ Sam 15/Juin/2013 8:47 ]
Sujet du message:  Listicon rapide

Je me permets de faire remonter un post du forum allemeand qui provient de RSBasic et de son fameux site http://www.rsbasic.de/aktualisierung/wi ... 3%BCgen.pb

Cette astuce permet de prendre jusqu'à 3 x moins de temps pour remplir un listicongadget.

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


Pour voir la différence, commentez les 2 sendmessage.

En plus, je trouve que ça donne un effet plus "pro";

Mesa.

Auteur:  Ar-S [ Sam 15/Juin/2013 9:46 ]
Sujet du message:  Re: Listicon rapide

Je passe de 2562 à 188ms ! Bluffant ! 8O
Si j'ai bien pigé lors d'un AddGadgetItem, PB redessine à chaque fois, du coup l'API sert à bloquer le redraw jusqu'à que la boucle soit terminée puis redessine une fois pour tout à la fin.

Auteur:  Mesa [ Sam 15/Juin/2013 10:51 ]
Sujet du message:  Re: Listicon rapide

Oui, c'est ça.

Avec mon Xp 32b, cpu P4 mono core, je passe de 750ms à 265ms.

@ARS, t'es sur win8 64b ?

Ça serait bien de comparer les différents Windows, linux et macos, pour voir :wink:

Mesa.

Auteur:  venom [ Sam 15/Juin/2013 17:04 ]
Sujet du message:  Re: Listicon rapide

sympa en effet.

pour moi c'est : 2262ms contre 109 ms :)

config dans la signature.







@++

Auteur:  graph100 [ Sam 15/Juin/2013 20:22 ]
Sujet du message:  Re: Listicon rapide

pour moi ça passe de 1391ms à 109ms.

Mesa a écrit:
Ça serait bien de comparer les différents Windows, linux et macos, pour voir :wink:

Comme c'est une API windows, on ne peut pas comparer le même code sur les différents OS. Il faudrait trouver les commandes correspondantes sur chaque OS !!

Auteur:  Kwai chang caine [ Sam 15/Juin/2013 20:39 ]
Sujet du message:  Re: Listicon rapide

Top cool la combine 8O
Ca va m'etre super utile à partir de maintenant
Merci de l'info 8)

Auteur:  Ar-S [ Dim 16/Juin/2013 12:36 ]
Sujet du message:  Re: Listicon rapide

Mesa a écrit:
@ARS, t'es sur win8 64b ?
Mesa.

Oui => signature

Auteur:  G-Rom [ Dim 16/Juin/2013 16:50 ]
Sujet du message:  Re: Listicon rapide

sur linux ( avec gtk donc ) , cette manip ne sert à rien , même en gelant l'update pendant l'ajout , le délais est le même.

Auteur:  graph100 [ Dim 16/Juin/2013 18:15 ]
Sujet du message:  Re: Listicon rapide

et il est de combien ? de l'ordre du delay sans update de window ?

Auteur:  G-Rom [ Dim 16/Juin/2013 19:31 ]
Sujet du message:  Re: Listicon rapide

50ms ici.

Auteur:  Mesa [ Lun 17/Juin/2013 15:36 ]
Sujet du message:  Re: Listicon rapide

C'est fou.
Un Win8 64b qui est 2 à 3 fois plus lent qu'un Xp 32b pour l'affichage (sans accélération 3D), c'est bizarre.

Doit-on penser que l'affichage de Win8 a été complètement recodé, du coup l'api32 ne serait que "émulée" par exemple ?

Dans ce cas, PureBasic risque dans l'avenir d'être de plus en plus lent dans le cas d'une fenêtre contenant un grand nombre de gadget (sous Windows).
Un méga travail pour Fred en perspective ? :wink:

Mesa.

Auteur:  graph100 [ Lun 17/Juin/2013 16:47 ]
Sujet du message:  Re: Listicon rapide

C'est vrai que même avec mon pc je vais plus lentement que toi ;)
En revanche avec l'affichage desactivé, ca va 2 fois plus vite.

Et avec mon win7 sur un i3 : 2044ms à 109ms.... C'est bien la même structure d'affichage xD

Auteur:  morosh [ Lun 01/Juil/2013 19:44 ]
Sujet du message:  Re: Listicon rapide

moi, j'ai passé de 2840ms à 295ms
impressionnant!!!!

Merci pour l'info et le partage

Page 1 sur 1 Heures au format UTC + 1 heure
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/