ARM cortex-a8: G CC 8,3 против 6,3: падение производительности - PullRequest
0 голосов
/ 25 мая 2020

После обновления моего дистрибутива linux на моей плате BeagleBoneBlack я обнаружил, что новый G CC 8.3 дает значительно более медленный код, чем прежний G CC 6.3.

С ( неизменяемая) строка параметров компиляции выглядит так: FLAGS = -flto -marm -march=native -mtune=native -fPIC -Wall -std=c99 -g -Ofast падение производительности составило около 10%. В моем коде широко используется нестандартная (т.е. ее нет в дистрибутиве ОС) https://github.com/ggambetta/libz80 библиотека, и сразу после того, как я перекомпилировал ее с более новой G CC, производительность упала примерно на 10%.

Еще одна странность заключалась в том, что в G CC 6.3 изменение -marm на -mthumb неизменно приводило к более медленному коду, с более новым G CC незначительно улучшение .

Почему более свежие версии G CC, предположительно с более сложной оптимизацией, дают худшие результаты?

ps: на самом деле мой код НЕ является эмулятором (реального времени), он только эмулирует ЦП Z80, а не окружающая среда, и больше похожа на обычную виртуальную машину только для Z80, работающую на полной скорости в течение многих секунд и минут. Кроме того, помимо libz80.so, есть главный исполняемый файл, который оставался неизменным между измерениями, но все же он мог уменьшить падение производительности, которое наблюдается в процентах. Так что реальное падение производительности может быть еще больше.

...