Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Devilkevin aka Kerstin
Anmeldungsdatum: 11.11.2004 Beiträge: 2532 Wohnort: nähe Mannheim
|
Verfasst am: 10.08.2005, 10:25 Titel: Ungenauigkeit beim Zählen ? |
|
|
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 ? _________________ www.piratenpartei.de |
|
Nach oben |
|
|
Kai Bareis
Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 10.08.2005, 12:09 Titel: |
|
|
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 |
|
|
Devilkevin aka Kerstin
Anmeldungsdatum: 11.11.2004 Beiträge: 2532 Wohnort: nähe Mannheim
|
Verfasst am: 10.08.2005, 17:11 Titel: |
|
|
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 |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 10.08.2005, 19:44 Titel: |
|
|
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 |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 10.08.2005, 22:17 Titel: |
|
|
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 |
|
|
helium
Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 11.08.2005, 10:56 Titel: |
|
|
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 |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 11.08.2005, 13:11 Titel: |
|
|
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 |
|
|
d.j.peters Gast
|
Verfasst am: 11.08.2005, 22:11 Titel: |
|
|
MisterD hat Folgendes geschrieben: | fb-timer gibt bei mir im moment 421.6947989126012 aus, also ziemlich genau.. |
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
|
Verfasst am: 11.08.2005, 22:20 Titel: |
|
|
d.j.peters hat Folgendes geschrieben: | |
_________________ "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 |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
|
helium
Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 12.08.2005, 13:15 Titel: |
|
|
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 |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 12.08.2005, 14:06 Titel: |
|
|
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 |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 12.08.2005, 17:13 Titel: |
|
|
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 ) _________________ 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 |
|
|
|