Moin,
es fiel mir im Moment kein besseres Thema dazu ein...
Im Thread Index Treiber wurde auch das Problem der Ablaufanzeige während einer Abarbeitung angesprochen.
Ich habe bisher jedesmal beim Durchlaufen einer Datenbank die RECNO() angezeigt, oder einen Zähler mitlaufen lassen, der in Einzelschritten zwischendurch den Stand des Laufes anzeigte.
Jetzt habe ich die Intervalle des Anzeigens von 1 auf 500 angehoben, oder ganz abgeschaltet, wenn die DB nicht zu groß war. Es ist doch tatsächlich ein Tempogewinn von ca. 50% mindestens zu erreichen. Also frißt die Anzeige jedes einzelnen Increment ganz schön Performance.
Nur mal so, falls es einen interessieren sollte
Vielleicht hat jemand von euch noch ein paar Tricks, oder Experimente auf dem Gebiet gemacht und kann sie hier unterbringen? Wäre doch sicherlich interessant zu erfahren, bei welchen Abläufen man noch Geschwindigkeit herauskitzeln kann.
Statusanzeigen [ERLEDIGT]
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Statusanzeigen [ERLEDIGT]
Zuletzt geändert von Manfred am Mi, 14. Apr 2010 20:25, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Statusanzeigen
Hallo Manfred,
Also: erst geprüft, ob die Funktion aufgerufen werden soll
und nicht: immer aufgerufen, und in der Funktion geprüft, ob eine Nummer geschrieben werden soll
Ersteres ist nicht nämlich wesentlich schneller als letzteres
Viele Grüße,
Martin
nur zum Verständnis: Du hast doch Deine Prüfung nicht in der Funktion mit der Ausgabe gemacht, sondern vorher, oder?Manfred hat geschrieben:Ich habe bisher jedesmal beim Durchlaufen einer Datenbank die RECNO() angezeigt, oder einen Zähler mitlaufen lassen, der in Einzelschritten zwischendurch den Stand des Laufes anzeigte.
Jetzt habe ich die Intervalle des Anzeigens von 1 auf 500 angehoben, oder ganz abgeschaltet, wenn die DB nicht zu groß war.
Also: erst geprüft, ob die Funktion aufgerufen werden soll
und nicht: immer aufgerufen, und in der Funktion geprüft, ob eine Nummer geschrieben werden soll
Ersteres ist nicht nämlich wesentlich schneller als letzteres
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Statusanzeigen
Moin Martin,
DO WHILE ! db->(EOF())
@ x,y SAY db->RECNO()) PICTURE "9999999"
db->(DBSKIP())
ENDDO
das habe ich dann so geändert:
nZaehler := 0
DO WHILE ! db->(EOF())
nZaehler++
IF nZaehler = 500
@ x,y SAY db->RECNO()) PICTURE "9999999"
nZaehler := 0
ENDIF
db->(DBSKIP())
ENDDO
Das hat dann den besagten Tempogewinn gebracht. Mir fällt nicht ein, wie man das eleganter machen könnte um noch mehr Tempo herauszuholen.
Ich rede jetzt rein vom Textmodus.
wie ich es im Falle des Indexaufbaus gemacht hatte, weißt Du ja schon. Beim Ablauf eines Durchlaufes lief es vereinfacht so:Martin Altmann hat geschrieben:Hallo Manfred,
nur zum Verständnis: Du hast doch Deine Prüfung nicht in der Funktion mit der Ausgabe gemacht, sondern vorher, oder?
Also: erst geprüft, ob die Funktion aufgerufen werden soll
und nicht: immer aufgerufen, und in der Funktion geprüft, ob eine Nummer geschrieben werden soll
Ersteres ist nicht nämlich wesentlich schneller als letzteres
DO WHILE ! db->(EOF())
@ x,y SAY db->RECNO()) PICTURE "9999999"
db->(DBSKIP())
ENDDO
das habe ich dann so geändert:
nZaehler := 0
DO WHILE ! db->(EOF())
nZaehler++
IF nZaehler = 500
@ x,y SAY db->RECNO()) PICTURE "9999999"
nZaehler := 0
ENDIF
db->(DBSKIP())
ENDDO
Das hat dann den besagten Tempogewinn gebracht. Mir fällt nicht ein, wie man das eleganter machen könnte um noch mehr Tempo herauszuholen.
Ich rede jetzt rein vom Textmodus.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Statusanzeigen
Hallo Manfred,
Viele Grüße,
Martin
hatte ich an anderer Stelle schon mal geschrieben (glaube ich): Wenn man eine (kleinere) Datenbank hat, aus der man immer wieder Daten braucht, ist es oft schneller, diese in ein Array zu laden und die Daten dann aus diesem Array heraus zu benutzen.Manfred hat geschrieben:Vielleicht hat jemand von euch noch ein paar Tricks, oder Experimente auf dem Gebiet gemacht und kann sie hier unterbringen? Wäre doch sicherlich interessant zu erfahren, bei welchen Abläufen man noch Geschwindigkeit herauskitzeln kann.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.