Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Размер имеет значение 
:(
    Опции темы
404
  Дата 13.12.2004, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 12.12.2004

Репутация: нет
Всего: нет



Сорри что опять поднимаю эту тему, но кроме советов писать на API, использовать упаковщик, и наплевать-и-забыть перерыв кучу ресурсов и Борландовский хелп мало что нашёл.

Работаю с Borland С++ Builder 5. Программа, печатающая в файл "Hello world!" занимает ~54K (только stdlib.h). Имхо, это бред.

Если добавить ещё windows.h (WinMain), stdio.h и string.h (и пару сотен строк кода, но это никак не влияет на размер), уже 60.5K.

Откуда берутся вообще 54K в программе, которая "ничего не делает"?

Как конкретно можно, сохраняя полезные оптимизации, как то выравнивание по размеру страницы памяти, не использование "Dynamic RTL" и пр. уменьшить размер .exe?

Как заставить компилятор не добавлять в код ненужную фигню, в частности неиспользуемые функции?

Поймите правильно, я отнюдь не стремлюсь в 100 байт программу запихнуть, но 54K на 0 действий, это несерьёзно.

Если для этого надо скажем перейти на Visual C++ или воспользоваться другим компилятором, OK.
PM MAIL   Вверх
azesmcar
Дата 13.12.2004, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Зависит от того какое именно приложение ты пишешь на C++ Builder...
Вообще билдер по жизни не предназначен для создания маленьких программ, хочешь получить маленькую пользуйся LCC...ничего лишнего там не будет, еще немного оптимизации и пустая программа будет весить несколько кило...Ну а меньше всего конечно будет mASM...
Я на LCC как то DLL ку написал...признаться чего только она не вытворяла..получилось после оптимизации 30 кило..

Это сообщение отредактировал(а) azesmcar - 13.12.2004, 08:49
PM   Вверх
404
Дата 13.12.2004, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 12.12.2004

Репутация: нет
Всего: нет



azesmcar
Сейчас пишу движок запросов к неким данным, а сверху будет рисовалка и математика.

Мне всё ж не верится что компилятор нельзя заставить не включать ненужное в код.
PM MAIL   Вверх
azesmcar
Дата 13.12.2004, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Можно наверное, но как это сделать на билдере сказать не могу, узнаешь и мне сообщи smile

лучше всего на LCC (Light C Compilator)...На то он и light...Помнится я как то в далеком детстве троян на билдере написал...никак его никому не мог отправить...ну нету столько места в mailbox -е smile

PM   Вверх
srd
Дата 13.12.2004, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Тут следует иметь в виду, что Билдер использует свою версию СRT. Можно линковать программу с ней динимически, но тогда прийдется таскать саму CRT (метра полтора, точно не помню). MSVC++ и MinGW используют микрософтовскую реализацию CRT (msvcrtxx.dll). LCC тоже использует микрософтовскую CRT, только другую - CRTDLL.DLL. Отсюда и кажется, что программы имеют меньший размер, т.к. эти DLL есть в Windows и их можно не таскать с программой. Кроме того, LCC - это Си, не Си++ компилятор, потому размеры меньше.


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
S.A.P.
Дата 13.12.2004, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



404 поищи по форуму. Эта тема задавалась тут пару раз. Размер Hello World на MSVC++ можно уменьшить до одного килобайта smile
PM MAIL   Вверх
alien_by
Дата 13.12.2004, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 29.11.2004
Где: Belarus/Gomel

Репутация: нет
Всего: 8



Возможно у тебя режим сборки стоит Debug (ну или что-то типа, незнаю как BCB), так вот в этом случае в твой екзешник вкомпиливается отладочная информация. Причём не только на твой код, но и на некоторые борландовские куски. Измени режим на Release размер уменьшиться, но не надёйся что сильно smile Билдер, никогда не оличался легковестностью программ.

PM MAIL ICQ   Вверх
chipset
Дата 13.12.2004, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



ИМХО нуна переходить на MSVC++...


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
404
Дата 13.12.2004, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 12.12.2004

Репутация: нет
Всего: нет



Эх... ну, перейти на VC++ не проблема, если польза будет... да, видел в форуме на счёт Debug и Release, также в доке по опциям компилятора VC++ что-то видел полезное... а точней никто не скажет?
PM MAIL   Вверх
S.A.P.
Дата 13.12.2004, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



404, а чё точнее то??? Тебе на вопросы ответили, директивы оптимизации у тебя есть, как компилить в режиме Release ты знаешь... Что еще надо smile
PM MAIL   Вверх
404
Дата 13.12.2004, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 12.12.2004

Репутация: нет
Всего: нет



Perchilla
OK. Версия MSVC++ имеет значение?
PM MAIL   Вверх
srd
Дата 13.12.2004, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



MSVC++ 6 старенький и плохо держит стандарт. MSVC++ 7.x создает EXE-шники большего размера smile


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
404
Дата 13.12.2004, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 12.12.2004

Репутация: нет
Всего: нет



Э... так на какой версии VC++ "Hello World" можно запихнуть в килобайт? smile
PM MAIL   Вверх
S.A.P.
Дата 13.12.2004, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(srd @ 13.12.2004, 16:16)
MSVC++ 7.x создает EXE-шники большего размера smile
я бы не сказал smile

Добавлено @ 16:23
Цитата(404 @ 13.12.2004, 16:22)
Э... так на какой версии VC++ "Hello World" можно запихнуть в килобайт? smile
на обоих можно. На семерке точно.

PM MAIL   Вверх
404
Дата 13.12.2004, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 12.12.2004

Репутация: нет
Всего: нет



Perchilla
А в плане быстродействия кода VC++ vs Borland как? Большая разница есть? (чтение с диска, математика, работа с битовыми полями).
PM MAIL   Вверх
404
Дата 13.12.2004, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 12.12.2004

Репутация: нет
Всего: нет



А такая оптимизация размера в VC++ достигается за счёт включения системных dll, или независимый exe-шник такого размера можно сделать?
PM MAIL   Вверх
Void
Дата 16.12.2004, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(404 @ 13.12.2004, 16:34)
А в плане быстродействия кода VC++ vs Borland как? Большая разница есть? (чтение с диска, математика, работа с битовыми полями).


Разница есть, нельзя сказать что очень большая, в пользу VC++. Почитать об этом можно на RSDN - есть там группа статей Кто сегодня самый шустрый
А при чтении с диска компилятор вряд ли будет узким местом.

Вообще, в BCB можно создавать очень маленькие приложения (в несколько Кб). Но этого не добиться, даже используя чистый WinAPI, потому что линкер все равно прикрутит CRT Startup, который и занимает все эти 50-60 Кб. Колдовство с опциями, которое позволяет убрать это, описано здесь: http://www.codenet.ru/progr/bcb/small.php
Но от функций CRT все равно придется отказаться.

VC по умолчанию создает экзешники поменьше, но все же в 20-30 Кб пустой код выливается.

smile Неужели размер так критичен? smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
S.A.P.
Дата 16.12.2004, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(404 @ 13.12.2004, 18:51)
А такая оптимизация размера в VC++ достигается за счёт включения системных dll, или независимый exe-шник такого размера можно сделать?
независимый экзешник ты вряд ли зделаешь, хоть на асме пиши. Программа по любому будет использовать стандартные виндовые библиотеки, если, конечно программа что то делает.
Другое дело в Visual С++ есть рантайм MSVCRT.DLL. Не буду сечас подробно говорить, что она делает. Ты можешь подключить ее статически, тогда программа потяжелеет килобайт на 30, можешь динамически, тогда придется таскать с собой библитоку. А можешь вобще отказаться от рантайм, только для этого тебе надо посмотреть какие функции не надо использовать, и забыть про разные полезности smile . Зато минимальные размер экзешника будет 1 кб.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1049 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.