Jump to content

    

CCS v.6 и TI CC 8.3.5 долго компиляет исходники

Доброе время суток и с наступившими праздниками! :ok:

 

Есть проект, на C/C++. Часть модулей программы компилируется очень долго: 2 - 10 минут. При этом оптимизатор съедает over 1 ГБ оперативной памяти компа. Причём, если будет  открыт браузер интернета, то весь CCS может упасть - втихоря закрывается и всё.    Разбил код на модули чтоб компилировать отдельно.   Помогло, но не сильно.   Есть несколько жирных классов с их методами - на них и затормаживается компиляция.

 

Какие есть пути решения ускорить компиляцию без ущерба оптимизации?   Стоит максимальная оптимизация: -O3, speed=5.    Замечено, что компиляция именно C++  медленная, чё они(из TI) там натворили ?

Связано ли это с тем что у меня всего 4 ГБ оперативы и 2 ядра по 3 ГГц? (по нынешним меркам - старьё) и с Win7 ?

Edited by __inline__

Share this post


Link to post
Share on other sites

4 Гб нынче - это несерьёзно :) Для разработчиков уже 16 Гб считается на грани.

А с какой другой версией вы сравниваете? 8.2.z, в которой ещё не было поддержки C++14?

Ну и 1 Гб, поедаемый CCS, - это мало по сравнению с тем, что творят современные браузеры и интернет :)

Share this post


Link to post
Share on other sites
3 hours ago, Grizzly said:

А с какой другой версией вы сравниваете? 8.2.z, в которой ещё не было поддержки C++14?

Ну и 1 Гб, поедаемый CCS, - это мало по сравнению с тем, что творят современные браузеры и интернет :)

С 8.3.3 было также долго.

И не CCS поедает память, а c6x Optimizer - он периодически выскакивает - делает своё дело и закрывается.

Тот же код под MinGW и Visual Studio 2010 компилируется несколько секунд.

Share this post


Link to post
Share on other sites
16 минут назад, __inline__ сказал:

Тот же код под MinGW и Visual Studio 2010 компилируется несколько секунд.

Совсем иная архитектура. Под VLIW непросто оптимизировать, а нужно как следует.

С версии 8.3 стандарт C++14 вместо C++03. Думал, что вы с более ранними версиями сравнивали. Могли что-то кардинально переписать в оптимизаторе. Даже если вещи из C++11/14 вы не используете, потенциально могло бы затронуть. Теперь, думаю, не в этом дело, а в самом устройстве тулчейна и архитектуры.

Share this post


Link to post
Share on other sites
41 minutes ago, Grizzly said:

Совсем иная архитектура. Под VLIW непросто оптимизировать, а нужно как следует.

С версии 8.3 стандарт C++14 вместо C++03. Думал, что вы с более ранними версиями сравнивали. Могли что-то кардинально переписать в оптимизаторе. Даже если вещи из C++11/14 вы не используете, потенциально могло бы затронуть. Теперь, думаю, не в этом дело, а в самом устройстве тулчейна и архитектуры.

Я хотел спуститься до 7.x.x, но не вышло: "Embeded C++ does not support templates".  А у меня куча темплейтов.  И замашки в стиле C99:  переменные внутри цикла и в самом цикле, массивы  переменной длины (которые локальные и генерятся в стеке и высвобождаются при выходе из функций).

 

Пробовал 8.3.3 - всё те же тормоза.  Но начиная с этой версии идёт поддержка синтаксиса C99, а он мне как воздух нужен, так как сорцы перелопачивать придётся очень долго под C89.

 

Надо будет попробовать качнуть v. 8.2.x о которой вы пишите.

 

P.S. Даже сраный Keil ARM CC (v.4 старая)  собирает быстрее.

Share this post


Link to post
Share on other sites
40 минут назад, __inline__ сказал:

Даже сраный Keil ARM CC (v.4 старая)  собирает быстрее.

Нельзя сравнивать несравниваемое. Это две абсолютно различных архитектуры. 

Share this post


Link to post
Share on other sites
9 часов назад, __inline__ сказал:

Причём, если будет  открыт браузер интернета, то весь CCS может упасть - втихоря закрывается и всё.

Связано ли это с тем что у меня всего 4 ГБ оперативы и 2 ядра по 3 ГГц? (по нынешним меркам - старьё) и с Win7 ?

Если Браузер влияет, то это очень весомый аргумент в пользу нехватки объема памяти.

