C++ Visual Studio verarscht mich, programmier anfänger

andy_m4 schrieb:
Gerade in Bezug auf Effizienz wandert ja ohnehin immer mehr in den Compiler. Das ist sozusagen in Software gegossenes Know-How damit man sich eben nicht mehr darum kümmern muss selbst überall für Effizienz zu sorgen und damit sich sozusagen sein Quelltext zu beschmutzen.

Stimmt, aber gerade in C++ kann der Compiler deutlich mehr optimieren als in einigen anderen Sprachen: Teilweise können im Code abstrahierte Klassen und vieles andere einfach "übersprungen"/rausgekürzt werden. Das ist natürlich in C# und Konsorten nicht möglich, dafür hat man in C++ Reflection nicht im Standard und muss dafür workarounds machen, falls benötigt.
Aber wenn ich meine, das mein Programm ausreichend getestet ist und Geschwindigkeit tatsächlich ein Problem ist kann ich diese Checks entweder pro Variable oder pro Modul oder gar global ausschalten.
Dann hast du dir aber dann auch MINDESTENS so viele Gedanken darüber gemacht wie du es auch in C++ gemacht hättest. Zusätzlich geht das mit Erfahrung immer schneller von der Hand ;)
Da Development-System, Compiling und das eigentliche Programm nicht wirklich getrennt sind, kann ich sozusagen am lebenden Programm arbeiten. Wenn ich irgendwas ändern möchte, dann mache ich das einfach, das Laufzeitsystem kompiliert die entsprechende Funktion neu und die Änderung ist sofort verfügbar.
s.o.
 
The Ripper schrieb:
Stimmt, aber gerade in C++ kann der Compiler deutlich mehr optimieren als in einigen anderen Sprachen:
Das hat mit der Sprache ansich erst mal nix zu tun. Der Compiler kann immer dann gut optimieren, wenn er dazu ausreichend Informationen bekommt.
Bei C++ bekommt er die aufgrund des Aufbaues der Sprache halt eher als bei anderen Sprachen.
Ein int ist eben ein int und er kann demensprechend optimieren (z.B. ohne Weiteres direkt mit Registern rechnen).
Beim Lisp-Typ Number geht das halt nicht, weil Lisp damit rechnen muss das diese Zahl auch größer wird als den Bereich den int abdeckt.
Hier hat der Compiler also weniger genaue Information.
Wenn ich aber weiß das die Zahl eh nicht größer als der int-Bereich wird kann ich dem Lisp-Compiler das ggf. mitteilen und dann optimiert der den erzeugten Code genau so wie es der C++ Compiler tun würde.



The Ripper schrieb:
Aber wenn ich meine, das mein Programm ausreichend getestet ist und Geschwindigkeit tatsächlich ein Problem ist kann ich diese Checks entweder pro Variable oder pro Modul oder gar global ausschalten.
Dann hast du dir aber dann auch MINDESTENS so viele Gedanken darüber gemacht wie du es auch in C++ gemacht hättest. Zusätzlich geht das mit Erfahrung immer schneller von der Hand ;)
s.o.
Der unterschied ist, ich muss mir diese Gedanken erst dann machen, wenn Geschwindigkeit tatsächlich zu einem Problem wird. Und dann kann ich dank Profiling auch relativ genau einkreisen, wo denn die "bottlenecks" liegen und brauch dann auch nur in dem Bereich ggf. Variablentypen genauer definieren.

Gruß
Andy
 
Zurück
Oben