Testy – zopár typických príkladov
Stále neveríte, že 32-bit-ová aplikácia s grafickým prostredím môže bežať rýchlejšie ako Vaša Clipper-ovská pod čistým MS-DOS-om?
Tak si pozrite výsledky nasledujúcich jednoduchých testov...
Ako je z tabuľky jasne vidieť, na svet MS-DOS a Windows 9x treba rýchlo konečne zabudnúť, nastupuje Windows2000 a jeho pokračovateľ WindowsXP.
Test 1: Narátanie od 1 do 10.000.000
Test 2: Vyrobenie 30.000 cText reťazca
Test 3: Pridanie 100.000 nových viet
Test 4: Náhrada 100.000 položiek MENO
Test 5: Posun cez 100.000 položiek
Test 6: Indexovanie 100.000 položiek Exclusive Mode
Test 7: Indexovanie 100.000 položiek Shared Mode
Pozn.: priemerná hodnota z 5-tich meraní
|
Xbase++ |
v. 1.1 |
v. 1.3 | v. 1.7 | v. 1.8 |
| 1 Win9x | 1.11 | 1.54 | 0.55 | 0.60 |
| 2 Win9x | 0.26 | 0.05 | 0.01 | 0.01 |
| 3 Win9x | 1.16 | 2.26 | 4.89 | 4.87 |
| 4 Win9x | 11.21 | 4.01 | 4.51 | 4.61 |
| 5 Win9x | 6.13 | 0.68 | 0.46 | 0.49 |
| 6 Win9x | 7.58 | 1.45 | 1.46 | 1.48 |
| 7 Win9x | 7.61 | 13.16 | 13.45 | 13.49 |
| Clipper | S'87 | 5.2e | 5.3b | |
| 1 Win9x | 62.51 | 43.45 | 36.58 | |
| 2 Win9x | 0.77 | 0.88 | 0.98 | |
| 3 Win9x | 1.61 | 1.54 | 2.37 | |
| 4 Win9x | 1.54 | 2.04 | 2.03 | |
| 5 Win9x | 1.59 | 0.33 | 0.31 | |
| 6 Win9x | 3.85 | 2.81 | 3.08 | |
| 7 Win9x | 4.34 | 2.86 | 3.07 | |
| Xbase++ | v. 1.1 | v. 1.3 | v. 1.7 | v. 1.8 |
| 1 WXP | 1.12 | 0.58 | 0.57 | 0.56 |
| 2 WXP | 0.26 | 0.02 | 0.01 | 0.01 |
| 3 WXP | 0.73 | 0.91 | 1.49 | 1.39 |
| 4 WXP | 1.86 | 2.29 | 2.48 | 2.57 |
| 5 WXP | 1.36 | 0.62 | 0.45 | 0.44 |
| 6 WXP | 2.62 | 1.37 | 1.36 | 1.32 |
| 7 WXP | 2.58 | 1.91 | 1.89 | 1.85 |
Testované na PC: Intel Pentium IV 1400MHz, 256 MB RAM, 40 GB HDD
Win9x - Windows 98 Second Edition (na Windows 95b je rozdiel mininálny)
WXP – Windows XP Professional+ServicePack 1a (na Windows 2000 je rozdiel mininálny)
poznámka: nemá význam to všetko stále dokola testovať na nových operačných systémoch (napr. Windows 7 atď...) a konfiguráciách počítačov (napr. Intel Core 2 Duo, Quad Core, AMD atď...), lebo je to stále všetko aj tak stále lepšie a rýchlejšie, a pôvodne vykonané testy sú dostatočne názorné ako dôkaz problematiky
// BOF TEST.PRG
Function Main()
Local i := 0
Local nTemp := 0
Local cText := ''
Local nStart, nEnd
*
FErase( 'TEST.DBF' )
dbCreate( 'TEST.DBF', { { 'MENO', 'C', 20, 0 } } )
*
nStart := Second()
Do While i < 10000000
i ++
EndDo
nEnd := Second()
? ( 'Test 1: Count from 1 to 10.000.000 == ' + Str( nEnd - nStart ) )
*
nStart := Second()
For i := 1 To 30000
cText += 'c'
Next
nEnd := Second()
? ( ' Test 2: Adding cText to 30.000 == ' + Str( nEnd - nStart ) )
*
Use TEST Alias TEST Exclusive
Zap
nStart := Second()
For i := 1 To 100000
Append Blank
Next
nEnd := Second()
? ( ' Test 3: Append Blank 100.000 == ' + Str( nEnd - nStart ) )
Use
*
Use TEST Alias TEST Exclusive
nStart := Second()
Replace All TEST->MENO With 'abc'
nEnd := Second()
? ( ' Test 4: Replace FIELD MENO 100.000 == ' + Str( nEnd - nStart ) )
Use
*
Use TEST Alias TEST Exclusive
nStart = Second()
Do While TEST->( ! Eof() )
TEST->( dbSkip() )
EndDo
nEnd = Second()
? ( ' Test 5: Skip 100.000 == ' + Str( nEnd - nStart ) )
Use
*
FErase( 'TEST.NTX' )
Use TEST Alias TEST Exclusive
nStart = Second()
Index On MENO To TEST
nEnd = Second()
? ( 'Test 6: Index Exlusive 100.000 == ' + Str( nEnd - nStart ) )
Use
*
FErase( 'TEST.NTX' )
Use TEST Alias TEST Shared
nStart = Second()
Index On MENO To TEST
nEnd = Second()
? ( ' Test 7: Index Shared 100.000 == ' + Str( nEnd - nStart ) )
Use
*
? 'koniec...'
Inkey(0)
*
RETURN ( NIL )
*
// EOF TEST.PRG




