Deutsch
Forum

Performance-Messung für Cheetah2

 

Stefan
Schnell
Hallo Community,
folgende Listings habe ich für die Performance-Messung von Cheetah2 verwendet:
KompilierenMarkierenSeparieren
-Begin-----------------------------------------------------------------
 $U Cheetah2.Unit.pcu
-Occupy resources----------------------------------------------------
xdbUseDLL
-Declare variables---------------------------------------------------
Declare FileName$, hdb&, Loop$, Adress&, Data$
FileName$ = "Test.dbf"
-Create string with data---------------------------------------------
Randomize

WhileLoop 1, 4096, 1

    Data$ = Data$ + @Chr$(@Rnd(96) + 31)

EndWhile

-Create database-----------------------------------------------------
xdbCreate(@Addr(FileName$), "ID,N,9,0;MEMO,M,10,0")
-Open database-------------------------------------------------------
hdb& = xdbOpen(@Addr(FileName$), "")
-Add 20000 records with data-----------------------------------------

WhileLoop 1, 20000, 1

    xdbClearBuffer(hdb&)
    Loop$ = @Str$(&Loop)
    xdbAssignField(hdb&, "ID", 0, @Addr(Loop$))
    xdbAssignField(hdb&, "MEMO", 0, @Addr(Data$))
    xdbAppendRecord(hdb&)

EndWhile

---------------------------------------------------------------------
Print
Print "Press any key to exit..."
WaitKey
-Close database------------------------------------------------------
xdbClose(hdb&)
-Free resources------------------------------------------------------
xdbFreeDLL
-End-------------------------------------------------------------------
End

Damit wird eine Datenbank, bestehend aus einer ID und einem Memo-Feld mit 20.000 Datensätzen erzeugt. Jedes Memo-Feld wird mit einem String, der 4096 Bytes groß ist, gefüllt. Die Datenbank wird 400.098 Bytes groß und die zugehörigen Memo-Felder 92.160.002 Bytes (also 87,8 Megabyte).

Zur Performance-Messung habe ich folgendes Programm verwendet:
KompilierenMarkierenSeparieren
-Begin-----------------------------------------------------------------
 $I DbgView.inc
 $U Cheetah2.Unit.pcu
-Occupy resources----------------------------------------------------
xdbUseDLL
-Declare variables---------------------------------------------------
Declare FileName$, hdb&, Data$, RecNo&
FileName$ = "Test.dbf"
-Open database-------------------------------------------------------
hdb& = xdbOpen(@Addr(FileName$), "")
-Performance test----------------------------------------------------
Randomize

WhileLoop 1, 200, 1

    RecNo& = @Rnd(19999) + 1
    DbgPrint "Go " + @Str$(RecNo&)
    xdbGetRecord(hdb&, RecNo&)
    Data$ = xdbFieldValue(hdb&, "MEMO", 0)
    DbgPrint "Ready"

EndWhile

-Close database------------------------------------------------------
xdbClose(hdb&)
-Free resources------------------------------------------------------
xdbFreeDLL
-End-------------------------------------------------------------------
End

Hier springt das Programm 200 mal zu einem beliebigen Datensatz und liest diesen aus. Für das Springen und Auslesen benötig Cheetah, mit XProfan im Interpretermodus, ca. 0,025 Sekunden.
Scheint doch ganz akzeptabel zu sein.
Gruß
Stefan
 
28.10.2004  
 




Normann
Strübli
Hi Stefan,

wollte das ganze bei mir auch mal testen aber die Include Dbgview.inc habe ich
irgendwie nicht gefunden - vergessen .

Wie ist denn Deine Rechnerkonfiguration?
Auf der Homepage von Planetsquires lässt sich Dein Wrapper übrigens nicht mehr
runterladen - Paul ma bescheidgeben?

Gruß
Normann
 
28.10.2004  
 




Ragnar
Rehbein
ich möchte keinen glaubenskrieg beginnen... aber:

mit dem MS SQL-Server sehen die zeiten ähnlich aus.

50 ms lokal
200 ms übers netzwerk
2 ms übers netz wenn für die abfrage des autoincrement ein index gesetzt wird !!!!

als MSDE kostenlos, sehr gut dokumentiert, ohne DLL in profan nutzbar, für fast alles was ich so weiß über datenbanken nahezu fehlerfrei und super stabil.

zur info ein testprogramm für die MSDE:
KompilierenMarkierenSeparieren
print sqlinit(("Driver={SQL Server};Server=ragnar3;UID=sa;PWD=;Database=ordicomdb;"))
declare data$
Randomize
data$ = mkstr$("ABCD",1000)

WhileLoop 1, 4096, 1

    Data$ = Data$ + @Chr$(@Rnd(96) + 31)

EndWhile

data$ = translate$(data$,"","")
sqlexec "drop table test",0
sqlexec "create table test (autoinc int identity, text varchar(5000))",0
print data$
cls

whileloop 1,20000

    locate 0,0
    print &loop
    sqlexec "insert into test (text) values ("+Data$+") ",1
    clearlist

endwhile

decimals 0
declare time&
time& = &gettickcount

whileloop 1,100

    clearlist
    sqlexec "select text from test where autoinc = "+str$(rnd(19999)+1),1
    data$ = listboxitem$(2)

endwhile

print "time: ",(&gettickcount-time&)/100
waitinput
print data$
sleep 1000

r.r.
 
28.10.2004  
 




Stefan
Schnell
Hallo Normann,