Но вы самое главное забыли сказать: Win7 у вас 32-х или 64-разрядная? Потому как если 64-разрядная, то ваша проблема решается очень просто - докупить еще 4 ГБ памяти, а если пустых слотов для нее не осталось, то заменить старую память 2x2 ГБ на 2x4 ГБ. Тем более что по нынешним временам это довольно дешевая покупка. Но если Win7 у вас 32-разрядная, то тут вам уже ничто не поможет. Разве что операционку менять, на что вы едва ли согласитесь.

Share this post


Link to post
Share on other sites
37 minutes ago, Xenia said:

Но вы самое главное забыли сказать: Win7 у вас 32-х или 64-разрядная? Потому как если 64-разрядная, то ваша проблема решается очень просто - докупить еще 4 ГБ памяти, а если пустых слотов для нее не осталось, то заменить старую память 2x2 ГБ на 2x4 ГБ. Тем более что по нынешним временам это довольно дешевая покупка. Но если Win7 у вас 32-разрядная, то тут вам уже ничто не поможет.

64 разряда

 

Quote

Разве что операционку менять, на что вы едва ли согласитесь.

Да! ))) кое-как себя убедил на Win7 перейти, к сожалению на WinXP было более удобнее.

 

6 hours ago, Grizzly said:

А с какой другой версией вы сравниваете? 8.2.z, в которой ещё не было поддержки C++14?

Скачал 8.04 и 8.2.8.  Мне показалось, что проект собирается быстрее.  C++ 03 Mode хватило.   Правда, компилятор ругнулся на _nassert'ы (пришлось задефайнить их в ничто) и не нашёл функцию memset (пришлось <string.h> явно подрубить в сорец).   Скорость работы программы(скомпилянной для DSP) во всех 4-х  версиях (8.0.4   , 8.2.8,  8.3.3  и 8.3.5 )   остаётся одинаковой!

 

Edited by __inline__

Share this post


Link to post
Share on other sites
21 минуту назад, __inline__ сказал:

Мне показалось, что проект собирается быстрее.

А вот это уже очень интересно. Понять бы как-то, на сколько стало быстрее...

 

22 минуты назад, __inline__ сказал:

Скорость работы программы(скомпилянной для DSP) во всех 4-х  версиях (8.0.4   , 8.2.8,  8.3.3  и 8.3.5 )   остаётся одинаковой!

Я, если честно, ожидал даже пессимизации в 8.3 :) Хорошо, что этого не случилось. Скорее всего, совсем низкоуровневая оптимизация не изменилась, она отлажена годами, но что-то поменялось на верхнем уровне, поддерживающем нынче C++14.

Главное, чтобы изменения скорости сборки не попали в интервал погрешности измерения.

25 минут назад, __inline__ сказал:

Да! ))) кое-как себя убедил на Win7 перейти, к сожалению на WinXP было более удобнее.

Меня несколько лет назад убедили перейти на Linux, так привык уже, что про Win не хочется ничего знать и слышать. Но браузеры жрут везде как не в себя. Время сейчас такое ;)

Share this post


Link to post
Share on other sites
8 minutes ago, Grizzly said:

А вот это уже очень интересно. Понять бы как-то, на сколько стало быстрее...

Не намного, чтобы с 8.3.5 слезть на 8.0.4.

 

Quote

Я, если честно, ожидал даже пессимизации в 8.3 :) Хорошо, что этого не случилось. Скорее всего, совсем низкоуровневая оптимизация не изменилась, она отлажена годами, но что-то поменялось на верхнем уровне, поддерживающем нынче C++14.

Главное, чтобы изменения скорости сборки не попали в интервал погрешности измерения.

Под DSP скомпилянная программа такого рода:

1) Декодирование аудио, пожатого кодеком CELT  - 48 кбит/c через 1 канал McASP

2) Отрисовка графики, её поворот в видеобуфере на 90 градусов.  Буфер 400x240 пикселей 16 бит

3) Перенос буфера в LCD с VSYNC   с помощью PRU #2

4) Опрос кнопок PRU #1

5) Считывание файлов с SD карты в High Speed Mode через 1-битный SPI

6) Распаковка сжатых данных ZLIB

7) Поддержка файлов FatFs

8) Расчёт физики (столкновения объектов, взаимодействие с твёрдым телом) с помощью физ-движка  на вещественной арифметике

9) Микширование на 8 каналов звуков (WAV PCM) + 1 канал музыка (декод CELT пункт 1)

 

Quote

Меня несколько лет назад убедили перейти на Linux, так привык уже, что про Win не хочется ничего знать и слышать. Но браузеры жрут везде как не в себя. Время сейчас такое ;)

 В Linux я работаю крайне редко, при условии, если линуксоеды просят что-нибудь портировать на эту Ось ))

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this