- @0xd34df00d: *c++ *qt *говно *gccОхренеть, я, похоже, нашел баг в оптимизаторе gcc. Иначе не могу объяснить, почему (по смыслу) постановка const в объявлении переменной var (чтобы было const T) устраняет весьма странные ошибки, похожие на пиздецовый срыв стека.
U foo (const T& t)
{
...
}
T var = someMap [key];
foo (var);9 months ago; 12 replies - @0xd34df00d: *c++ *gcc *неговно *stlЕще одна причина осилить STL и не прикрываться наличием в Qt тех же алгоритмов или вообще переизобретением колеса: gcc.gnu.org
Привет qutim'овцам, например.12 months ago - @0xd34df00d: *clang *c++ *gccНу и да, типичные размеры в Release-конфигурации (-O2, остальное не так важно), gcc vs clang, в байтах:
Основной бинарь личкрафтов: 1088170 vs 1146148 — ~5.4% разницы, считая относительно среднего.
Вспомогательные библиотеки: 900103 vs 924004 — ~2.6% разницы
Крупный плагин, мало всяких разных шаблонов: 1143677 vs 1216958 — ~6% разницы (на мелком плагине примерно такая же разница).
Средний плагин, сравнительно много всякой шаблонной мути (boost.graph, опирающийся на mpl, как известно): 581440 vs 631057 — аж 12%. Да, шаблоны clang оптимизирует хреновее.
Разница без особых шаблонов — 3-6%.
С шаблонами все печальнее.
А вообще это все бег в мешках, разницу в производительности-то хрен оценишь. - @0xd34df00d: *clang *gcc *c++Итак, некоторые субъективные наблюдения в результате работы с clang.
• Перейти на него легко — достаточно заменить c++/gcc в CMakeCache.txt на clang. Если код изначально не затачивался на разные компиляторные фишки и писался более-менее в соответствии со стандартом, то заточки особо не потребуется.
• Код компилирует строже, чем gcc, однако, местами поведение, скажем так, неочевидно. Например, он типа как инстанциирует шаблон даже там, где не просят (#826889/20).
• Код, им собранный, вполне работоспособен. Личкрафты запустились и успешно работают, например.
• По ощущениям собирает сильно быстрее, чем gcc. Особенно суровый шаблонный код с mpl/графами/етц. По цифрам — сборка clang'ом личкрафтов заняла 6 минут 47 секунд, gcc собирает минут за 8 с небольшим.
• Не оценил я прелести его сообщений об ошибках вообще. На бустовые пока не нарывался, а легонькие и так научился читать, что ли.13 months ago; 14 replies - @0xd34df00d: *c++ *говно *gccЖуйк, запомни. Если тебе gcc высирает три экрана сообщений об ошибках, то это может быть только потому, что у функтора отсутствует конструктор по умолчанию. I love C++!13 months ago; 16 replies
- @0xd34df00d: *c++ *gcc *clangВсе, достали высеры gcc. Пошел ставить clang (в портажах 2.7), заодно посмотрю, наконец, чо за зверь такой.13 months ago; 29 replies
- @0xd34df00d: *linux *gcc *говноdemo.c: In function 'demo_render':
demo.c:525: internal compiler error: in expand_scalar_variables_expr, at graphite.c:4399
Please submit a full bug report,
with preprocessed source if appropriate.13 months ago; 12 replies - @0xd34df00d: *webkit *qt *gcccompiling bindings/js/JSCustomSQLTransactionCallback.cpp
../../sqlite/sqlite3.c:76126: предупреждение: пропущен инициализатор
../../sqlite/sqlite3.c:76126: предупреждение: (где-то рядом с инициализацией для ‘sqlite3Apis.aggregate_count’)
где-то рядом
- @0xd34df00d: *leechcraft *arch *gccТеперь совместим с gcc 4.5.
// Этот псто, как и фикс, написан из туалета. Символизирует.- @L29Ah: А причём тут говнарч?
- @0xd34df00d: *c++ *gcc *releasegcc.gnu.org
Среди прочего:
• A new link-time optimizer has been added (-flto). ... This enables interprocedural optimizations to work across different files (and even different languages), potentially improving the performance of the generated code.
• If a header named in a #include directive is not found, the compiler exits immediately. This avoids a cascade of errors arising from declarations expected to be found in that header being missing. (меня это поведение очень затрахало, например, часто сообщение о ненайденном инклюде тонет в потоке следующего за этим высера).
• Improved experimental support for the upcoming C++0x ISO C++ standard, including support for raw strings, lambda expressions and explicit type conversion operators. (ЛЯМБДЫ НАКОНЕЦ ЛЯМБДЫ ХОТЕТ НАКОНЕЦ ЛЯМБДЫ ДААААААААА)
• Compilation time for code that uses templates should now scale linearly with the number of instantiations rather than quadratically, as template instantiations are now looked up using hash tables.
• In C++0x mode local and anonymous classes are now allowed as template arguments, and in declarations of variables and functions with linkage, so long as any such declaration that is used is also defined
• Support for <future>, <functional>, and <random>.
• An experimental profile mode has been added. This is an implementation of many C++ standard library constructs with an additional analysis layer that gives performance improvement advice based on recognition of suboptimal usage patterns.
• Python pretty-printers have been added for many standard library components that simplify the internal representation and present a more intuitive view of components when used with appropriately-advanced versions of GDB.
Фап-фап.