>aber die Include Dbgview.inc habe ich irgendwie nicht gefunden

Vor langer Zeit habe ich mal im Profan-Forum DebugView (von sysinternal) vorgestellt und dazu eine entsprechende Include-Datei, um das Debuggen mit PrfDebug und eine entsprechende Ausgabe in DebugView zu vereinfachen. Hier die DbgView.inc für Dich:
KompilierenMarkierenSeparieren
-Begin-----------------------------------------------------------------
-External functions--------------------------------------------------
Def @OutputDebugStringA(1) !"KERNEL32.DLL", "OutputDebugStringA"
Def @OutputDebugStringW(1) !"KERNEL32.DLL", "OutputDebugStringW"
Def @OutputDebugString(1) !"KERNEL32.DLL", "OutputDebugStringA"
-Procedure DbgPrint--------------------------------------------------

Proc DbgPrint

    Parameters PrintString$
    PrintString$ = PrintString$ + @Chr$(0)
    @OutputDebugStringA(@Addr(PrintString$))

EndProc

-Procedure DbgOut----------------------------------------------------

Proc DbgOut

    Parameters PrintString$
    DebugOut 1, PrintString$

EndProc

-Procedure DbgStop---------------------------------------------------

Proc DbgStop

    @Set("DebugMode", 2)

EndProc

-Procedure DbgGo-----------------------------------------------------

Proc DbgGo

    If %PCount = 0

        @Set("DebugMode", 0)

    Else

        Parameters Mode&
        @Set("DebugMode", Mode&)

    EndIf

EndProc

-Procedure DbgAssert-------------------------------------------------

Proc DbgAssert

    Parameters Condition&

    If Condition&

        @Set("DebugMode", 2)

    EndIf

EndProc

-End-------------------------------------------------------------------

>Wie ist denn Deine Rechnerkonfiguration?

Getest habe ich das Programm jetzt auf mehreren Rechnern und Betriebssystemen:

WinXP Prof, HP, 1,6 GHz, 256 MByte RAM (das waren die vorhandenen Ergebnisse)
WinXP Home, Brandy, 2 GHz, 256 MByte RAM (war noch schneller, 0,00xy Sekunden)
Win 95 OSR 2, NoName, 266 MHz, 256 MByte RAM (war deutlich langsamer)

Alle Ergebnisse waren jedoch, bezogen auf die Rechnerkonfiguration, akzeptabel. :+)--

>Auf der Homepage von Planetsquires lässt sich Dein Wrapper übrigens nicht mehr
runterladen

Habe Paul heute morgen einen leicht modifizierten Wrapper gesendet, füge ihn hier als Attachment bei.

Hallo Ragnar,

>ich möchte keinen glaubenskrieg beginnen... aber:

Ich finde dass es eine Frage des Einsatzes ist. Du hast Recht, was die Microsoft Database Engine angeht, stabil, kostenlos, schnell und erprobt. Einen ganz wichtigen Grund halte ich aber entgegen: Willst Du einem Kunden wirklich zumuten den MSDE zu installieren wenn nur eine kleine Datenbankinstallation ansteht? Und das sehe ich als klaren Vorteil von Cheetah, kompakt und erfordert vom Anwender keine weiteren Aktivitäten. Es kommt, meine Sicht der Dinge, eben darauf an, für welchen Zweck bzw. welche Zielgruppe das System bestimmt sein soll und hier hat Cheetah ebenso wie MSDE sein Segment.

Gruß
Stefan
 
29.10.2004  
 




Stefan
Schnell
Hallo Community,
Ingo machte mich vor kurzem in einer eMail auf diesen Unterschied aufmerksam, hier ein kleiner Vergleich von Cheetah zu XProfan, der mich selber etwas überrascht hat:

Anlegen von 20000 Datensätzen à 3 Felder
Cheetah mit XProfan im Interpreter-Modus 283 Sekunden
XProfan im Interpreter-Modus 63 Sekunden
Cheetah mit XProfan mit kompilierter Datei 41 Sekunden
XProfan mit kompilierter Datei 12 Sekunden
Cheetah mit XProfan als EXE 39 Sekunden
XProfan als EXE 11 Sekunden.

Also, klarer Geschwindigkeitssieger ist XProfan.

Im Einsatz mit XProfan ist als Ansatz genau zu betrachten ob die von XProfan angebotenen Funktionen ausreichen oder nicht. Sollten, gerade in Bezug auf Memo-Felder oder andere Feldtypen, weitere Funktionen gewünscht sein, kann Cheetah eine gewinnbringende Ergänzung sein.

Gruß
Stefan
 
08.04.2005  
 




Normann
Strübli
Hallo Stefan - hallo Community,

da Cheetah meiner Meinung nach definitiv immer noch die beste Datenbank ist (der Performanceunterschied läßt sich meiner Meinung nach nur dadurch erklären, das Xprofan für die Dll-Aufrufe zu lange benötigt )
habe ich eine gute Nachricht für ALLE die Cheetah noch nicht verwendet haben - weil zu teuer :

Cheetah ist jetzt FREEWARE ! ! !

Also runterladen (Stefans Wrapper für Xprofan nicht vergessen) und begeistert sein.

Viel Spaß damit.
 
01.05.2005  
 




CB
Um Euch die Suche abzukürzen:
[...] 

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
01.05.2005  
 




Normann
Strübli
Mist! - ja genau, den Link wollt ich doch auch posten! Danke Chistian.
 
01.05.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.631 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie