Listicon rapide

Codes specifiques à Windows
Mesa
Messages : 1092
Inscription : mer. 14/sept./2011 16:59

Listicon rapide

Message par Mesa »

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 : Tout sélectionner

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.
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Listicon rapide

Message par Ar-S »

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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Mesa
Messages : 1092
Inscription : mer. 14/sept./2011 16:59

Re: Listicon rapide

Message par Mesa »

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.
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Listicon rapide

Message par venom »

sympa en effet.

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

config dans la signature.







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Listicon rapide

Message par graph100 »

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 !!
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Listicon rapide

Message par Kwai chang caine »

Top cool la combine 8O
Ca va m'etre super utile à partir de maintenant
Merci de l'info 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Listicon rapide

Message par Ar-S »

Mesa a écrit : @ARS, t'es sur win8 64b ?
Mesa.
Oui => signature
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Listicon rapide

Message par G-Rom »

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.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Listicon rapide

Message par graph100 »

et il est de combien ? de l'ordre du delay sans update de window ?
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Listicon rapide

Message par G-Rom »

50ms ici.
Mesa
Messages : 1092
Inscription : mer. 14/sept./2011 16:59

Re: Listicon rapide

Message par Mesa »

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.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Listicon rapide

Message par graph100 »

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
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
morosh
Messages : 18
Inscription : jeu. 22/sept./2011 6:01
Localisation : Liban

Re: Listicon rapide

Message par morosh »

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

Merci pour l'info et le partage
Répondre