IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Particularité de la function Sleep


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 150
    Par défaut Particularité de la function Sleep
    Bonjour,
    Il semble que les fonctions Sleep et SleepEx ne soient pas linéaires !!!
    Cela n'est pas très important dans le cas d'un appel unique en utilisant un délai long
    mais peu poser problème lors d'appels répétifs avec un délai court pour peu le temps cumulé doit correspondre à une valeur recherchée.

    Afin d'identifier d'éventuelles différences en fonctions de la machine utilisée
    (ce dont je doute, il est plus probable que ce soit une particularité liée au développement des fonctions)
    il serait intéressant d'exécuter le code ci-dessous sur différentes machines puis coller dans ce thread les résultats en indiquant l'os utilisée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Option Explicit
     
        Private Type LARGE_INTEGER
            LowPart As Long
            HighPart As Long
        End Type
        Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As LARGE_INTEGER) As Long
        Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As LARGE_INTEGER) As Long
        Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
     
     
        Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
        Private Declare Function SleepEx Lib "kernel32" (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long
     
     
     
        Private Sub Command1_Click()
            Dim x As Long, y As Long, ret As String, t As Currency
            Dim frequency As Currency, liStart As LARGE_INTEGER, liStop As LARGE_INTEGER, cStart As Currency, cStop As Currency
     
            Const k0 As Long = 0
            Const k1 As Long = 250
     
     
    Me.ProgressBar1.Min = k0
    Me.ProgressBar1.Max = k1
     
            frequency = GetFrequency()
            If frequency <> 0 Then
                For x = k0 To k1
                    QueryPerformanceCounter liStart
                        SleepEx x, False
                    QueryPerformanceCounter liStop
                    cStart = LargeInteger2Currency(liStart)
                    cStop = LargeInteger2Currency(liStop)
                    t = (cStop - cStart) / frequency
     
                    ret = ret & IIf(ret <> "", vbCrLf, "") & x & vbTab & t
    Me.ProgressBar1.Value = x
                Next
            End If
     
                Clipboard.Clear
                Clipboard.SetText vbtab & frequency & vbCrLf & ret
     
            MsgBox "Test End"
            Unload Me
        End Sub
     
                    Private Function GetFrequency() As Currency
                        Dim liFrequency As LARGE_INTEGER
     
                        If QueryPerformanceFrequency(liFrequency) <> 0 Then GetFrequency = LargeInteger2Currency(liFrequency)
                    End Function
                    Private Function LargeInteger2Currency(liInput As LARGE_INTEGER) As Currency
                        CopyMemory LargeInteger2Currency, liInput, LenB(liInput)
                        LargeInteger2Currency = LargeInteger2Currency * 10000
                    End Function
    Le code est à exécuter depuis une feuille contenant un bouton de commande et un progressbar.
    Il demande autant de temps d'exécution (environ 30") en runtime ou compilé.

    Le résultat se trouvant dans le presse papier, il suffit d'effectuer un ctrl V pour le coller et indiquer l'OS utilisé.
    Merci de votre concours.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Analyste développeur VB6, SQL, VB.NET, C#
    Inscrit en
    Avril 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste développeur VB6, SQL, VB.NET, C#
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2003
    Messages : 111
    Par défaut
    bonjour DarkVader,

    PC: Athlon X2 4000+ 2.1GHz - 960Mo RAM
    OS: Microsoft Windows XP Pro v2002 SP3
    Kernel32: 5.1.2600.5512

    cdlt,
    Fichiers attachés Fichiers attachés

  3. #3
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 150
    Par défaut
    Merci,
    Je développerais plus tard les résultats.

  4. #4
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    OS : Microsoft Windows XP SP3
    P8400 2,26GHz 1,95 Go de RAM
    Version kernel 32 : 5.1.2600.5512

    Résultat en PJ

  5. #5
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    XP pro version 2002 SP3
    pentium 4, 3 Ghz, 860 Mo Ram
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 150
    Par défaut
    Chacun peut-il préciser sa version de kernel32 ?

  7. #7
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Mis à jour dans mon message précédent

Discussions similaires

  1. implicit declaration of function
    Par guillaume_pfr dans le forum C
    Réponses: 7
    Dernier message: 12/06/2003, 10h59
  2. [POSTGRESQL] exec function
    Par peuh dans le forum Requêtes
    Réponses: 5
    Dernier message: 23/05/2003, 15h15
  3. A propos des 'File management Functions' de Windows
    Par znaidi dans le forum Windows
    Réponses: 3
    Dernier message: 01/04/2003, 16h01
  4. [postgreSQL] équivalent de la function 'instr'
    Par Dra_Gun dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/01/2003, 16h09
  5. [Dev c++ 4] implicite declaration of function "int kbhi
    Par Torpedox dans le forum Dev-C++
    Réponses: 5
    Dernier message: 01/01/2003, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo