Cyberfauliii Geschrieben 30. Oktober 2002 Geschrieben 30. Oktober 2002 Hallo ... ich wollte heute meinem Programm eine Prozentleiste hinzufügen nun habe ich aber das problem das ich vorher berechnen muß wie lange er für diesen Vorgang (Zahlen Sortieren) braucht . Bei kleineren Zahlen z.B. 10000 ist das kein Problem denn wenn ich erst 10000 Zahlen generiern lasse und anschließend sortiere braucht er 1,983 Sekunden und bei 20000 das 4 fache also 7,9sek .. jedoch stimmt das Quadrieren bei der Zahl 100000 nichtmehr .. denn er braucht 365 sekunden und nicht die berechneten 190 Sekunden .. !! Kann mir da vielleicht jemand nen Tip geben wie die CPU Rechenkurve aussieht ?? Danke schonmal iom voraus .. ! Mfg Cyberfauli Zitieren
Klotzkopp Geschrieben 30. Oktober 2002 Geschrieben 30. Oktober 2002 100000 hoch zwei übersteigt den Wertebereich eines 32-Bit-Integers. Rechne doch einfach mit double, oder brauchst Du die Genauigkeit auf 1/1000-Sekunde? Zitieren
Cyberfauliii Geschrieben 30. Oktober 2002 Autor Geschrieben 30. Oktober 2002 Hi also das Problem ist .. ich will ja so einen Balckebn haben der von 0 - 100 % geht das problem ist das ich ja vorher berechnen muß wie lange er braucht . bei 10000 funktinirt das noch denn da braucht er 1,9sekunden , bei 20000 braucht er 7,8 sekunden ... das sieht erstmal nach einer Quadratischen sacvhe aus doppelter wert 4fache zeit. Aber wenn ich das jetzt weiter mache zum Beispiel mit 100000 braucht er 295sekunden und dann stimmt die rechnung mit n² nichtmehr .. !! Verstehst du mein Problem ?? P.S.: ICQ 130277048 im Moment Online Zitieren
Klotzkopp Geschrieben 30. Oktober 2002 Geschrieben 30. Oktober 2002 Originally posted by Cyberfauliii Verstehst du mein Problem ?? Sicher Verstehst Du meinen Lösungsvorschlag? Rechne mit double statt mit int. Ein double kann 100.000 zum Quadrat darstellen, ein int nicht. Zitieren
Cyberfauliii Geschrieben 30. Oktober 2002 Autor Geschrieben 30. Oktober 2002 Jetzt verstehe ich garnichts mehr .. !!! ich weiß das es mit der normalen Quadratrechnung nicht geht das der CPU irgendwie mit logarythmus arbeitet oder so ... hier mal die adresse des Programms vielleicht kannst du ja mal reinschauen vielleicht siehste ja was .. aber das mit INT und DOUBLE ist mir jetzt zu hoch .. ich hatte eine Variable Deklariert welche "vorraus" hieß diese habe ich wie folgt berechnet ich habe mir den grundstein für die Zahl 10000 Ausgerechnet diese war 1,9 Sekunden vorraus=n/10000; vorraus=vorraus*vorraus; //oder auch vorraus=pow(vorraus,2); cout<< " Vorraussichtliche Rechen Zeit"<< vorraus ; so wie schon gesagt mit dieser rechnung stimmte es wenn die zahlen klein blieben .. aber nach oben hin z.B. 100000 verändert sich das Quadrat (²) zu hoch 2,7... !!! Oder sehe ich das falsch .. das hat doch nix mit dem Integer zu tun denn VORRAUS ist (war)deklariert als FLOAT wert !!! Zitieren
Orffi Geschrieben 30. Oktober 2002 Geschrieben 30. Oktober 2002 Es gibt da ein viel generelleres Problem: Du kannst vorher nicht wissen, wie lange Du brauchst, um Deine Zahlen zu sortieren. Das hat einen ganz einfachen Grund. Heutige Betriebssysteme sind Multitasking-Betriebssysteme. Das bedeutet, daß immer mehrere Prozesse/Threads laufen. Je nach dem, wie die CPU ausgelastet ist, wird Dein Programm schneller oder langsamer sein. Und: Was machst Du, wenn das Programm auf einem langsameren Rechner läuft? Das sind alles Probleme, die dagegen sprechen, es über die Zeit zu lösen. Man könnte sich vielleicht überlegen, ob man entscheiden kann ob, eine Zahl schon am richtigen Platz ist oder nicht und dann kann man einfach sagen: Zahlen, die am richtigen Platz sind geteilt durch Zahlen insgesamt. HTH Jan Zitieren
Cyberfauliii Geschrieben 30. Oktober 2002 Autor Geschrieben 30. Oktober 2002 @Orffi Ja das ist schon klar ,... es ist jha auch nur ein Programm um C++ kennen zulernen ... !! Aus spielerein lernt man .. und die Anzeige muß ja auch nicht vollkommen genau sein es reicht ja ungefähr ... wenn er plötzlich von 98% auf 100% springt ist das nicht willt ! Das machen schließlich viel installationsprogramm, aber es wäre nett wenn es irgendwie lösbar währe .. !! Zitieren
Klotzkopp Geschrieben 30. Oktober 2002 Geschrieben 30. Oktober 2002 Originally posted by Cyberfauliii so wie schon gesagt mit dieser rechnung stimmte es wenn die zahlen klein blieben .. aber nach oben hin z.B. 100000 verändert sich das Quadrat (²) zu hoch 2,7... !!! Die Rechnung ist o.k, die Formel nicht. 1,9 mal (n/10000) zum Quadrat ist einfach keine gute Abschätzung für Deinen Algorithmus. Aus den drei Werten, die Du genannt hast, könnte man folgendes machen: *Lina rauskram* float x = n / 10000.0; float sekunden = 4.3 * x * x - 7 * x + 4.7; Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.