Lorsqu'une routine d'extraction de chaine (String) est=20
appel=E9e de tr=E8s nombreuses fois dans une application,=20
quelle est la solution la plus performante entre l'appel=20
d'une fonction qui retoune un String comme ci-dessous :
'---------------------------------------------------------
Private sub Form_Load()
Dim Text1 as string
...
Text1 =3D Get_String
...
End Sub
Private function Get_String() as String
....
Get_String =3D .....
End function
'---------------------------------------------------------
Et l'appel d'une proc=E9dure avec passage du String en=20
param=E8tre :=20
Private Text1 as String ' Variable globale
=20
Private sub Form_Load()
Get_String Text1
End Sub
=20
Private Sub Get_String(Dest as String)
...
Text1 =3D ......
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Hello!
Je te conseille un petit tour ici: http://www.mvps.org/vb/tips/benchmarks.htm
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Jean Saint Jalmes" a écrit dans le message de news:21ec01c427a2$24fdbb10$
Bonjour,
Lorsqu'une routine d'extraction de chaine (String) est appelée de très nombreuses fois dans une application, quelle est la solution la plus performante entre l'appel d'une fonction qui retoune un String comme ci-dessous :
'--------------------------------------------------------- Private sub Form_Load() Dim Text1 as string ... Text1 = Get_String ... End Sub
Private function Get_String() as String .... Get_String = ..... End function
'--------------------------------------------------------- Et l'appel d'une procédure avec passage du String en paramètre :
Private Text1 as String ' Variable globale
Private sub Form_Load() Get_String Text1 End Sub
Private Sub Get_String(Dest as String) ... Text1 = ...... End Sub
Je te conseille un petit tour ici:
http://www.mvps.org/vb/tips/benchmarks.htm
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Jean Saint Jalmes" <anonymous@discussions.microsoft.com> a écrit dans
le message de news:21ec01c427a2$24fdbb10$a101280a@phx.gbl
Bonjour,
Lorsqu'une routine d'extraction de chaine (String) est
appelée de très nombreuses fois dans une application,
quelle est la solution la plus performante entre l'appel
d'une fonction qui retoune un String comme ci-dessous :
'---------------------------------------------------------
Private sub Form_Load()
Dim Text1 as string
...
Text1 = Get_String
...
End Sub
Private function Get_String() as String
....
Get_String = .....
End function
'---------------------------------------------------------
Et l'appel d'une procédure avec passage du String en
paramètre :
Private Text1 as String ' Variable globale
Private sub Form_Load()
Get_String Text1
End Sub
Private Sub Get_String(Dest as String)
...
Text1 = ......
End Sub
Je te conseille un petit tour ici: http://www.mvps.org/vb/tips/benchmarks.htm
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Jean Saint Jalmes" a écrit dans le message de news:21ec01c427a2$24fdbb10$
Bonjour,
Lorsqu'une routine d'extraction de chaine (String) est appelée de très nombreuses fois dans une application, quelle est la solution la plus performante entre l'appel d'une fonction qui retoune un String comme ci-dessous :
'--------------------------------------------------------- Private sub Form_Load() Dim Text1 as string ... Text1 = Get_String ... End Sub
Private function Get_String() as String .... Get_String = ..... End function
'--------------------------------------------------------- Et l'appel d'une procédure avec passage du String en paramètre :
Private Text1 as String ' Variable globale
Private sub Form_Load() Get_String Text1 End Sub
Private Sub Get_String(Dest as String) ... Text1 = ...... End Sub
Merci beaucoup François pour ce moyen de benchmarks. Ca va beaucoup me servir !
"François Picalausa" a écrit dans le message de news: On$
Hello!
Je te conseille un petit tour ici: http://www.mvps.org/vb/tips/benchmarks.htm
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Jean Saint Jalmes" a écrit dans le message de news:21ec01c427a2$24fdbb10$ > Bonjour, > > Lorsqu'une routine d'extraction de chaine (String) est > appelée de très nombreuses fois dans une application, > quelle est la solution la plus performante entre l'appel > d'une fonction qui retoune un String comme ci-dessous : > > '--------------------------------------------------------- > Private sub Form_Load() > Dim Text1 as string > ... > Text1 = Get_String > ... > End Sub > > Private function Get_String() as String > .... > Get_String = ..... > End function > > '--------------------------------------------------------- > Et l'appel d'une procédure avec passage du String en > paramètre : > > Private Text1 as String ' Variable globale > > Private sub Form_Load() > Get_String Text1 > End Sub > > Private Sub Get_String(Dest as String) > ... > Text1 = ...... > End Sub > > '-------------------------------------------------------- > > Merci d'avance. > > Jean
Merci beaucoup François pour ce moyen de benchmarks. Ca va beaucoup me
servir !
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de news:
On$h3M6JEHA.3980@TK2MSFTNGP10.phx.gbl...
Hello!
Je te conseille un petit tour ici:
http://www.mvps.org/vb/tips/benchmarks.htm
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Jean Saint Jalmes" <anonymous@discussions.microsoft.com> a écrit dans
le message de news:21ec01c427a2$24fdbb10$a101280a@phx.gbl
> Bonjour,
>
> Lorsqu'une routine d'extraction de chaine (String) est
> appelée de très nombreuses fois dans une application,
> quelle est la solution la plus performante entre l'appel
> d'une fonction qui retoune un String comme ci-dessous :
>
> '---------------------------------------------------------
> Private sub Form_Load()
> Dim Text1 as string
> ...
> Text1 = Get_String
> ...
> End Sub
>
> Private function Get_String() as String
> ....
> Get_String = .....
> End function
>
> '---------------------------------------------------------
> Et l'appel d'une procédure avec passage du String en
> paramètre :
>
> Private Text1 as String ' Variable globale
>
> Private sub Form_Load()
> Get_String Text1
> End Sub
>
> Private Sub Get_String(Dest as String)
> ...
> Text1 = ......
> End Sub
>
> '--------------------------------------------------------
>
> Merci d'avance.
>
> Jean
Merci beaucoup François pour ce moyen de benchmarks. Ca va beaucoup me servir !
"François Picalausa" a écrit dans le message de news: On$
Hello!
Je te conseille un petit tour ici: http://www.mvps.org/vb/tips/benchmarks.htm
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Jean Saint Jalmes" a écrit dans le message de news:21ec01c427a2$24fdbb10$ > Bonjour, > > Lorsqu'une routine d'extraction de chaine (String) est > appelée de très nombreuses fois dans une application, > quelle est la solution la plus performante entre l'appel > d'une fonction qui retoune un String comme ci-dessous : > > '--------------------------------------------------------- > Private sub Form_Load() > Dim Text1 as string > ... > Text1 = Get_String > ... > End Sub > > Private function Get_String() as String > .... > Get_String = ..... > End function > > '--------------------------------------------------------- > Et l'appel d'une procédure avec passage du String en > paramètre : > > Private Text1 as String ' Variable globale > > Private sub Form_Load() > Get_String Text1 > End Sub > > Private Sub Get_String(Dest as String) > ... > Text1 = ...... > End Sub > > '-------------------------------------------------------- > > Merci d'avance. > > Jean
jmn
Ci après le code assembleur pour
function Function1$(byval a$) function1= a & a end function
et
sub Function2(byref a$) a=a & a end sub
Il est clair que la seconde version est nettement plus court, et donc plus rapide, étant donné que VB n'a pas à gérer l'éventuelle utilisation dans une expression (ce qui est une caractéristique de base des fonctions). CQFD.
************************************ Exemple 2 ************************** 14: 15: Sub Function2(ByRef a$) 00401720 56 push esi 00401721 8B 74 24 08 mov esi,dword ptr [esp+8] 00401725 8B 06 mov eax,dword ptr [esi] 00401727 50 push eax 00401728 50 push eax 00401729 FF 15 10 10 40 00 call dword ptr [__imp____vbaStrCat (00401010)] 0040172F 8B D0 mov edx,eax 00401731 8B CE mov ecx,esi 00401733 FF 15 60 10 40 00 call dword ptr [__imp____vbaStrMove (00401060)] 00401739 5E pop esi 16: a = a & a 17: End Sub 0040173A C2 04 00 ret 4
Ci après le code assembleur pour
function Function1$(byval a$)
function1= a & a
end function
et
sub Function2(byref a$)
a=a & a
end sub
Il est clair que la seconde version est nettement plus court, et donc plus
rapide, étant donné que VB n'a pas à gérer
l'éventuelle utilisation dans une expression (ce qui est une caractéristique
de base des fonctions).
CQFD.
function Function1$(byval a$) function1= a & a end function
et
sub Function2(byref a$) a=a & a end sub
Il est clair que la seconde version est nettement plus court, et donc plus rapide, étant donné que VB n'a pas à gérer l'éventuelle utilisation dans une expression (ce qui est une caractéristique de base des fonctions). CQFD.