[C++] Warum trotz allem Visual Studio-C++-Compiler
-
- Beiträge: 75
- Registriert: 24.07.2002, 00:00
- Wohnort: Bremen
- Kontaktdaten:
[C++] Warum trotz allem Visual Studio-C++-Compiler
Und trotzdem bleibt ihr alle bei Microsoft-Compilern...
[Moderator-Aktion: Thema abgespalten von http://zfx.info/viewtopic.php?f=11&t=2501]
[Moderator-Aktion: Thema abgespalten von http://zfx.info/viewtopic.php?f=11&t=2501]
Zuletzt geändert von Schrompf am 21.08.2012, 15:08, insgesamt 1-mal geändert.
- Schrompf
- Moderator
- Beiträge: 5163
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: [C++] Mikrooptimierungs-Log
Weil der GCC unglaublich langsam ist. Irgendwann bau ich mir mal eine weitere Build-Konfiguration, die den GCC zur Erstellung der Release-Version benutzt. Um die letzten paar Prozent Tempo rauszuholen. Die IDE und der Debugger von Microsoft sind jedenfalls ungeschlagen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: [C++] Mikrooptimierungs-Log
Wenn überhaupt, wie Schrompf schon sagte, würde Clang noch in Frage kommen (welcher übrigens ratzeschnell ist), da eben viele Personen nicht auf die IDE und den Debugger von Visual C++ verzichten wollen. GCC kann keine PDB-Informationen ausgeben, weswegen es nicht mit dem Visual-C++-Debugger zu gebrauchen ist. Bei Clang gibt es wenigstens etwas Bewegung, als dass es einen GSoC-2012-Vorschlag für PDB-Support gab, welcher allerdings nicht aufgegriffen wurde.
Oder um es kurz zu machen: Wir bleiben nicht wegen des Microsoft Compilers, sondern wegen der IDE und des Debuggers und trotz des Microsoft Compilers. Mit Abstand den schnellsten Code kriegt man übrigens mit dem ICC-Compiler. Leider hat er auch ziemlich beschränkten C++11-Support.
Oder um es kurz zu machen: Wir bleiben nicht wegen des Microsoft Compilers, sondern wegen der IDE und des Debuggers und trotz des Microsoft Compilers. Mit Abstand den schnellsten Code kriegt man übrigens mit dem ICC-Compiler. Leider hat er auch ziemlich beschränkten C++11-Support.
- dot
- Establishment
- Beiträge: 1746
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: [C++] Mikrooptimierungs-Log
Abgesehen davon, wäre mir sehr neu, dass der GCC wirklich relevant schnelleren Code erzeugt als der MSVC. Bei den meisten Benchmarks, die ich so in Erinnerung hab, war es eigentlich sogar anders rum, wobei der Abstand meistens relativ klein war. Ich weiß aber nicht wirklich, wie es im Moment genau aussieht...
Und auch wenn hier oft drüber geschimpft wird: Es gibt sicherlich schlechtere Compiler als MSVC. Unter Windows seh ich (evtl. vom ICC mal abgesehen) momentan ehrlich gesagt eigentlich keine vernünftige Alternative zu MSVC. MSVC ist nunmal einfach die native Toolchain der Plattform...
Wie mal jemand gesagt hat:
Btw: Vielleicht sollte man die Compilerdiskussion abspalten, um Krishtys Log nicht zu zerreißen.
Und auch wenn hier oft drüber geschimpft wird: Es gibt sicherlich schlechtere Compiler als MSVC. Unter Windows seh ich (evtl. vom ICC mal abgesehen) momentan ehrlich gesagt eigentlich keine vernünftige Alternative zu MSVC. MSVC ist nunmal einfach die native Toolchain der Plattform...
Wie mal jemand gesagt hat:
Gilt wohl für viele Dinge, auch Compiler...Bjarne Stroustrup hat geschrieben:There are only two kinds of languages: the ones people complain about and the ones nobody uses.
Btw: Vielleicht sollte man die Compilerdiskussion abspalten, um Krishtys Log nicht zu zerreißen.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [C++] Mikrooptimierungs-Log
GCC hat natürlich seine pathologischen Fälle, wo er wirklich schnelleren Code erzeugt. (Siehe Winning Entry vom Underhanded C Contest 06: http://underhanded.xcott.com/?page_id=15 )
-
- Beiträge: 75
- Registriert: 24.07.2002, 00:00
- Wohnort: Bremen
- Kontaktdaten:
Re: [C++] Warum trotz allem Visual Studio-C++-Compiler
Ich meinte das mal ganz unabhängig von irgendwelchen Performance- oder sonstigen Themen. Die Art und Weise, wie Microsoft mit Fehlern in ihren Produkten umgeht, finde ich sehr fragwürdig und wenig transparent. Ich habe jetzt hier schon mehrmals von Bugreports an Microsoft gelesen, die einfach ignoriert oder gelöscht wurden, trotz offensichtlicher Mängel in ihrer Software. Und es gibt ja noch andere Compiler als clang, gcc und den von Microsoft. Dazu kommt, dass zumindest clang und gcc sehr viel besseren C++11-Support bieten.
Die offenen Projekte entscheiden zwar auch ab und zu, dass Bugs zu unwichtig sind. Aber von spurlos verschwundenen Bugreports hab ich noch nichts gehört...
Die offenen Projekte entscheiden zwar auch ab und zu, dass Bugs zu unwichtig sind. Aber von spurlos verschwundenen Bugreports hab ich noch nichts gehört...
- kimmi
- Moderator
- Beiträge: 1412
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: [C++] Warum trotz allem Visual Studio-C++-Compiler
Hier würde ich einen Laden wie MS nicht gleich vorverurteilen. Auch im GCC-Umfeld wird zum Teil fragwürdig mit Fehlern umgegangen. Ab einem gewissen Nummer an Fehlern muss man halt priorisieren und wenn halt keine Kapa da ist, löst man die, die die größeren Schmerzen verursachen.
Und doch: auch bei OS-Projekten verschwinden gern mal Bugs, weil sie als Dubletten missverstanden wurden und schwupps, weg sind sie.
By the Way: G++ erzeugt bei manchen Benchmarks mit C++11 Support schnelleren Code als MS.
Gruß Kimmi
Und doch: auch bei OS-Projekten verschwinden gern mal Bugs, weil sie als Dubletten missverstanden wurden und schwupps, weg sind sie.
By the Way: G++ erzeugt bei manchen Benchmarks mit C++11 Support schnelleren Code als MS.
Gruß Kimmi
- Schrompf
- Moderator
- Beiträge: 5163
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: [C++] Warum trotz allem Visual Studio-C++-Compiler
[edit] @Florian: Da stimme ich Dir zu. Diese Art des Umgangs mit Kunden-Feedback ist eine Frechheit, die sich sonst kaum eine Firma leisten kann. Ich weiß jedenfalls, was mir in meinen bisherigen Jobs passiert wäre, wenn ich ein Ticket aus dem Issue Tracker gelöscht hätte...
Für mich persönlich war vor allem Edit&Continue ein echtes Alleinstellungsmerkmal. Und leider scheint das wirklich sonst keiner zu können. Aber wenn das jetzt unter x64 eh verloren ist, könnte man ja mal vorsichtig ausprobieren, wie weit die Konkurrenz in Sachen IDE und Debugger inzwischen gekommen ist. Soweit ich höre, ist der GDB immernoch eine Katastrophe.
Für mich persönlich war vor allem Edit&Continue ein echtes Alleinstellungsmerkmal. Und leider scheint das wirklich sonst keiner zu können. Aber wenn das jetzt unter x64 eh verloren ist, könnte man ja mal vorsichtig ausprobieren, wie weit die Konkurrenz in Sachen IDE und Debugger inzwischen gekommen ist. Soweit ich höre, ist der GDB immernoch eine Katastrophe.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: [C++] Warum trotz allem Visual Studio-C++-Compiler
Für mich war Edit&Continue immer sowas wie schwarze Magie. Man würde den Programmcode im laufenden Programm einfach ändern und danach verhalten sich Objekte einfach anders? Müssten da nicht fast immer schreckliche Dinge passieren, die das Programm direkt zum Absturz bringen?
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
- Schrompf
- Moderator
- Beiträge: 5163
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: [C++] Warum trotz allem Visual Studio-C++-Compiler
Nein, der Compiler meckert ja bei allen Änderungen, die eine weitere Ausführung gefährlich machen würden. Edit&Continue taugt nur für kleine Änderungen wie "oh, hier hab ich eine Umrechnung in XYZ vergessen" oder "Mal schauen, wie die KI reagiert, wenn ich den Sichttest auf XYZ begrenze". Speziell letzteres finde ich bei Splatter immer wieder toll.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: [C++] Warum trotz allem Visual Studio-C++-Compiler
Hast du mal einfach versucht, den aktuellen EIP zu verschieben (das ist der gelbe Pfeil links beim Debuggen; ja, den kann man verschieben; am besten direkt von einer Funktion in eine ganz andere!)? Da passieren lustige Sachen! Du bist in Endeffekt immer noch Herr über deine Maschine, und kannst den Prozessor so viel aus dem Tritt bringen, wie du willst; nur bei Ausnahmen sägt dir das Betriebssystem halt den Prozess ab.Jonathan hat geschrieben:Müssten da nicht fast immer schreckliche Dinge passieren, die das Programm direkt zum Absturz bringen?
Edit-and-Continue hat viele Einschränkungen:
Die Hervorhebungen sind von mir. Trotzdem kann man, besonders wenn man Arithmetik/Logik-Code schreibt (keine Seiteneffekte) sich so viel Programmier- und Testzeit ersparen.http://msdn.microsoft.com/en-us/library/0dbey757 hat geschrieben:The following C/C++ changes cannot be applied during a debugging session:
- Most changes to global or static data.
- Changes to executables that are copied from another machine and not built locally.
- Changes to a data type that affect the layout of an object, such as data members of a class.
- Adding more than 64k bytes of new code or data.
- Adding variables that require a constructor at a point before the instruction pointer.
- Changes that affect code that requires run-time initialization.
- Adding exception handlers, in some instances.
- Changes to resource files.
- Changes to code in read-only files.
- Changes to code without a corresponding PDB file.
- Changes to code that has no object file.
Außerdem sind Graphikanwendungen und Computerspiele einfach für Edit-and-Continue prädestiniert, weil ja jede Menge Zeugs jeden Frame neu berechnet wird; und damit wird also im nächsten Frame der neue Code benutzt.
-
- Beiträge: 75
- Registriert: 24.07.2002, 00:00
- Wohnort: Bremen
- Kontaktdaten:
Re: [C++] Warum trotz allem Visual Studio-C++-Compiler
Schrompf: Der GDB funktioniert super, das Problem ist, dass es einfach keine wirklich brauchbare GUI dafür gibt. Hat mich als GUI-Verweigerer bisher nicht gestört, aber mir ist klar, dass ich mit der Meinung ziemlich alleine dastehe...
Re: [C++] Warum trotz allem Visual Studio-C++-Compiler
Hm cool, dann muss ich das auch mal ausprobieren :)eXile hat geschrieben: Außerdem sind Graphikanwendungen und Computerspiele einfach für Edit-and-Continue prädestiniert, weil ja jede Menge Zeugs jeden Frame neu berechnet wird; und damit wird also im nächsten Frame der neue Code benutzt.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/