Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ich wollte einen Benchmark programmieren. und das was da unten steht hat natürlich noch nichts mit dem gui oder dem Code zu tun. aber es wäre nett, wenn ihr es mal in euren Shells ausführen würdet und das Ergebnis in die Kommentare schreibt, damit ich einen Durchschnittswert berechnen kann.
import time
def ganzvielezahlen(max):
t1 = time.time()
for x in range(0, max):
print(x)
t2 = time.time()
print("es hat %s sekunden gebraucht" % (t2 - t1))
#nach der eingabe in die shell müsst ihr ganzvielezahlen(1000) eingaben um ein
#ergebnis zu bekommen
Abgesehen davon das du in fast hundert Postings noch immer nicht gelernt hast die Codebox zu nutzen, ist dieser "Benchmark" völlig wertlos.
Zum einen weil er bei weitem nicht genug Last erzeugt. Zum zweiten weil du keinerlei Daten über das System abfragst oder gar selbst ermittelst. Womit die Aussagekraft gen null geht. "Läuft auf Computern" kann man dann sagen. Große Überraschung.
die Code box ist dafür da um Code verständlicher auszudrücken, was hier denke ich nicht notwendig gewesen wäre. aber für dich mache ich das in Zukunft vielleicht. die last die erzeugt wird ist im grunde egal es geht ja darum wie schnell es ausgegeben wird und auf dieser Grundlage kann man sehr wohl einen wert ermitteln. kann aber auch sein, dass ich falsch liege überzeug mich vom Gegenteil. aber zuerst tu worum ich in dem beitrag gebeten habe.
@jan.b: Codeboxen sind immer notwendig. Lies doch mal Deinen Beitrag. Der Code ist völlig unverständlich, weil jegliche Einrückung fehlt. Warum sollte irgendwer ein Programm ausführen, das so offensichtlich keinen Sinn macht. Was willst Du eigentlich erreichen? Für Benchmarks gibt es das timeit-Modul. time.time ist zu ungenau.
Achsoooooo. Dann kann ich deine Code also einfach kopieren & er läuft?
Wohl kaum. Die Codebox ist vor allem dafür da die in Python zwingend notwendigen Einrückungen zu bewahren. Das du das nicht begriffen hast spricht Bände...
Und benchmarks dienen dem Vergleich. Wenn man aber kein Kriterium hat, mit dem man vergleichen kann, sind sie wertlos. Darüber könnte man natürlich mal nachdenken, aber das wäre ja Arbeit die DU dir machen musst, nicht andere...
guck einfach nochmal in meinen beitrag da sind ja Einrückungen und ja er wird laufen. der vergleich soll dein Computer im vergleich zu anderen Computern sein bsp: der pc hat 3 Sekunden gebraucht die Durchschnittszeit für diese aktion beträgt 4 Sekunden dein Computer liegt über dem durchschnitt.
@jan.b: Drei Sekunden um die Zahlen von 1 bis 999 auszugeben? Also gut, auf meinen C64 steht auch „personal computer“ auf dem Rechner, und der braucht dazu länger, aber auf was für einer aktuellen Hardware hast Du das denn gemacht? Selbst auf einem 486er mit DOS und interpretiertem BASIC dürfte das nur einen Bruchteil einer Sekunde benötigen.
Und auch auf dem gleichen Rechner und mit mehr Zahlen hängt das extrem davon ab *wo* diese Zahlen ausgegeben werden. Denn das ausgeben der Zahlen auf dem Bildschirm ist letztlich was dieser unsinnige Benchmark misst. Es macht einen Unterschied ob man das in einem echten Textdisplay ausführt wo jedes Zeichen durch ein oder zwei Bytes repräsentiert wird, oder einem Framebuffer, oder in einer GUI, und da dann jeweils ob und in wie weit Hardwarebeschleunigung von der Grafikhardware dabei zum Zug kommt. Und was bringt so ein Vergleich am Ende? Also insbesondere uns, denn wir sollen uns ja die Mühe machen diesen Unsinn laufen zu lassen‽
spaß beiseite. es war nur ein Laptop. es war nur ein Beispiel, es waren etwas über 3.5 Sekunden. die Shell war (falls keine retorische frage)IDLE (Python 3.5 64-bit) (falls doch war es trotzdem IDLE (Python 3.5 64-bit)) Hardware war ein i7-5500U. und ich dachte, dass es eh jeder in der selben Shell ausgeben lässt aber ganz durchdacht war das vielleicht wirklih nicht.
BlackJack hat's ja schon gesagt: als Benchmark ist das total unsinnig, weil das Programm der größten Teil der Zeit mit I/O (=Ausgabe der Daten nach STDOUT) verbringt. Die CPU langweilt sich da ziemlich.
Wenn du die Rechenleistung deiner CPU testen willst, dann muss du schon was nehmen, was CPU-bound ist, also wo die CPU der limitierende Faktor ist. Ein gängiges Beispiel ist Primzahlenberechnung. Ein einfaches Beispiel findest du z.B. in der Python-Doku: https://docs.python.org/3/library/concu ... or-example
Das Beispiel lässt sich auch ganz einfach de-parallelisieren wenn man möchte.