Was kann ein Programm schnell berechnen?



  • Dafür reicht vermutlich meistens das Sitzfleisch der Investoren nicht 😉



  • Erfahrung + Testen.





  • xroads42 schrieb:

    http://de.wikipedia.org/wiki/Komplexitätstheorie

    Das war mal voll daneben. Damit kannst du was über die Kömplexität von Algorithmen aussagen, aber nicht wie schnell ein Spiel auf einem PC laufen wird.

    Um zu wissen, wie schnell ein Programm auf einer Hardware läuft, müsstest du genau wissen, wie der Compiler das Programm genau übersetzt und wie schnell jeder dieser Befehle ausgeführt wird. Da ist es einfacher das Programm zu schreiben und es zu testen.



  • möööööööp schrieb:

    xroads42 schrieb:

    http://de.wikipedia.org/wiki/Komplexitätstheorie

    Das war mal voll daneben. Damit kannst du was über die Kömplexität von Algorithmen aussagen, aber nicht wie schnell ein Spiel auf einem PC laufen wird.

    Um zu wissen, wie schnell ein Programm auf einer Hardware läuft, müsstest du genau wissen, wie der Compiler das Programm genau übersetzt und wie schnell jeder dieser Befehle ausgeführt wird. Da ist es einfacher das Programm zu schreiben und es zu testen.

    Na ja, aber dafür kannst du ungefähr vorausahnen, wie sich die PC-Hardware entwickeln wird 🙄 . Da gab's doch den einen, dessen Namen mir nicht einfällt, der behauptet hat, dass sich die Computerleistung alle 1,5 Jahre verdoppelt. (na ja, bei Grafikkarten sieht mir das eher nach noch schneller aus)



  • möööööööp schrieb:

    xroads42 schrieb:

    http://de.wikipedia.org/wiki/Komplexitätstheorie

    Das war mal voll daneben. Damit kannst du was über die Kömplexität von Algorithmen aussagen, aber nicht wie schnell ein Spiel auf einem PC laufen wird.

    Um zu wissen, wie schnell ein Programm auf einer Hardware läuft, müsstest du genau wissen, wie der Compiler das Programm genau übersetzt und wie schnell jeder dieser Befehle ausgeführt wird. Da ist es einfacher das Programm zu schreiben und es zu testen.

    nö. überhaupt nicht daneben. wenn man ein Programm implementieren will sollte man vorher wissen ob es auf einer HW läuft. Wäre ja schön blöd wenn man Leute anstellt, die 2 bis 3 Jahre beschäftigt und dann feststellt, dass das Programm zu langsam ist. Was glaubst du wie die Leute die größere Simulationen schreiben(z.B. für das Wetter) das machen. Die kaufen sich bestimmt nicht 10 Crays und schauen dann was die auf diesen realisieren können, sondern überlegen sich erst wie viel HW Power die brauchen.
    Wenn einer meiner Algorithmen(und daraus bestehen auch Spiele) ne Laufzeit von O(n^(n!)) brauch ich das auf keiner Hardware zu implementieren.
    Mag sein dass das Ausprobieren bei kleineren Projekten, Firmen die schnell pleite gehen wollen und altbekannten Problemen funktioniert, aber bei den größeren nicht.



  • xroads42 schrieb:

    möööööööp schrieb:

    xroads42 schrieb:

    http://de.wikipedia.org/wiki/Komplexitätstheorie

    Das war mal voll daneben. Damit kannst du was über die Kömplexität von Algorithmen aussagen, aber nicht wie schnell ein Spiel auf einem PC laufen wird.

    Um zu wissen, wie schnell ein Programm auf einer Hardware läuft, müsstest du genau wissen, wie der Compiler das Programm genau übersetzt und wie schnell jeder dieser Befehle ausgeführt wird. Da ist es einfacher das Programm zu schreiben und es zu testen.

    nö. überhaupt nicht daneben. wenn man ein Programm implementieren will sollte man vorher wissen ob es auf einer HW läuft. Wäre ja schön blöd wenn man Leute anstellt, die 2 bis 3 Jahre beschäftigt und dann feststellt, dass das Programm zu langsam ist. Was glaubst du wie die Leute die größere Simulationen schreiben(z.B. für das Wetter) das machen. Die kaufen sich bestimmt nicht 10 Crays und schauen dann was die auf diesen realisieren können, sondern überlegen sich erst wie viel HW Power die brauchen.
    Wenn einer meiner Algorithmen(und daraus bestehen auch Spiele) ne Laufzeit von O(n^(n!)) brauch ich das auf keiner Hardware zu implementieren.
    Mag sein dass das Ausprobieren bei kleineren Projekten, Firmen die schnell pleite gehen wollen und altbekannten Problemen funktioniert, aber bei den größeren nicht.

    Haben Sachen zum Ausprobieren nicht O(n * n!) ?



  • xroads42 schrieb:

    möööööööp schrieb:

    xroads42 schrieb:

    http://de.wikipedia.org/wiki/Komplexitätstheorie

    Das war mal voll daneben. Damit kannst du was über die Kömplexität von Algorithmen aussagen, aber nicht wie schnell ein Spiel auf einem PC laufen wird.

    Um zu wissen, wie schnell ein Programm auf einer Hardware läuft, müsstest du genau wissen, wie der Compiler das Programm genau übersetzt und wie schnell jeder dieser Befehle ausgeführt wird. Da ist es einfacher das Programm zu schreiben und es zu testen.

    nö. überhaupt nicht daneben. wenn man ein Programm implementieren will sollte man vorher wissen ob es auf einer HW läuft. Wäre ja schön blöd wenn man Leute anstellt, die 2 bis 3 Jahre beschäftigt und dann feststellt, dass das Programm zu langsam ist. Was glaubst du wie die Leute die größere Simulationen schreiben(z.B. für das Wetter) das machen. Die kaufen sich bestimmt nicht 10 Crays und schauen dann was die auf diesen realisieren können, sondern überlegen sich erst wie viel HW Power die brauchen.
    Wenn einer meiner Algorithmen(und daraus bestehen auch Spiele) ne Laufzeit von O(n^(n!)) brauch ich das auf keiner Hardware zu implementieren.
    Mag sein dass das Ausprobieren bei kleineren Projekten, Firmen die schnell pleite gehen wollen und altbekannten Problemen funktioniert, aber bei den größeren nicht.

    Natürlich baust du keine O(n^(n!)) Algorithmen ein, wenn du "Echzeitspiele" baust. Aber Die Laufzeitkomplexität bringt dir nichts, wenn du wissen willst wie lang etwas auf welchem Rechner braucht. Du kannst nicht sagen O(n) plus O(n²) plus 12 mal O(1) und noch O(log(n)) beim Mausklick läuft auf einen 386er flüssig.
    Zufälligerweise arbeite ich in einer Firma, die SW für aufwendige Berechnungen herstellt. Bei uns rechnet keiner Anhand von Laufzeitkomplexität oder sonst was aus, wie lang was rechnen wird, weil es einfach unmöglich ist. Firmen die bei uns SW kaufen, wollen, dass das die Last gut auf ihren Rechnerclustern verteilt wird und kaufen einfach noch ein paar Rechner, wenn es zu langsam ist. Die Rechnerkosten sind bei dem SW-Preis egal.



  • der threadersteller hat nach Programmen gefragt(siehe titel), und spiele als(schlechtes) Beispiel genannt. echtzeitspiele und flüssiges spielen bringst du jetzt rein.
    Der threadersteller wollte auch nicht wissen wie lange etwas auf welchen rechner braucht, sondern woher man weiß ob man etwas einbauen kann ohne das es zu langsam wird.
    Und für solch eine Abschätzung kann man gut Komplexität eines Algorithmus nutzen.

    und ich habe nie behauptet, dass man mit hilfe der komplexitätstheorie ausrechnen kann, dass ein Programm 1,572sec braucht. Man kann aber sehr wohl abschätzen, ob es 1 minute, 10 std. oder 300 Tage bis zum ende des Programms/der Brechnung brauchen wird.
    dazu nutzt man auch http://de.wikipedia.org/wiki/Amortisierte_Laufzeitanalyse


  • Mod

    @x42!logged: Ich muss nöööööööö zustimmen. Ich mache ebenfalls beruflich aufwändige Berechnungen. Eine Laufzeitanalyse macht man nicht um festzustellen, ob ein Programm auf aktueller Hardware in absehbarer Zeit läuft. Das ist, wie dir schon erklärt wurde, praktisch unmöglich. Eine Laufzeitanalyse braucht man um aus mehreren möglichen Algorithmen den passendsten zu wählen und um abzuschätzen wie lang das Programm wohl laufen wird, wenn man die Eingabelänge erhöht (nachdem die Laufzeit für eine bestimmte Länge bereits bekannt ist).
    Und man kann natürlich aus bestehenden Programmen ableiten, wie schnell zukünftige Programme mit leicht modifizierten Algorithmen laufen werden.

    Aber wie gesagt, alles aus der Erfahrung. Eine Komplexitätsanalyse im Voraus bringt rein gar nichts.


Anmelden zum Antworten