Mirage писал(а):Я что-то пропустил и разработчики gcc решили задачу автоматического распараллеливания?
Судя по исходнику, не решили.
В GCC 4.4. вроде с 1, распараллеливание автоматизировано и дает ощутимый прирост производительности на многоядерных процессорах. Кроме того с 4.4.0 циклы оптимизируются автоматом(и еще тыкают пальцами, что не Сишники - быдлокодкры
) и много другого делается без ума программиста для хорошего показателя откомпилированного кода.
А почему этот же фрактал, скомпилированный FPC только один проц нагружает?
Очевидно он в одном процессе работает.
Там однопоточный код? И где смысл сравнивать многопоточный и однопоточный?
Особо не вникал в особенности кода, а версию GCC, применяемую в тестах, не нашел, может плохо искал или слепой.
Сравнивать однопоточный и многопоточный код на одноядерном процессоре почти не имеет смысла. Даже однопоточный будет работать несколько быстрее, но на многопроцессорных системах прирост производительности с каждым дополнительным ядром растет.
В тесте почти четырехкратное отставание FPC на четырехядерном процессоре, это и наталкивает на мысль, что был использован GCC 4.4.x, кстати именно его сейчас во всех тестах и применяют, но это некоторого рода лукавство, хотя смотря с какой стороны смотреть.