Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Incredible performance degration behaviour
Message
 
À
13/01/2005 10:01:35
Walter Meester
HoogkarspelPays-Bas
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 8 SP1
Divers
Thread ID:
00976753
Message ID:
00976878
Vues:
20
Try this instead:

CLEAR ALL
CLEAR
SET TALK OFF
SET NULL ON


?
? "2 tables"
? "---------"
FOR nT = 51 TO 52
SELECT 0
CREATE CURSOR ("Res"+ALLTRIM(STR(nT))) (C C(1))
APPEND BLANK
ENDFOR
DO TestPerf

?
? "10 tables"
? "---------"
CLEAR ALL
FOR nT = 50 TO 60
SELECT 0
CREATE CURSOR ("Res"+ALLTRIM(STR(nT))) (C C(1))
APPEND BLANK
ENDFOR
DO TestPerf

?
? "60 tables"
? "---------"

CLEAR ALL
FOR nT = 1 TO 60
SELECT 0
CREATE CURSOR ("Res"+ALLTRIM(STR(nT))) (C C(1))
APPEND BLANK
ENDFOR
DO TestPerf

?
? "100 tables"
? "---------"

CLEAR ALL
FOR nT = 1 TO 100
SELECT 0
CREATE CURSOR ("Res"+ALLTRIM(STR(nT))) (C C(1))
APPEND BLANK
ENDFOR
DO TestPerf


FUNCTION TestPerf

nSec= SECONDS()

FOR nT = 1 TO 100000
SELECT Res51
SELECT Res51
ENDFOR

? "No workarea change", SECONDS() - nSec

nSec= SECONDS()

FOR nT = 1 TO 100000
SELECT Res51
SELECT Res52
ENDFOR

? "200.000 workarea changes", SECONDS() - nSec

nSec= SECONDS()

SELECT Res51
FOR nT = 1 TO 100000
REPLACE Res51.C WITH "X"
ENDFOR

? "100.000 replacements in current workarea", SECONDS() - nSec

nSec= SECONDS()

SELECT Res51
FOR nT = 1 TO 100000
REPLACE Res51.C WITH "X"
ENDFOR

? "100.000 replacements in other workarea", SECONDS() - nSec

SELECT Res51
INDEX ON C TAG C
SELECT Res52
INDEX ON C TAG C

nSec= SECONDS()

SELECT Res51
FOR nT = 1 TO 100000
SEEK "X"
ENDFOR

? "100.000 seeks in current workarea", SECONDS() - nSec

nSec= SECONDS()

SELECT Res52
FOR nT = 1 TO 100000
SEEK "X"
ENDFOR

? "100.000 seeks in other workarea", SECONDS() - nSec

nSec= SECONDS()

SELECT Res51
FOR nT = 1 TO 100000
GO 1
ENDFOR

? "100.000 Go's in current workarea", SECONDS() - nSec

nSec= SECONDS()

SELECT Res52
FOR nT = 1 TO 100000
GO 1
ENDFOR

? "100.000 go's in other workarea", SECONDS() - nSec
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform