Lenteur d'exécution d'un VBS sous Win98SE

Le
Dom
Bonsoir,

Le script VBS ci-après est destiné à comparer les adresses d'un carnet OE
avec un Ldap et à les remplacer automatiquement suite à un changement de nom
de domaine.

Il fonctionne sans souci sous XP (2000 adresses traitées en 6 mn), mais sous
Windows 98SE, il faut 15 secondes environ pour traiter 1 adresse, donc si
vous faites le calcul pour 2000 adresses, c'est très très très long !!!

La désactivation (temporaire !) de l'antivirus n'améliore pas le temps de
traitement, de même qu'en enlevant un max de programmes dans le Systray.

A votre avis, quelle peut être la cause de cette lenteur ? du VBS ? de Win98
?

J'ai testé sur 3 micros Win98SE avec 256, 512, 1024 mo de RAM, c'est
exactement pareil au niveau lenteur, donc je ne pense pas pas que cela
vienne de la quantité de Ram.

Si quelqu'un a une explication, voire un début de solution, qu'il soit béni
sur plusieurs générations !

Cordialement,

Dominique.


Option explicit
'
' Remplacement par LDAP des adresses CP en adresses DGFIP dans un CSV
' Portage cygwin de ldapsearch nécessaire et DLL dans le même dossier que
ldapsearch


Dim Shell, src, Ftxt, dest, fsrce, fdest, line, lineArray, Compt, fso,
ForReading, ForWriting, objDialog, objFolder, intResult, CD, fs, f
Set Shell = CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

' Test du moteur de script
TestHost

ForReading = 1
ForWriting = 2

CD = fso.GetParentFolderName(WScript.ScriptFullName)
Set fs = CreateObject("Scripting.FileSystemObject")


if fs.FileExists ("C:TempDgfipcarnet.csv") then
Set objFolder = fs.GetFile("C:TempDgfipcarnet.csv")
dest="dgfip.csv"
Set fsrce=fs.OpenTextFile(objFolder, ForReading)
Set fdest=fs.OpenTextFile(dest, ForWriting,true)
While not fsrce.AtEndOfStream
line=fsrce.ReadLine
lineArray=split(line,";")
for Compt = 0 to ubound(lineArray)
if instr(1,lineArray(Compt),"@cp.",1) > 0 then
line=replace(line,lineArray(Compt),SearchDGFIPmail(lineArray(Compt)),1,-1,1)
end if
next
fdest.writeline line
wend
fdest.close
fsrce.close
end if


'--
'Fonction d'extraction de la nouvelle adresse DGFIP

