Поставил на рабочий ноут Visual Studio 11 Developer Preview.
Погонял разные самопальные бенчмарки типа решета Эратосфена, vector<int>
vs vector<bool>
, std::string
vs char*
и т.д., пытаясь выявить улучшения или ухудшения в оптимизации. Лично я ничего кардинального не выявил по сравнению с версией 10.
Очевидно, что статический анализ кода и его безопасность в целом сейчас как никогда в моде, поэтому производители компиляторов постепенно закручивают гайки, превращая предупреждения в ошибки.
Например с ключом /sdl
Студия 11 будет считать приведенные ниже предупреждения ошибками.
Warning | Command line switch | Description |
---|---|---|
C4146 | /we4146 | A unary minus operator was applied to an unsigned type, resulting in an unsigned result |
C4308 | /we4308 | A negative integral constant converted to unsigned type, resulting in a possibly meaningless result |
C4532 | /we4532 | Use of "continue", "break" or "goto" keywords in a __finally/finally block has undefined behavior during abnormal termination |
C4533 | /we4533 | Code initializing a variable will not be executed |
C4700 | /we4700 | Use of an uninitialized local variable |
C4789 | /we4789 | Buffer overrun when specific C run-time (CRT) functions are used |
C4995 | /we4995 | Use of a function marked with pragma deprecated |
C4996 | /we4996 | Use of a function marked as deprecated |
Ссылки по теме: