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

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

Восстановить пароль Регистрация
 
 
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 40
26.10.2013, 16:50     Из маленьких исходных текстов, большие выполняемые файлы #1
Добрый день всем.
Возник следующий вопрос.
Для учебы делаю маленькие исходники, с маленькими функциями, например такие:
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 с половиной мегабайта.
Может это и нормально, я незнаю, поскольку не так давно начал изучать язык. Хотелось бы узнать, как должно быть на самом деле.
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 19:48     Из маленьких исходных текстов, большие выполняемые файлы #2
Среда какая?
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
26.10.2013, 20:13     Из маленьких исходных текстов, большие выполняемые файлы #3
У меня (Code::Blocks MinGW) - 934 КБ
alsav22
5282 / 4801 / 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
 Аватар для programina
1912 / 597 / 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
Сообщений: 40
27.10.2013, 13:17  [ТС]     Из маленьких исходных текстов, большие выполняемые файлы #7
Всем доброе утро.
Среду использую Dev-C++. Это как основная, есть еще Visual Studio 2010, но пока редко использую, очень большая, так сказать.
Цитата Сообщение от programina Посмотреть сообщение
Еще можешь добавить в опции компилятора: " -s -O3 " - это немного уменьшит размер файлов.
- спасибо, это помогло, теперь файл только 523 кб занимает.
Вчера разговаривал с другом, который немного понимает в этом, так он говорит, что туда залезает debug информация, поэтому он такой большой становится.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 14:03     Из маленьких исходных текстов, большие выполняемые файлы #8
Цитата Сообщение от Ukrainis Посмотреть сообщение
Среду использую Dev-C++.
В Dev-C++ (все настройки по умолчанию), код из первого поста, компилируется в exe размером 465кб. Откуда у вас взялись 4.5мгб?
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 14:18     Из маленьких исходных текстов, большие выполняемые файлы #9

Не по теме:

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

Цитата Сообщение от programina Посмотреть сообщение
Еще можешь добавить в опции компилятора: " -s -O3 " - это немного уменьшит размер файлов.
Это не "немного уменьшит", а значительно уменьшит размер.
Если заменить флаг -O3 на -Os то можно достигнуть больших результатов.
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 40
27.10.2013, 14:28  [ТС]     Из маленьких исходных текстов, большие выполняемые файлы #10
Цитата Сообщение от castaway Посмотреть сообщение
Если заменить флаг -O3 на -Os то можно достигнуть больших результатов.
Попробовал эту вещь, в другом файле, особых различий небыло, документ примерно такой же. Раньше тоже был 4 с чемто мега, стал 523 кб.
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 14:31     Из маленьких исходных текстов, большие выполняемые файлы #11
Так я и не говорил что файл уменьшится в несколько раз.
Флаг -Os говорит компилятору GCC о том, что необходимо оптимизировать код по размеру, а не скорости выполнения, хоть он и включает в себя флаг -O2..
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 40
27.10.2013, 14:36  [ТС]     Из маленьких исходных текстов, большие выполняемые файлы #12
Значит просто неправильно понял. Спасибо за разьяснение.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 14:41     Из маленьких исходных текстов, большие выполняемые файлы #13
Цитата Сообщение от Ukrainis Посмотреть сообщение
Значит просто неправильно понял. Спасибо за разьяснение.
Загадка осталась. Откуда у вас брались exe в 4.5 мгб? Вложите, если не трудно, проект, при компиляции в котором, кода из первого поста, получается exe размером в 4.5 мгб.
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 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 байт.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 14:51     Из маленьких исходных текстов, большие выполняемые файлы #15
Разговор про код из первого поста (приведён ТС, в качесве примера кода, при компиляции которого, получается exe - 4.5мгб).
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 40
27.10.2013, 17:28  [ТС]     Из маленьких исходных текстов, большие выполняемые файлы #16
Вот еще один пример, без использования указанных тут тегов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstdlib>
 
using namespace std;
int main()
{
    int a, b, square, sum, razn, umnoz;
    
    cout<<"Enter the first number: ";
    cin>>a;
    cout<<"Enter the second number: ";
    cin>>b;
    square = a * a;
    sum = a + b;
    razn = a - b;
    umnoz = a * b;
    cout<< a <<"*"<< a <<"="<<square<<endl;
    cout<< a <<"+"<< b <<"="<<sum<<endl;
    cout<< a <<"-"<< b <<"="<<razn<<endl;
    cout<< a <<"*"<< b <<"="<<umnoz<<endl;
    system("pause");
          return 0;
}
Размер такой же самый, 4,5 мб.
Вот лог компилятора:
Compiler: TDM-GCC 4.7.1 32-bit Release
Executing g++.exe...
g++.exe "C:\Users\Valentin\Desktop\primer.cpp" -o "C:\Users\Valentin\Desktop\primer.exe" -ansi -m32 -I"C:\Program Files\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include" -L"C:\Program Files\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib32" -static-libgcc -m32
Execution terminated
Compilation successful
Проект я не делал, поскольку мне надо было просто побыстрому написать и запустить один маленький файл, не связанный с другими. Незнаю, важно или нет, но операционная система Windows 7.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 17:35     Из маленьких исходных текстов, большие выполняемые файлы #17
Вот такой скрин покажите, чтобы был виден размер выходного файла.
Миниатюры
Из маленьких исходных текстов, большие выполняемые файлы  
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 40
27.10.2013, 17:46  [ТС]     Из маленьких исходных текстов, большие выполняемые файлы #18
Незнаю, как тут правильно картинки загружать. Пока загрузил на радикал, но система считает его спамом похоже.
[img]http://***********/fp/54acbf5739414f6397f18a12313e1104[/img]
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 40
27.10.2013, 17:54  [ТС]     Из маленьких исходных текстов, большие выполняемые файлы #19
Из маленьких исходных текстов, большие выполняемые файлы
Удалось.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 18:34     Из маленьких исходных текстов, большие выполняемые файлы
Еще ссылки по теме:

Применение системы документирования исходных текстов Doxygen C++
C++ Несколько маленьких задачек
Операторы выполняемые над деревом C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 18:34     Из маленьких исходных текстов, большие выполняемые файлы #20
Как у вас файл в среде открывался (порядок действий)?
Yandex
Объявления
27.10.2013, 18:34     Из маленьких исходных текстов, большие выполняемые файлы
Ответ Создать тему
Опции темы

Текущее время: 23:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru