repstosw 18 1 января, 2020 Опубликовано 1 января, 2020 (изменено) · Жалоба Доброе время суток и с наступившими праздниками! Есть проект, на C/C++. Часть модулей программы компилируется очень долго: 2 - 10 минут. При этом оптимизатор съедает over 1 ГБ оперативной памяти компа. Причём, если будет открыт браузер интернета, то весь CCS может упасть - втихоря закрывается и всё. Разбил код на модули чтоб компилировать отдельно. Помогло, но не сильно. Есть несколько жирных классов с их методами - на них и затормаживается компиляция. Какие есть пути решения ускорить компиляцию без ущерба оптимизации? Стоит максимальная оптимизация: -O3, speed=5. Замечено, что компиляция именно C++ медленная, чё они(из TI) там натворили ? Связано ли это с тем что у меня всего 4 ГБ оперативы и 2 ядра по 3 ГГц? (по нынешним меркам - старьё) и с Win7 ? Изменено 1 января, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 1 января, 2020 Опубликовано 1 января, 2020 · Жалоба 4 Гб нынче - это несерьёзно :) Для разработчиков уже 16 Гб считается на грани. А с какой другой версией вы сравниваете? 8.2.z, в которой ещё не было поддержки C++14? Ну и 1 Гб, поедаемый CCS, - это мало по сравнению с тем, что творят современные браузеры и интернет :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 1 января, 2020 Опубликовано 1 января, 2020 · Жалоба 3 hours ago, Grizzly said: А с какой другой версией вы сравниваете? 8.2.z, в которой ещё не было поддержки C++14? Ну и 1 Гб, поедаемый CCS, - это мало по сравнению с тем, что творят современные браузеры и интернет :) С 8.3.3 было также долго. И не CCS поедает память, а c6x Optimizer - он периодически выскакивает - делает своё дело и закрывается. Тот же код под MinGW и Visual Studio 2010 компилируется несколько секунд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 1 января, 2020 Опубликовано 1 января, 2020 · Жалоба 16 минут назад, __inline__ сказал: Тот же код под MinGW и Visual Studio 2010 компилируется несколько секунд. Совсем иная архитектура. Под VLIW непросто оптимизировать, а нужно как следует. С версии 8.3 стандарт C++14 вместо C++03. Думал, что вы с более ранними версиями сравнивали. Могли что-то кардинально переписать в оптимизаторе. Даже если вещи из C++11/14 вы не используете, потенциально могло бы затронуть. Теперь, думаю, не в этом дело, а в самом устройстве тулчейна и архитектуры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 1 января, 2020 Опубликовано 1 января, 2020 · Жалоба 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 старая) собирает быстрее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 1 января, 2020 Опубликовано 1 января, 2020 · Жалоба 40 минут назад, __inline__ сказал: Даже сраный Keil ARM CC (v.4 старая) собирает быстрее. Нельзя сравнивать несравниваемое. Это две абсолютно различных архитектуры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 45 1 января, 2020 Опубликовано 1 января, 2020 · Жалоба 9 часов назад, __inline__ сказал: Причём, если будет открыт браузер интернета, то весь CCS может упасть - втихоря закрывается и всё. Связано ли это с тем что у меня всего 4 ГБ оперативы и 2 ядра по 3 ГГц? (по нынешним меркам - старьё) и с Win7 ? Если Браузер влияет, то это очень весомый аргумент в пользу нехватки объема памяти. Но вы самое главное забыли сказать: Win7 у вас 32-х или 64-разрядная? Потому как если 64-разрядная, то ваша проблема решается очень просто - докупить еще 4 ГБ памяти, а если пустых слотов для нее не осталось, то заменить старую память 2x2 ГБ на 2x4 ГБ. Тем более что по нынешним временам это довольно дешевая покупка. Но если Win7 у вас 32-разрядная, то тут вам уже ничто не поможет. Разве что операционку менять, на что вы едва ли согласитесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 1 января, 2020 Опубликовано 1 января, 2020 (изменено) · Жалоба 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 ) остаётся одинаковой! Изменено 1 января, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 1 января, 2020 Опубликовано 1 января, 2020 · Жалоба 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 не хочется ничего знать и слышать. Но браузеры жрут везде как не в себя. Время сейчас такое ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 1 января, 2020 Опубликовано 1 января, 2020 · Жалоба 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 я работаю крайне редко, при условии, если линуксоеды просят что-нибудь портировать на эту Ось )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться