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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> размер программы, ??? 
:(
    Опции темы
dva300
Дата 11.7.2010, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго дня, 

дано :

Eclipse IDE for C/C++ Developers

Version: Helios Release
Build id: 20100617-1415

и 

Код

#include <iostream>
using namespace std;

int main (void)
{
cout << "Hello";
return 0;
}


итог :
размер exe - ка ~ 500Кб

чего так много-то ? или это есть нормально ? 
--------------------
Участник движения Культура Вождения
PM   Вверх
rudvil
Дата 12.7.2010, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga

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



--------------------
xor
PM MAIL Skype   Вверх
Abyx
Дата 12.7.2010, 08:06 (ссылка)    | (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



потому что гцц - гуан*. это никак не лечится, ~200Кб это минимум для любых прог, никакие -s не помогут. 
там просто нет нормальной оптимизации.

Добавлено через 3 минуты и 44 секунды
самое забавное, что под виндой гцц юзает msvcrt.dll, и всеравно выдает .exe по 500Кб,
тогда как msvc компилит тот же код в 100Кб, при статической компиляции.

Это сообщение отредактировал(а) Abyx - 12.7.2010, 08:06
PM MAIL   Вверх
boostcoder
Дата 12.7.2010, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

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



Цитата(Abyx @  12.7.2010,  08:06 Найти цитируемый пост)
там просто нет нормальной оптимизации.

иди убейся  smile 

Цитата(Abyx @  12.7.2010,  08:06 Найти цитируемый пост)
самое забавное, что под виндой гцц юзает msvcrt.dll

так и должно быть.

Цитата(Abyx @  12.7.2010,  08:06 Найти цитируемый пост)
и всеравно выдает .exe по 500Кб

а какое отношение имеет теплое к мягкому? smile 

Цитата(Abyx @  12.7.2010,  08:06 Найти цитируемый пост)
тогда как msvc компилит тот же код в 100Кб, при статической компиляции

ню-ню smile 
доказательства где?

Добавлено @ 09:45
а вообще, тему нужно переместить в "GNU Toolchain"

Добавлено через 2 минуты и 22 секунды
Цитата(rudvil @ 12.7.2010,  00:46)
http://www.mingw.org/wiki/Large_executables

тут все расписано. от чего, и почему.

Это сообщение отредактировал(а) boostcoder - 12.7.2010, 09:46
PM WWW   Вверх
Abyx
Дата 12.7.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



boostcoder, ололо да вы прямо молитесь на свой гцц

Цитата(boostcoder @  12.7.2010,  09:44 Найти цитируемый пост)
доказательства где?

что тут доказывать? не верите что бывают хеллоуворлды размером 100Кб?
да... наверное если вы всегда юзаете гцц, то таких не видели...

Цитата(boostcoder @  12.7.2010,  09:44 Найти цитируемый пост)
тут все расписано. от чего, и почему.

там не написано почему у msvc получаются исполняемые файлы в 5 раз меньше
PM MAIL   Вверх
Alexeis
Дата 12.7.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



  Активно мусорит в экзешник RTTI, кроме того всяческие рантаймы т.д. Это все разовые расходы. Всяческие ембедид системы имеют опцию отключения RTTI + exceptions . Это заметно уменьшает стартовый размер. Кроме того здорово раздувают код шаблоны.
  Если вы не пишете для ембедид систем, то размеры до 1 Мб и даже более не должны смущать. Вон QT вообще тянет за собой ~5Мб рантаймов. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Abyx
Дата 12.7.2010, 10:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



для тех кто никогда не видел msvc, в нем это делается так...
запускаем msvs2010, новый проект, С++, консольное приложение, ставим галку [v] пустой проект, добавляем файл main.cpp, печатаем код
Код

#include <iostream>
int main()
{
    std::cout << "hello world" << std::endl;
}

выбираем опции компиляции "релиз", лезем в свойства проекта, выставляем статическую линковку рантайма, жмем "построить"
получаем .exe размером 96.5Кб, импортирует только kernel32.dll

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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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




M
bsa
Abyx, хватит троллить.

Поди запусти свой студиевский экзешник на чистой машине, выяснится, что ему еще и redistributable package нужен...
PM   Вверх
Abyx
Дата 12.7.2010, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Alexeis, в msvc тоже есть RTTI, статический (!) рантайм, шаблоны, а код (sic!) в 5 раз меньше, что там не так?

Добавлено через 34 секунды
bsa, читайте внимательно.

Цитата(Abyx @  12.7.2010,  10:06 Найти цитируемый пост)
выставляем статическую линковку рантайма

Цитата(Abyx @  12.7.2010,  10:06 Найти цитируемый пост)
импортирует только kernel32.dll


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


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

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



Цитата(Abyx @  12.7.2010,  09:53 Найти цитируемый пост)
да вы прямо молитесь на свой гцц

Ы smile откуда такие сведения?

Цитата(Abyx @  12.7.2010,  10:06 Найти цитируемый пост)
для тех кто никогда не видел msvc

а что это?
PM WWW   Вверх
Abyx
Дата 12.7.2010, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Насчет размеров файлов. Кроме embedded систем, есть еще частое обновление модулей программ по сети, а кое-где бывает не безлимитный интернет.
Кроме того некоторые заказчики не могут понять, почему когда им делают формочки на дельфи, получаются .exe по 50Кб, а когда я им делаю проги без ГУЙ на С++ - 500Кб.

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


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(Abyx @  12.7.2010,  09:10 Найти цитируемый пост)
Alexeis, в msvc тоже есть RTTI, статический (!) рантайм, шаблоны, а код (sic!) в 5 раз меньше, что там не так?

  Ну и что радости? Как начнешь писать хоть что-то мало мальски приличное так экзешник раздуется ацки. Подключи MFC и сразу все станает на свои места smile . Подключишь что нить другое результат аналогичный. А вот если совсем отключить все рантаймы и линковать голый экзешник так вообще можно получить 5 кб  smile . Какая экономия! А главное польза smile .

Добавлено через 2 минуты и 33 секунды
Цитата(Abyx @  12.7.2010,  09:14 Найти цитируемый пост)
Кроме того некоторые заказчики не могут понять, почему когда им делают формочки на дельфи, получаются .exe по 50Кб

  Только при компиляции с пакетами (или альтернативные GUI библиотеки). Иначе 600-800 кб. Там еще больше запихано RTTI . Наверное на 300-350 кб. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Abyx
Дата 12.7.2010, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Alexeis, пока речь о конкретном коде, который использует только iostream
размер mfc vs размер qt - это отдельный разговор, не в пользу qt
PM MAIL   Вверх
Alexeis
Дата 12.7.2010, 10:32 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Abyx, мде сейчас проверил. Откомпилировал свою функционально-законченную dll ку (VS2005) static multithread Runtime в релизе - 108 кб - Debug > 900Кб. Однако! Действительно. Вполне себе рабочий проект даже с одной простенькой формочкой. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
kemiisto
Дата 12.7.2010, 10:42 (ссылка) |    (голосов:8) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



В эпоху террабайтных носителей продолжаем фапать на килобайтные хелловорды!? smile Это диагноз.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Dem_max
Дата 12.7.2010, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



вообще то у теперяшных VS CRT весит примерно 75 кило. у VS6 был примерно на 40-50 кило.

Цитата

Это диагноз.

Это не диагноз.
ясень пень что такое 20 мб по сравнению с террабайтом, но все это загрузиться в ОЗУ которое винда превратит в 40 мб в памяти.

Это сообщение отредактировал(а) Dem_max - 12.7.2010, 10:49


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
kemiisto
Дата 12.7.2010, 10:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Цитата(Dem_max @  12.7.2010,  11:47 Найти цитируемый пост)
ясень пень что такое 20 мб по сравнению с террабайтом, но все это загрузиться в ОЗУ которое винда превратит в 40 мб в памяти.

У меня 2 ГБ. Сейчас это уже мало считается. Но я и с 2 ГБ ОЗУ не переживаю за 40 МБ. 

Таки диагноз. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Dem_max
Дата 12.7.2010, 10:56 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



А я переживаю, у меня каждая прога на компе пытается насрать куда угодно, при этом при автозагрузке запуститься, запустить дочерний процесс и радостно работать в скрытом режиме иногда давая понять что есть обновления. итого считаем 20 процессов по 40 мб это 800 мб, практически гиг. А при хибернейте это радостно начинает сохраняться на винт. 


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Abyx
Дата 12.7.2010, 10:59 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



терабайтные винчи, гигабайтное ОЗУ - это не повод делать программы хуже, чем 10 лет назад, без какой-либо на то причины.
PM MAIL   Вверх
chaos
Дата 12.7.2010, 11:14 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

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



Цитата(Dem_max @ 12.7.2010,  07:56)
А я переживаю, у меня каждая прога на компе пытается насрать куда угодно, при этом при автозагрузке запуститься, запустить дочерний процесс и радостно работать в скрытом режиме иногда давая понять что есть обновления. итого считаем 20 процессов по 40 мб это 800 мб, практически гиг. А при хибернейте это радостно начинает сохраняться на винт.

писать проги-спутники-обновлялки которые висят в памяти и жрут 40Мб это PI.....
имхо человек который занимается не разработкой, а оптимизацией размеров программы....занимается не тем


ЗЫ тема авно, автор похож на троля

PM WWW   Вверх
Alexeis
Дата 12.7.2010, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



kemiisto, размер это иногда скорость. А скорость это то, собственно для чего и нужен С++. Представь систему с плагинами, которых может быть порядка 10ти и каждый будет при загрузке инициализировать всякую муть, из которой реально нужно 5%. Загрузка приложения заметно замедлиться. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Dem_max
Дата 12.7.2010, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



Плагины это вовсе не плохо, плагины  (как отдельные DLL, так и другие форматы) собственно и придумывались с учетом того чтобы главное приложение не тянула в память все не нужные в данный момент функции, а при необходимости подгружала плагины и выгружала их при ненадобности.  К тому же загрузка главного приложения может ускориться.

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

Это сообщение отредактировал(а) Dem_max - 12.7.2010, 11:25


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
djamshud
Дата 12.7.2010, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



Ржунимагу над неосилятором гцц, молящемся на мсвц.^W^W^W^W^W^W^W^W^W^WНет, я отвечу в еще более наивно-идиотичной манере, чем половина этого топика.

Проблема не в гцц, а в венде! Только что скомпилировал плюсовый хелловорлд, получил пять с небольшим килобайт бинарника. Могу сократить до менее килобайта. Наверное все дело в рулезной операционке, а никак не в чьих-то кривых руках и нежелании читать маны.

ТС, не парься, считай это нормальным. Это маленький оверхед, незаметный на фоне конечной реальной программы.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 12.7.2010, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



djamshud, вот смотри: одна ОС, два компилятора.
Оба компилят один и тот же исходник - получаются разные размеры исполняемых файлов. Как так?
Отладочная и прочая служебная информация? Нет. Там разные размеры секций кода.

Добавлено через 5 минут и 56 секунд
Цитата(djamshud @  12.7.2010,  11:49 Найти цитируемый пост)
Проблема не в гцц, а в венде!

очевидно проблема в реализации гцц под винду.

btw, код с аналогичной функциональностью на асме, скомпилится байт в 600, с учетом 512б выравнивания секций.
PM MAIL   Вверх
Фантом
Дата 12.7.2010, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Цитата(djamshud @  12.7.2010,  11:49 Найти цитируемый пост)

Проблема не в гцц, а в венде! Только что скомпилировал плюсовый хелловорлд, получил пять с небольшим килобайт бинарника.

С опцией -static?  smile

P.S. Правда, в нынешних условях "проблема" действительно ломаного гроша не стоит.
PM   Вверх
djamshud
Дата 13.7.2010, 10:25 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



Abyx, машинный код, отвечающий за непосредственно main и хелловорлд в нем, что после асма, гцц или мсвц примерно одинаков. Если интересно, чем гцц забивает бинарник, возьми да расковыряй его, а потом сможешь и выкинуть из него все лишнее, я думаю. Но это не troll way, ты все правильно сделал - просто обосрал, не попытавшись разобраться, что к чему.

Это сообщение отредактировал(а) djamshud - 13.7.2010, 10:25


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 13.7.2010, 19:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



djamshud, я открывал его в IDA и смотрел что там. Это было сделано в 1ю очередь, чтобы понять почему там такой размер. Достаточно посмотреть на граф вызовов, чтобы понять, что там нереально много кода, который в самом деле вызывается.

Почему-то мне кажется, что вы, djamshud, никогда не использовали IDA. При этом пытаетесь что-то говорить про машинный код.
Кроме того, вы не понимаете что значит "расковырять бинарник" и "выкинуть все лишнее".

Добавлено через 5 минут и 41 секунду
Если в кратце, то main() компилится примерно одинаково. Проблема в том как компилится STL. Я не знаю, дело ли в отсутствии должной оптимизации, или еще и в изначально плохом труднооптимизируемом коде STL. 
В любом случае, STL - это часть реализации языка в компиляторе. А оптимизатор должен справляться и со сложным кодом.
PM MAIL   Вверх
djamshud
Дата 14.7.2010, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



Abyx, есть мнение, что в винде гцц линкует свой СТЛ статически, а отсюда и размер. Расковыренный бинарник это покажет, и если это подтвердится, не вижу проблемы выкинуть лишнее и прилинковать динамически.

Лично я не вижу совершенно никакой связи между "дело ли в отсутствии должной оптимизации, или еще и в изначально плохом труднооптимизируемом коде STL" и размером бинарника. И самое главное, оба "вывода" совершенно беспочвенны.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 14.7.2010, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



djamshud, если вы потрудитесь почитать тему, то вы увидите, что речь только статической линковке, и у гцц и у мсвц.
Замена статической линковки на динамическую - это не вариант, когда нужна статическая. Кроме того, это еще больше раздувает размер проги, из за мертвого кода. Очевидно, что в винде ни у кого нет рантайма гцц, так что нельзя сказать что это позволит уменьшить размер проги.

Алсо, при так называемой "статической" линковке, гцц использует msvcrt.dll o_O 

Это сообщение отредактировал(а) Abyx - 14.7.2010, 12:02
PM MAIL   Вверх
djamshud
Дата 14.7.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



Abyx, окей, статическая, так статическая. Расскажите про "мертвый код", появляющийся при динамической линковке и почему у меня его нет? Почему вы отождествляете размер скомпилированной гцц-шной СТЛ с ее неэффективностью? (Как правило как раз наоборот имеет место быть конкуренция между эффективностью и размером, то есть либо одно, либо другое, либо некий компромисс, но не все сразу).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 14.7.2010, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(djamshud @  14.7.2010,  12:37 Найти цитируемый пост)
почему у меня его нет

он есть. таскайте динамический рантайм вместе с программой - тот код рантайма который программа не использует - будет мертвым по определению.

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

Цитата(djamshud @  14.7.2010,  12:37 Найти цитируемый пост)
имеет место быть конкуренция между эффективностью и размером, то есть либо одно, либо другое, либо некий компромисс, но не все сразу

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

PM MAIL   Вверх
djamshud
Дата 14.7.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



>он есть. таскайте динамический рантайм вместе с программой - тот код рантайма который программа не использует - будет мертвым по определению.

Ясно, опять ни о чем. Открою вам маленький секрет: такскать с собой динамические библиотеки - некомильфо, dll hell во все поля.

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

Ох ты ж, держитеменясемерошестеронеудержат. Я умиляюсь вашему прфессионализму, которого пока хватает лишь на то, чтобы рассказывать, чего я не понимаю.

Навскидку, вот что я вижу в размерах stl:
- общий код, вкомпилированный в либу, а не вынесеный наружу через хедеры
- вкомпилированные специализации темплейтов под некоторые типы
- использование внутренних статических хешей для каких-то структур данных

Выкидываем пункты 2 и 3, получаем маленькую, но донельзя тупую stl. Выкидываем кучу кода наружу (пункт 1), получаем жирный софт, в который дорая часть stl-я и вкомпилируется.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 14.7.2010, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(djamshud @  14.7.2010,  13:42 Найти цитируемый пост)

- использование внутренних статических хешей для каких-то структур данных

што? каких хешей? каких данных?

мы о статической линковке говорим или нет?!!!!
что значит "вкомпилированные в либу"? какая еще либа в бинарнике при статической линковке либы с исходниками?
весь бинарник должен быть оптимизирован целиком,
все что не используется - выкидывается,
все что используется 1-2 раза - должно быть заинлайнено и оптимизировано с остальным кодом

для кода в 1м посте в бинарнике вообще практически ничего не должно остаться от STL

Добавлено через 13 минут и 9 секунд
что вообще означает "Выкидываем кучу кода наружу" ?
куда наружу? 

у компилятора есть сорцы STL, не только заголовочных файлов, но и .cpp
во время кодогенерации он должен использовать сорцы stl чтобы инлайнить их в пользовательский код.
отдельно что-то компилится только в случае множественного использования большого куска кода, или когда компилятор не может определить цепочку вызовов, например изза вызовов виртуальных методов через указатель на базовый класс.

в результате инлайна могут получаться функции размером в десятки килобайт %)

Это сообщение отредактировал(а) Abyx - 14.7.2010, 15:33
PM MAIL   Вверх
djamshud
Дата 14.7.2010, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



>што? каких хешей? каких данных?

Ну да. Навскидку, я ж предупреждалsmile.

>мы о статической линковке говорим или нет?!!!!

OMG. Меня плющит, по привычке опять на динамическую перескочил.

>куда наружу?

Я имел в виду (говоря про динамическую линковку), что куча всего, реализованного в .h библиотеки в конечном счете попадет в программу, а не в бинарник самой либы.

Сейчас собрал полностью (libc и libstdc++) статический бинарник хелловорлда в метр с лишним... objdump показал около 5000 использованных символов... Изучением графа вызовов займусь в свободное время. Еще раз навскидку есть предположение, что гцц запихал в бинарь то, что необходимо не только main-у, а всему iostream-у и всему, что он использует (ибо он подключен в исходный файл программы и естественно компилируется).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




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


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

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