|
Как лучше писать |
|
|
|
Aug 5 2008, 06:42
|
Группа: Участник
Сообщений: 10
Регистрация: 4-05-08
Пользователь №: 37 271

|
Keil mVision.Соответственно, есть куча разных функций.Одни для одного,другие для другого, где то они пересекаюся и не редко.В общем, как обычно.Вот вопрос-стоит ли собирать их в разные си файлы и делать кучу extern-ов, или лучше все-таки без особой необходимости этого не делать.Может, надо искать золотую середину?Есть ли какие-нибудь критерии,кроме здравого смысла? На что это влияет?Спасибо
|
|
|
|
|
 |
Ответов
|
Aug 5 2008, 07:22
|
Группа: Участник
Сообщений: 10
Регистрация: 4-05-08
Пользователь №: 37 271

|
Модульность-это хорошо.Я это, безусловно, пинимаю.Такой вопрос-если я забью на модульность и совместимость, получу ли я прирост скорости или там свободного места?
|
|
|
|
|
Aug 5 2008, 07:34
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(npopok @ Aug 5 2008, 11:22)  Такой вопрос-если я забью на модульность и совместимость, получу ли я прирост скорости или там свободного места? Встречный вопрос: а засчёт чего? Компилятор транслирует исходники функций в объектный код, линкер собирает из объектов файл прошивки. По большому счёту, им без разницы, в одном файле находятся функции или в 10. (20,50). Скорость и свободное место - понятия взаимоисключающие. Нужна скорость - inline и unrolling, соответственно теряем место. Не хватает места - обратная ситуация, приходится жертвовать скоростью.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Aug 5 2008, 09:37
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(MrYuran @ Aug 5 2008, 10:34)  Встречный вопрос: а засчёт чего? Например, компилятор может самостоятельно встроить функции, используемые только один раз и объявленные как static. Экономия на командах вызова, передаче параметров, прологе/эпилоге. Некторые функции содержат кода меньше, чем накладные расходы на ее вызов. Или функции-обертки, которые при встраивании вообще не генерят кода. Безусловное встраивание таких функций дает выигрыш и в объеме и в скорости. Если функция не static и тело ее в другом файле - компилятор не сможет ее встроить. Таким образом, некоторые функции модуля целесообразно выносить из .c в .h, добавляя к ним квалификатор static. Они могут потянуть за собой другие. Если же функция большая и используется дважды - получим обратный эффект. Такая оптимизация в любом случае происходит при помощи программиста, и порой в угоду читабельности и модифицируемости кода стоит некторые участки оставить неоптимальными. В противном случае придем у ручной правке ассемблерного кода после компилятора.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
npopok Как лучше писать Aug 5 2008, 06:42 MrYuran Обычно всегда стараюсь чётко разделить программу н... Aug 5 2008, 06:53 scifi Цитата(MrYuran @ Aug 5 2008, 10:53) Обычн... Aug 5 2008, 13:20 sergeeff Мы обычно поступаем так. Для примера. Одна пара С ... Aug 5 2008, 07:05  defunct Цитата(MrYuran @ Aug 5 2008, 10:34) Компи... Aug 5 2008, 10:00   ReAl Цитата(defunct @ Aug 5 2008, 13:00) Если ... Aug 5 2008, 16:29    defunct Цитата(ReAl @ Aug 5 2008, 19:29) -fwhole-... Aug 6 2008, 13:00  defunct Цитата(MrYuran @ Aug 5 2008, 10:34) Нужна... Aug 5 2008, 10:08 Kaplinsky Советую почитать книгу
"Анализ программного ... Aug 5 2008, 07:49 Duplex Цитата(Kaplinsky @ Aug 5 2008, 11:49) Сов... Aug 5 2008, 09:46  MrYuran Цитата(Duplex @ Aug 5 2008, 13:46) Цена: ... Aug 5 2008, 10:04   Duplex Цитата(MrYuran @ Aug 5 2008, 14:04) Потом... Aug 5 2008, 13:34    richie Полезность разбиения на логические модули не обсуж... Aug 5 2008, 14:45  Kaplinsky Цитата(Duplex @ Aug 5 2008, 12:46) Цена: ... Aug 5 2008, 20:24   Duplex Цитата(Kaplinsky @ Aug 6 2008, 00:24) Раз... Aug 6 2008, 06:36    MrYuran Цитата(Duplex @ Aug 6 2008, 10:36) Что по... Aug 6 2008, 06:55     Duplex Цитата(MrYuran @ Aug 6 2008, 10:55) Тольк... Aug 6 2008, 07:10 etoja Начни с этого: Aug 5 2008, 09:09 npopok Последнее ,конечно, полезно, но вообще не в тему Aug 5 2008, 09:32 sergeeff Я уже как-то писал и ссылки давал. Современные ком... Aug 5 2008, 15:51 ReAl А ещё функции можно дать атрибут externally_visibl... Aug 6 2008, 20:27
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|