Seite 10 von 202 ErsteErste ... 678910111213142060110 ... LetzteLetzte
Ergebnis 136 bis 150 von 3026

Thema: [Programmiererstammtisch] "Zum ächzenden Compiler"

  1. #136
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.904
    Mal eine andere Civ4-Projektidee: Vodka, mein Kampfsimulator, koennte mal eine Ueberholung gebrauchen. Er wird hier recht oft genutzt, aber das Interface und die Ausgabe sind sehr rudimentaer, die Berechnung ist langsam.

    Ich koennte mir in etwa vorstellen:

    • Reimplementierung in C++ mit einem passenden Web-Framework
    • Moderne Neugestaltung des User-Interface (drag/drop, mouseover, filter), beispielsweise Elemente wie so etwas hier http://raidcomp.mmo-champion.com
    • Neugestaltung der Ausgabe (Charts, Farben, forum-code zum Kopieren)
    • Speicherbare und verlinkbare Kampf-aufstellungen und Resultate
    • Flexiblere Angriffsreihenfolge (oben->unten, kollateral / beste chancen)
    • Echte Berechnung der Waherscheinlichkeiten des Kampfausganges statt experimenteller Ermittlung
    • L10N
    • ...


    Ich hab leider keine Zeit, koennte aber entsprechende Impulse geben und meine Erfahrung beisteuern.

  2. #137
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Echte Berechnung für die Wahrscheinlichkeiten? Das wird aber verdammt kompliziert werden, wenn Einheiten mit Fähigkeit für Kollateralschaden als Angreifer dabei sind (oder auch mit Flankierungsschaden).
    Hinzu kommen noch Erstschlagsfähigkeit und Chance zum Erstschlag, was es noch mal komplizierter macht.
    Der Wahrscheinlichkeitsbaum wird sehr groß werden. Aber man könnte unwahrscheinliche Zweige entfernen. (Also Zweige, bei denen man schon während der Berechnung sage kann, dass sie für die Berechnung defacto keine Rolle spielen).
    Dennoch wird es kompliziert. Ich denke, eine Simulation wäre vielversprechender. Der Benutzer könnte ja die Anzahl der simulierten Runden mit angeben, je nachdem hat man dann eine entsprechende Genauigkeit. Unter 100 Runden sollte es aber eher nicht sein.


    Mit Web-Frameworks kenne ich mich nicht aus, nur mit GUI-Programmierung, von daher werde ich da nicht helfen können.

  3. #138
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Weiß jemand, wo man Tabs und Leerzeichen darstellen bei Visual Studio 2010 deaktvieren kann? Ich habe irgend eine Tastenkombi wohl ausversehen aktiviert. Dabei habe ich nur Shift und Strg gedrückt in den Moment. Ich finde dazu auch nichts in den Optionen.

    edit: Durch ausprobieren habe ich es wegbekommen. Wissen tu ich aber immer noch nicht, welcher Shortcut das auslöst.
    Geändert von rucivfan (24. Mai 2014 um 11:35 Uhr)

  4. #139
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.402
    ...also, ich hab mal eine Frage an die Erfahrenen. Es geht um c++.


    Wenn ich ein

    const bool blabla = false

    definiere, und später dann

    if(blabla)
    machwas;
    else
    machwasanderes;


    benutze, kriegt der Compiler das hin? Kostet das if noch Zeit? So ist ja viel weniger fehleranfällig als mit irgendwelchen Makros.
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  5. #140
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    Definiere, was später heißt und du bekommst eine passende Antwort.

    blabla muss noch "am Leben" sein.

    edit: Was für Zeit denkst du, kostet dich ein if bei einen Boolean? Weniger Zeitkosten gehen da einfach nicht, außer die Abfrage entfällt.

  6. #141
    Registrierter Uses Avatar von fuchs87
    Registriert seit
    26.08.09
    Beiträge
    4.436
    Das kommt auf den Compiler an, würde ich sagen. Falls er intelligent ist, wird er den nur das "machwas" übernehmen (ohne Abfrage) und den else-Zweig verwerfen. Falls nicht, kostet es mehr Zeit als mit Makro.
    Sicher kannst du dir da imho nur dann sein, wenn du den disassemblierten Code betrachtest.
    #KriegIstFrieden
    #FreiheitIstSklaverei
    #UnwissenheitIstStärke

  7. #142
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.017
    In den Fall oben würde aber der else-Zweig genommen werden und nicht der if-Zweig.

  8. #143
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.904
    Zitat Zitat von Gullix Beitrag anzeigen
    ...also, ich hab mal eine Frage an die Erfahrenen. Es geht um c++.


    Wenn ich ein

    const bool blabla = false

    definiere, und später dann

    if(blabla)
    machwas;
    else
    machwasanderes;


    benutze, kriegt der Compiler das hin? Kostet das if noch Zeit? So ist ja viel weniger fehleranfällig als mit irgendwelchen Makros.
    Ja. Definitiv.

    @rucivfan: blabla muss ja noch im scope sein, sonst wuerde es ja garnicht kompilieren.

    Makros brauchst du in C++ sowieso nur in Ausnahmefaellen.

    @fuchs87: Zeige mir bitte mal einen ernstzunehmenden Compiler der das mit Defaulteinstellungen nicht schafft.

  9. #144
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Irgendwelche Python-JIT-Compiler scheitern daran bestimmt


    Den Vorteil eines If-Statements mit einer const-Variablen gegenüber einer Kapselung via #if MAKRONAME > 0 sehe ich aber nicht wirklich. Es hat beides seine Berechtigung. Beim Makro ist die Intention des Programmierers ihmo klarer zu sehen.

  10. #145
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.402
    ...also, danke


    Zitat Zitat von rucivfan Beitrag anzeigen
    edit: Was für Zeit denkst du, kostet dich ein if bei einen Boolean? Weniger Zeitkosten gehen da einfach nicht, außer die Abfrage entfällt.
    Ist halt das Codestück, das der Haupt-Flaschenhals ist, weil es sehr oft aufgerufen wird. Mehrere Schleifen ineinander. Wenn es Zeit kosten würde, würde ich halt die Abfrage if(blabla) weiter nach außen machen, aber so ist halt lesbarer.
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  11. #146
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.904
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Irgendwelche Python-JIT-Compiler scheitern daran bestimmt


    Den Vorteil eines If-Statements mit einer const-Variablen gegenüber einer Kapselung via #if MAKRONAME > 0 sehe ich aber nicht wirklich. Es hat beides seine Berechtigung. Beim Makro ist die Intention des Programmierers ihmo klarer zu sehen.
    Makros sind eine komplett orthogonale Sprache - voellig losgeloest von der Semantik und den ueblichen Abstraktionsschichten von C/C++. Damit machen sie saemtliche Fehlermeldungen kaputt. Prinzipiell muss man verdammt aufpassen, um sich nicht staendig in den Fuss zu schiessen. Debugging ist natuerlich auch unmoeglich.

    Hier mal ein ganz besonderes Juwel:

    Code:
            if (
    #if SIZEOF_VOID_P == 4
                /* 32 bit architecture */
                p == NULL ||        /* default is yes */
    #else
                /* 64 bit architecture */
                p != NULL &&        /* default is no */
    #endif
                strcasecmp(p, "yes") == 0)
                    MT_create_thread(&GDKvmtrim_id, GDKvmtrim, &GDK_mem_maxsize,
                                     MT_THR_JOINABLE);
    
            return 1;

  12. #147
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.904
    Zitat Zitat von Gullix Beitrag anzeigen
    ...also, danke




    Ist halt das Codestück, das der Haupt-Flaschenhals ist, weil es sehr oft aufgerufen wird. Mehrere Schleifen ineinander. Wenn es Zeit kosten würde, würde ich halt die Abfrage if(blabla) weiter nach außen machen, aber so ist halt lesbarer.
    Selbst wenn blabla nicht const(expr) ist, hat der Compiler deines Vertrauens etwas auf Lager: loop unswitching. Prinzipiell gilt. Erstmal so programmieren, dass der code gut deine Intention wiedergibt - dann systematisch die Performance analysieren und optimieren. Meistens wird deine Performance eh an IO/Speicher/Cache etc haengen als an einem popeligen if. Man muss schon wirklich viel Ahnung von Compileroptimierungen und Mikroarchitekturdetails haben, um Nicht-Algorithmische-Optimierungen sinnvoll im Vorfeld einzuplanen. Ansonsten gilt: Premature optimization is the root of all evil.

  13. #148
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.402
    ...also, das sind Koordinaten, und die ganze Sache soll umschaltbar 2d oder 3d sein. Deshalb gibts ne globale Konstante const bool dim3.


    Ich reserviere auf jeden Fall Speicher für alle drei Koordinaten, und im 2d-Fall sind halt alle z-Koordinaten Null. Aber bei der Abstandsberechnung muss ich ja im 2d-Fall nicht mehr die z-Koordinaten vergleichen. Abstandsberechnung wird sehr oft aufgerufen, deshalb würde es sich da lohnen. Man muss leider pro Richtung eine Verzweigung machen, wegen periodischen Randbedingungen, deshalb geht dx^2 + dy^2 + dz^2 (was ja immer die gleiche Laufzeit hätte) nicht.
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  14. #149
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Muss die 2d-3d Sache zur Laufzeit entschieden werden? Oder reicht es zur Kompilierungszeit?

  15. #150
    ¡Olé! Avatar von Harleen
    Registriert seit
    07.01.06
    Ort
    Bremen
    Beiträge
    9.359
    Wenn die Alternative ein #define ist, dann wird es wohl schon zur Compile-Zeit feststehen. ;-)

    Eine weitere Alternative wäre hier, auf template Metaprogrammierung auszuweichen. Dann wird der Ausdruck garantiert vom Compiler ausgewertet - Auch im Debug-Build. Aber es fördert nicht unbedingt die Lesbarkeit.

Seite 10 von 202 ErsteErste ... 678910111213142060110 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •