Перейти к содержанию
    

Есть вопрос к разработчикам со стажем. Есть большой соблазн при разработке софта под TMS320F2812 написать с десяток классов и с ними работать.

Но я что-то не видел, чтобы кто-то под данный чип использовал ООП - у кого-нибудь есть опыт использования ООП в чипах такого типа? Выгода есть?

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да, если есть некое количество лишней памяти и мипсов, которые никак не удается на что-нить полезное потратить, то легко. И выгода налицо - память не пустует ;)

Изменено пользователем SAURIS GmbH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да, если есть некое количество лишней памяти и мипсов, которые никак не удается на что-нить полезное потратить, то легко. И выгода налицо - память не пустует ;)

 

Ну, мне, как человеку, в основном занимающемуся десктопной разработкой, гораздо ближе мышление в "стиле ООП". :)

Вот я и думаю - на сколько проигрыш в производительности ухудшит ситуацию. Вроде как только объем памяти может пострадать на хранение структур, а по производительности должно быть тоже самое.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а по производительности должно быть тоже самое.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

просто как раз и хотел узнать может есть ссылочки по этой теме - кто-то использует ООП и доволен :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да, если есть некое количество лишней памяти и мипсов, которые никак не удается на что-нить полезное потратить, то легко. И выгода налицо - память не пустует ;)

с++ и мипсы/память - никак между собой не связаны. Алгоритм на с++ не отличается по занимаемой памяти/мипсам от реализации его на си.

А вот кривость рук и компетентность разработчика впрямую связаны с размером/производительностью.

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

А что мешает НЕ ИСПОЛЬЗОВАТЬ виртуальные методы? Или другими словами - кто их заставляет использовать?

 

ЗЫ: всегда пишу на все контроллеры на с++ при полном отсутствии вирт. методов и динамической памяти,

и пользованием в основном статическими конструкторами.

При этом никто не мешает пользоваться другими прелестями ООП, типа перегрузки функций/операторов,

порождением/наследованием, ограничением области видимости и доступа класса и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

это смешно... так ничего не выявится... Все равно что пальчем в небо... Кстати и на C можно зарубить идею в корне... C TMS не работал никогда, но это же у них в официальных прмерах для DSP комплексные числа представлены структурами на 2-е простые переменные каждая? :biggrin: Вот она - классика куда деть 30% памяти и 10 % производительности...

 

с++ и мипсы/память - никак между собой не связаны. Алгоритм на с++ не отличается по занимаемой памяти/мипсам от реализации его на си.

ммм... спорное утверждение... если не отличается уж совсем, то где там C++?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ммм... спорное утверждение... если не отличается уж совсем, то где там C++?

Где "там"? с++ - это язык на котором написаны ИСХОДНИКИ, а память у вас в контроллере занимает СКОМПИЛЁННЫЙ КОД, а не исходники.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где "там"? с++ - это язык на котором написаны ИСХОДНИКИ, а память у вас в контроллере занимает СКОМПИЛЁННЫЙ КОД, а не исходники.

:biggrin: не поверите я знаю это... но Вы видимо еще не совсем прониклись "механистикой" всего этого дела - читайте, разбирайтесь...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:biggrin: не поверите я знаю это... но Вы видимо еще не совсем прониклись "механистикой" всего этого дела - читайте, разбирайтесь...

не поверю :lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с++ и мипсы/память - никак между собой не связаны.

А я про C++ ничего не говорил. Я говорил лишь про ООП, который подразумевает всяческое там наследование и соотв. расходы. А так - писать на С++, но не использовать ООП - так пжалста. Но речь тут не про С++, а именно про ООП.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никаких особых тормозов ООП в С++ не добавляет. Вызов виртуальной функции - это обычно пара-тройка дополнительных команд процессора (зависит от конкретного процессора). По памяти тоже не бог весть что - один указатель на объект класса и одна таблица на весь класс - это всё считанные байты. Всё это практически не заметно даже на мелочи вроде AVR, что уж говорить о процах класса TMS.

 

Что касается применения ООП, то если решаемая задача эффективно ложится на ООП и её реализацию в виде иерархии классов С++, то без сомнения ООП и надо применять. Если писать это на голом С, то там придётся применять аналогичные механизмы (таблицы указателей на функции и прочее), только это будет "закат Солнца вручную" со всеми вытекающими. Альтернативный вариант будет не лучше.

 

Давно и безпроблемно применяем ООП С++ в embedded проектах на разных процах (AVR, MSP430, Blackfin и др).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никаких особых тормозов ООП в С++ не добавляет. Вызов виртуальной функции - это обычно пара-тройка дополнительных команд процессора (зависит от конкретного процессора). По памяти тоже не бог весть что - один указатель на объект класса и одна таблица на весь класс - это всё считанные байты. Всё это практически не заметно даже на мелочи вроде AVR, что уж говорить о процах класса TMS.

 

Что касается применения ООП, то если решаемая задача эффективно ложится на ООП и её реализацию в виде иерархии классов С++, то без сомнения ООП и надо применять. Если писать это на голом С, то там придётся применять аналогичные механизмы (таблицы указателей на функции и прочее), только это будет "закат Солнца вручную" со всеми вытекающими. Альтернативный вариант будет не лучше.

 

Давно и безпроблемно применяем ООП С++ в embedded проектах на разных процах (AVR, MSP430, Blackfin и др).

 

Спасибо!

Сейчас как раз переписываю код под ООП.

Получается гораздо красивее и понятнее. Действительно, многое зависит от задачи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А я про C++ ничего не говорил. Я говорил лишь про ООП, который подразумевает всяческое там наследование и соотв. расходы. А так - писать на С++, но не использовать ООП - так пжалста. Но речь тут не про С++, а именно про ООП.

Под "с++" я и имел в виду ООП. Прочитайте то моё сообщение до конца.

"всяческое там наследование и соотв. расходы" - наследование не приводит к доп. расходам в общем случае (если нет вирт. методов).

 

...

Давно и безпроблемно применяем ООП С++ в embedded проектах на разных процах (AVR, MSP430, Blackfin и др).

Полностью согласен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...