Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Ungenauigkeit beim Zählen ?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 10.08.2005, 10:25    Titel: Ungenauigkeit beim Zählen ? Antworten mit Zitat

Hallo, mit folgendem Programm schaue ich wieviele Schleifen in einer Sekunde möglich sind:

Code:
Start = Timer
a=1
do
a=a+1
Zeit = Timer - Start
loop until zeit=10
print a
sleep


Mein Computer schafft z.b. 55XXXXX - 59XXXXX Schleifen in 10 Sekunden, und einmal nur 35XXXXX.
Sind solche Unterschiede normal oder zählt FB einfach zu ungenau durchgeknallt ?
_________________
www.piratenpartei.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 10.08.2005, 12:09    Titel: Antworten mit Zitat

Ich denke sowas ist normal da die Anwendung unter Windows läuft und dort noch einiges anderes neben her läuft. Hier mal wen ich pro Sekunde eine Abfrage mache und neben her zwischen den Fenster wechsele.
Zitat:
896263
1133355
1074164
890523
1040296
1124379
949637
1064209

Sowas ahnliches wurde auch Qbasic ausgeben.
_________________
MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 10.08.2005, 17:11    Titel: Antworten mit Zitat

Hat den jemand ne Idee wie man das geanauer machen könnte ?
Also das andere Anwendungen mehr oder weniger "ignoriert", und so ein genaueres Ergebnis liefert ?
_________________
www.piratenpartei.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 10.08.2005, 19:40    Titel: Antworten mit Zitat

Hallo dk!

Wofür brauchst du das denn? Die CPU Speed lässt sich besser mit djpeters FB Code in etwa in Erfahrung bringen, den er hier mal im FB Forum gepostet hat.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 10.08.2005, 19:44    Titel: Antworten mit Zitat

was du versuchen könntest ist, die Prozesspriorität deines Programms mittels WinAPI auf die höchste Stufe zu setzen.. Vllt probierst du das mal.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 10.08.2005, 22:17    Titel: Antworten mit Zitat

Unter Windows (Multitasking!) schwankt es logischerweise immer, nur unter reinem MS-DOS 6.22 (nur QB) bekommt man einigermassen konstante Werte. Deswegen sind Echtzeitanwendungen unter Windows entsprechend heikler.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 11.08.2005, 10:56    Titel: Antworten mit Zitat

Zitat:
Start = Timer
a=1
do
a=a+1
Zeit = Timer - Start
loop until zeit=10
print a
sleep


Wie genau ist FBs Timer? Man sollte schon einen vernüpftigen einsetzen.

Außerdenm würde ich die Subtraktion und Zuweisung an die Variable Zeit aus der Schleife nehmen.

Code:

ziel = Timer + 10

a=0 ' hier hat er erst 0 Wiederholungen, nicht eine

do
   a=a+1
loop until Timer >= ziel

print a
sleep

_________________
Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 11.08.2005, 13:11    Titel: Antworten mit Zitat

fb-timer gibt bei mir im moment 421.6947989126012 aus, also ziemlich genau..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
d.j.peters
Gast





BeitragVerfasst am: 11.08.2005, 22:11    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
fb-timer gibt bei mir im moment 421.6947989126012 aus, also ziemlich genau..


lachen
EDIT:
Ich dachte das wär ein Programmierwitz und nicht das Ergebnis.
print timer
421.6947989126012


Zuletzt bearbeitet von d.j.peters am 12.08.2005, 01:08, insgesamt einmal bearbeitet
Nach oben
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 11.08.2005, 22:20    Titel: Antworten mit Zitat

d.j.peters hat Folgendes geschrieben:
lachen

Hmmm....
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 11.08.2005, 23:33    Titel: Antworten mit Zitat

d.j.peters hat Folgendes geschrieben:
lachen

dto.
Hmmm....
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 12.08.2005, 00:26    Titel: Antworten mit Zitat

joshy hat Folgendes geschrieben:
lachen
versteh ich jetzt auch nicht wirklich..
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 12.08.2005, 13:15    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
fb-timer gibt bei mir im moment 421.6947989126012 aus, also ziemlich genau..

Interssanter, als eine Reihe von uninformativen Nachkommastellen, wäre, wie oft der Timer geupdatet wird. Der von QB war ja hundsmiserabel und wurde gerade mal jede 18tel Sekunde geupdatet.

Außerdem gehe ich stark davon aus, das viele der Nachkommastellen reine Rundungsfehler sind. Deswegen wäre natürlich auch interessant, wieviele Stellen davon verlässlich sind. Denn das, was da steht würde ja sonst zehntel pico-Sekunden. Solche genauen Timer hat kein PC. Ich frag mich, wo es überhaupt solche Timer geben könnte.
_________________
Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 12.08.2005, 14:06    Titel: Antworten mit Zitat

Code:
 13286.86466744418
 13286.87733071981
 13286.87744656371
 13286.87757134264
 13286.87767758279
 13286.87778258015
 13286.87788660982
 13286.87799871211
 13286.87810207543
 13286.87820537594

das is einfach nur for 1 to 10:print:next
das müsste für die meisten sachen genau genug sein, oder? wenn die vierte nachkommastelle noch flüssig läuft..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 12.08.2005, 17:13    Titel: Antworten mit Zitat

Soweit ich weiß, verwendet FB jeweils das Timing-System des aktuellen OS. Wen es wirklich interessiert, der kann ja versuchen, auf den M$/Linux-Seiten herauszufinden, wie die Timer funktionieren, bzw. wie genau sie sind.

In jedem Fall muss der Timer auf 1ms genau sein, da das die Genauigkeit von SLEEP ist. Und im Wesentlichen reicht das.



Noch ne Kleinigkeit zu DKs erstem Post bzw. dem Code darin:
Die Variable 'Start' ist in deinem Code vom Typ INTEGER. Dadurch schneidest du schon mal die Nachkommastellen von TIMER ab, was ein paar Tausend Durchläufe ausmacht, je nach CPU-Speed.
Das selbe Gilt natürlich für 'Zeit'

Noch ein Tipp, der zwar die Funktionalität nicht ändert, aber wohl ganz interessant sein dürfte:
die Zeile
a = a + 1
kannst du durch die Kurzform
a += 1
ersetzen. Das ganze Nennt sich 'Shorthands'. Siehe dazu auch:
http://dhost.info/siteofkaos/freeBASIC/Grundlagen.html#Shorthands
(das ganze wird bald auf Meckis Seite sein, aber erst, wenn es fertig ist... bis dahin gebt euch mit dieser Version zufrieden zwinkern )
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz