Robert Bienert: C++ als CGI - Anfänge und Sicherheitsaspekte

Beitrag lesen

Moin!

Es ist performanter, die komplette Ausgabe in einem Rutsch zu erledigen, als dafür sehr oft cout << aufzurufen. C und C++ bieten dir an, so genannte Zeichenkonstanten bis zu einer Länge von 500+etwas über mehrere Zeilen zu notieren:

cout << "Content-Type: text/html; charset=utf-8\r\n"
        "\r\n"
        // HTML-Teil
        "<?xml version="1.0" encoding="utf-8"?>\n"
        "…";


> >   
> > Supi! Das ist doch schon mal eine ordentliche Steigerung.  
>   
> Die Optimierung (also statt vielen cout-Vorgängen einen einzigen zu schreiben, der dann auf mehrere Zeilen verteilt wird) hat nichts gebracht. Offensichtlich erkennt der g++-Compiler der GNU Compiler Collection in der Version 4.0 dies automatisch, und sammelt die cout-Befehle zu einem einzigen zusammen.  
  
Wie kannst du das mit Sicherheit sagen? Hast du einen Benchmark versucht oder steht das in der Manual?  
  

> Ob die vorherigen Versionen das auch gemacht haben, kann ich nicht sagen, der 4.0er macht es auf jeden Fall.  
  
Mir ist ein solches Verhalten eines Compilers generell nicht bekannt, weil er da schon fast semantisch denken müsste.  
  

> Ach ja, und warum ich eine XHTML-Datei überhaupt als "text/html" ausgeliefert habe: Weil der IE das nicht versteht...  
  
OK, aber der IE versteht dann auch nicht `<?xml version="1.0" ?>`{:.language-xml} als erste Zeile, sondern möchte den Doctype direkt sehen.  
  
Viele Grüße,  
Robert