function SearchDGFIPmail(CPMail)
Dim oExec, TmpS, TmpSArray
SearchDGFIPmail = CPMail
Set oExec = Shell.Exec(CD & "ldapsearch -v -l 120 -x -LLL -S
displayName -h ldap.toto.cp -b ""o=toto,c=fr"" ""(mail=" & CPMail & ")""
mail")
TmpS = ""

while not oExec.StdOut.AtEndOfStream
TmpS = oExec.StdOut.ReadLine
if instr(1,TmpS,"@dgfip.",1) > 0 then
TmpSArray = split(TmpS,":")
SearchDGFIPmail=trim(TmpSArray(ubound(TmpSArray)))
wscript.echo CPMail & " ==> " & SearchDGFIPmail
end if
wend
end function
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean Pierre
Le #12019531
Dans son message news:,
Dom
Bonsoir,

Le script VBS ci-après est destiné à comparer les adresses d'un
carnet OE avec un Ldap et à les remplacer automatiquement suite à un
changement
de nom de domaine.

Il fonctionne sans souci sous XP (2000 adresses traitées en 6 mn),
mais sous Windows 98SE, il faut 15 secondes environ pour traiter 1
adresse, donc si vous faites le calcul pour 2000 adresses..., c'est
très très très
long !!!
La désactivation (temporaire !) de l'antivirus n'améliore pas le
temps de traitement, de même qu'en enlevant un max de programmes dans
le Systray.
A votre avis, quelle peut être la cause de cette lenteur ? du VBS ?
de Win98 ?

J'ai testé sur 3 micros Win98SE avec 256, 512, 1024 mo de RAM, c'est
exactement pareil au niveau lenteur, donc je ne pense pas pas que cela
vienne de la quantité de Ram.

Si quelqu'un a une explication, voire un début de solution, qu'il
soit béni sur plusieurs générations !

Cordialement,

Dominique.


Option explicit
'
' Remplacement par LDAP des adresses CP en adresses DGFIP dans un CSV
' Portage cygwin de ldapsearch nécessaire et DLL dans le même dossier
que ldapsearch


Dim Shell, src, Ftxt, dest, fsrce, fdest, line, lineArray, Compt, fso,
ForReading, ForWriting, objDialog, objFolder, intResult, CD, fs, f
Set Shell = CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

' Test du moteur de script
TestHost

ForReading = 1
ForWriting = 2

CD = fso.GetParentFolderName(WScript.ScriptFullName)
Set fs = CreateObject("Scripting.FileSystemObject")


if fs.FileExists ("C:TempDgfipcarnet.csv") then
Set objFolder = fs.GetFile("C:TempDgfipcarnet.csv")
dest="dgfip.csv"
Set fsrce=fs.OpenTextFile(objFolder, ForReading)
Set fdest=fs.OpenTextFile(dest, ForWriting,true)
While not fsrce.AtEndOfStream
line=fsrce.ReadLine
lineArray=split(line,";")
for Compt = 0 to ubound(lineArray)
if instr(1,lineArray(Compt),"@cp.",1) > 0 then

line=replace(line,lineArray(Compt),SearchDGFIPmail(lineArray(Compt)),1,-1,1)
end if next fdest.writeline line
wend
fdest.close
fsrce.close
end if


'--------------------------------------------------------------------
'Fonction d'extraction de la nouvelle adresse DGFIP

function SearchDGFIPmail(CPMail)
Dim oExec, TmpS, TmpSArray
SearchDGFIPmail = CPMail
Set oExec = Shell.Exec(CD & "ldapsearch -v -l 120 -x -LLL -S
displayName -h ldap.toto.cp -b ""o=toto,c=fr"" ""(mail=" & CPMail &
")"" mail")
TmpS = ""

while not oExec.StdOut.AtEndOfStream
TmpS = oExec.StdOut.ReadLine
if instr(1,TmpS,"@dgfip.",1) > 0 then
TmpSArray = split(TmpS,":")
SearchDGFIPmail=trim(TmpSArray(ubound(TmpSArray)))
wscript.echo CPMail & " ==> " & SearchDGFIPmail
end if
wend
end function



Salut Dom,

Réponse idiote :

Balances tes W98 et passes à Vista lol ( ou XP ).
Pour la lenteur je dirai que cela peut venir des 2 :
- de W98 qui est démodé et un peu beaucoup vieillissant
- du VBS qui peut être à plus été conçu pour une utilisation XP que W98
( mais bon le VBS je ne connais pas du tout donc ... )

Peut être qu'une ligne supplémentaire, une suppression de ligne voire
même une merdouille un guillemet, une virgule etc... permettrait de
faire accélérer le processus sous W98 mais comme je te l'ai dit je ne
connais pas VBS déjà que j'ai un peu de mal avec Excel ou Word alors
imagines avec un VBS.

Amitiés.

Jean Pierre.
markorki
Le #12019521
Jean Pierre a écrit :

Dans son message news:,
Dom
Bonsoir,

Le script VBS ci-après est destiné à comparer les adresses d'un
carnet OE avec un Ldap et à les remplacer automatiquement suite à un
changement
de nom de domaine.

Il fonctionne sans souci sous XP (2000 adresses traitées en 6 mn),
mais sous Windows 98SE, il faut 15 secondes environ pour traiter 1
adresse, donc si vous faites le calcul pour 2000 adresses..., c'est
très très très
long !!!
La désactivation (temporaire !) de l'antivirus n'améliore pas le
temps de traitement, de même qu'en enlevant un max de programmes dans
le Systray.
A votre avis, quelle peut être la cause de cette lenteur ? du VBS ?
de Win98 ?

J'ai testé sur 3 micros Win98SE avec 256, 512, 1024 mo de RAM, c'est
exactement pareil au niveau lenteur, donc je ne pense pas pas que cela
vienne de la quantité de Ram.

Si quelqu'un a une explication, voire un début de solution, qu'il
soit béni sur plusieurs générations !

Cordialement,

Dominique.


Option explicit
'
' Remplacement par LDAP des adresses CP en adresses DGFIP dans un CSV
' Portage cygwin de ldapsearch nécessaire et DLL dans le même dossier
que ldapsearch


Dim Shell, src, Ftxt, dest, fsrce, fdest, line, lineArray, Compt, fso,
ForReading, ForWriting, objDialog, objFolder, intResult, CD, fs, f
Set Shell = CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

' Test du moteur de script
TestHost

ForReading = 1
ForWriting = 2

CD = fso.GetParentFolderName(WScript.ScriptFullName)
Set fs = CreateObject("Scripting.FileSystemObject")


if fs.FileExists ("C:TempDgfipcarnet.csv") then
Set objFolder = fs.GetFile("C:TempDgfipcarnet.csv")
dest="dgfip.csv"
Set fsrce=fs.OpenTextFile(objFolder, ForReading)
Set fdest=fs.OpenTextFile(dest, ForWriting,true)
While not fsrce.AtEndOfStream
line=fsrce.ReadLine
lineArray=split(line,";")
for Compt = 0 to ubound(lineArray)
if instr(1,lineArray(Compt),"@cp.",1) > 0 then

line=replace(line,lineArray(Compt),SearchDGFIPmail(lineArray(Compt)),1,-1,1)

end if next fdest.writeline line
wend
fdest.close
fsrce.close
end if


'--------------------------------------------------------------------
'Fonction d'extraction de la nouvelle adresse DGFIP

function SearchDGFIPmail(CPMail)
Dim oExec, TmpS, TmpSArray
SearchDGFIPmail = CPMail
Set oExec = Shell.Exec(CD & "ldapsearch -v -l 120 -x -LLL -S
displayName -h ldap.toto.cp -b ""o=toto,c=fr"" ""(mail=" & CPMail &
")"" mail")
TmpS = ""

while not oExec.StdOut.AtEndOfStream
TmpS = oExec.StdOut.ReadLine
if instr(1,TmpS,"@dgfip.",1) > 0 then
TmpSArray = split(TmpS,":")
SearchDGFIPmail=trim(TmpSArray(ubound(TmpSArray)))
wscript.echo CPMail & " ==> " & SearchDGFIPmail
end if
wend
end function




Salut Dom,

Réponse idiote :



on peut le, dire ;-)

Balances tes W98 et passes à Vista lol ( ou XP ).
Pour la lenteur je dirai que cela peut venir des 2 :
- de W98 qui est démodé et un peu beaucoup vieillissant



bien sûr, un Os ça s'use... graisser les rotules de W98 ?

- du VBS qui peut être à plus été conçu pour une utilisation XP que W98
( mais bon le VBS je ne connais pas du tout donc ... )



non, VBS est une vieillerie au contraire...

Peut être qu'une ligne supplémentaire, une suppression de ligne voire
même une merdouille un guillemet, une virgule etc... permettrait de
faire accélérer le processus sous W98 mais comme je te l'ai dit je ne
connais pas VBS déjà que j'ai un peu de mal avec Excel ou Word alors
imagines avec un VBS.



ou une patte de lapin accrochée à la souris ?

pour revenir au pb de Tom, le Shell.exec est un peu complexe et relancé
à chaque boucle, Non ? Les échanges VBS <> shell ne sont pas des modèles
d'efficacité ;-(
Publicité
Poster une réponse
Anonyme