Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 42
#1

Из маленьких исходных текстов, большие выполняемые файлы - C++

26.10.2013, 16:50. Просмотров 1119. Ответов 31
Метки нет (Все метки)

Добрый день всем.
Возник следующий вопрос.
Для учебы делаю маленькие исходники, с маленькими функциями, например такие:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstdlib>
 
using namespace std;
int main()
{
 
int a=12,b=a%5; 
if (a%10!=b) 
b++;
a+=b;
cout<<a<<"\n";
    system("pause");
          return 0;
}
Практически все исполняемые файлы, в итоге получаются 4 с половиной мегабайта.
Может это и нормально, я незнаю, поскольку не так давно начал изучать язык. Хотелось бы узнать, как должно быть на самом деле.
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2013, 16:50     Из маленьких исходных текстов, большие выполняемые файлы
Посмотрите здесь:
Словов из маленьких букв перевести в заглавные (большие) буквы C++
Применение системы документирования исходных текстов Doxygen C++
C++ Как правильно инклюдить файлы исходных кодов? MSVS08
Операторы выполняемые над деревом C++
C++ Несколько маленьких задачек
C++ Уроки по C++ для самых маленьких
C++ Ввод/вывод очень маленьких чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 19:48     Из маленьких исходных текстов, большие выполняемые файлы #2
Среда какая?
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
26.10.2013, 20:13     Из маленьких исходных текстов, большие выполняемые файлы #3
У меня (Code::Blocks MinGW) - 934 КБ
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 20:41     Из маленьких исходных текстов, большие выполняемые файлы #4
Код из первого поста, в Code::Blocks 12.11, скомпилировался в .exe размером 467кб (Release), 946кб(Debug). Откуда берутся 4.5мгб?
Жанерке
34 / 34 / 2
Регистрация: 22.09.2013
Сообщений: 170
26.10.2013, 20:55     Из маленьких исходных текстов, большие выполняемые файлы #5
у меня
задачки который сделаны на форме 2 Мб
а на консоле 400-900 Кб
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
26.10.2013, 21:11     Из маленьких исходных текстов, большие выполняемые файлы #6
Цитата Сообщение от Ukrainis Посмотреть сообщение
Практически все исполняемые файлы, в итоге получаются 4 с половиной мегабайта.
Может это и нормально, я незнаю, поскольку не так давно начал изучать язык. Хотелось бы узнать, как должно быть на самом деле.
Заранее спасибо.
Это особенность создания выполняемых файлов, использующих стандартную библиотеку C++ на винде при помощи компилятора mingw. Для решения этой проблемы просто перейдите на линукс.

Добавлено через 4 минуты
Еще можешь добавить в опции компилятора: " -s -O3 " - это немного уменьшит размер файлов.
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 42
27.10.2013, 13:17  [ТС]     Из маленьких исходных текстов, большие выполняемые файлы #7
Всем доброе утро.
Среду использую Dev-C++. Это как основная, есть еще Visual Studio 2010, но пока редко использую, очень большая, так сказать.
Цитата Сообщение от programina Посмотреть сообщение
Еще можешь добавить в опции компилятора: " -s -O3 " - это немного уменьшит размер файлов.
- спасибо, это помогло, теперь файл только 523 кб занимает.
Вчера разговаривал с другом, который немного понимает в этом, так он говорит, что туда залезает debug информация, поэтому он такой большой становится.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 14:03     Из маленьких исходных текстов, большие выполняемые файлы #8
Цитата Сообщение от Ukrainis Посмотреть сообщение
Среду использую Dev-C++.
В Dev-C++ (все настройки по умолчанию), код из первого поста, компилируется в exe размером 465кб. Откуда у вас взялись 4.5мгб?
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 14:18     Из маленьких исходных текстов, большие выполняемые файлы #9

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Для решения этой проблемы просто перейдите на линукс.
Не давайте больше таких советов.

Цитата Сообщение от programina Посмотреть сообщение
Еще можешь добавить в опции компилятора: " -s -O3 " - это немного уменьшит размер файлов.
Это не "немного уменьшит", а значительно уменьшит размер.
Если заменить флаг -O3 на -Os то можно достигнуть больших результатов.
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 42
27.10.2013, 14:28  [ТС]     Из маленьких исходных текстов, большие выполняемые файлы #10
Цитата Сообщение от castaway Посмотреть сообщение
Если заменить флаг -O3 на -Os то можно достигнуть больших результатов.
Попробовал эту вещь, в другом файле, особых различий небыло, документ примерно такой же. Раньше тоже был 4 с чемто мега, стал 523 кб.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 14:31     Из маленьких исходных текстов, большие выполняемые файлы #11
Так я и не говорил что файл уменьшится в несколько раз.
Флаг -Os говорит компилятору GCC о том, что необходимо оптимизировать код по размеру, а не скорости выполнения, хоть он и включает в себя флаг -O2..
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 42
27.10.2013, 14:36  [ТС]     Из маленьких исходных текстов, большие выполняемые файлы #12
Значит просто неправильно понял. Спасибо за разьяснение.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 14:41     Из маленьких исходных текстов, большие выполняемые файлы #13
Цитата Сообщение от Ukrainis Посмотреть сообщение
Значит просто неправильно понял. Спасибо за разьяснение.
Загадка осталась. Откуда у вас брались exe в 4.5 мгб? Вложите, если не трудно, проект, при компиляции в котором, кода из первого поста, получается exe размером в 4.5 мгб.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 14:45     Из маленьких исходных текстов, большие выполняемые файлы #14
Цитата Сообщение от alsav22 Посмотреть сообщение
Загадка осталась.
У меня простой проект с единственной функцией MessageBeep( MB_OK ); в main занимает 915900 байт.
Ну тут я конечно специально убрал флаг -s и добавил -g3 ..

Заменил код на:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <vector>
 
template <class T>
class A : public std::vector <T> {
public:
    T operator [] ( int index ) {
        if ( index < 0 || index >= static_cast<int>(std::vector<T>::size()) ) {
            std::cout << "out of range: ";
            return 0;
        }
        std::cout << "ok: ";
        return (*static_cast<std::vector<T> *>(this))[index];
    }
};
 
int main()
{
    A <int> a;
    a.push_back( 123 );
    a.push_back( 200 );
    a.push_back( 500 );
    a.push_back( 9999 );
 
    std::cout << a[-1] << std::endl;
    std::cout << a[ 0] << std::endl;
    std::cout << a[ 3] << std::endl;
    std::cout << a[ 4] << std::endl;
}
Добавил компоновщику флаг -static. Размер: 1 518 912 байт.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 14:51     Из маленьких исходных текстов, большие выполняемые файлы
Еще ссылки по теме:
C++ Проблемка с скачиванием не маленьких файлов в цикле
Найти два самых маленьких элемента в массиве C++
Объединить несколько маленьких программ в одну большую C++
Разбиение одного большого массива на три маленьких C++
Совмещение текстов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 14:51     Из маленьких исходных текстов, большие выполняемые файлы #15
Разговор про код из первого поста (приведён ТС, в качесве примера кода, при компиляции которого, получается exe - 4.5мгб).
Yandex
Объявления
27.10.2013, 14:51     Из маленьких исходных текстов, большие выполняемые файлы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru