реклама на сайте
подробности

 
 
> VC2015 и VC2010. Файл вырастает в 3,5раза
megajohn
сообщение Jul 31 2018, 04:57
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Добрый день
вот такой вопрос, есть проект для VC2010, на выходе файл 182k
тот же самый проект, скомпиленный в VC2015 дает файл 614k

посему немного вопросов для тех, кто разбирается в тонкостях линковки:
- каким софтом можно узнать, что же так разрослось ?
- так как конечный результат хочу выложить в свободный доступ для желающих, то какой вариант выкладывать ?

вот эти файлики, если вдруг кому-то проще посмотреть
Прикрепленный файл  prj_VC2010_vs_VC2015.ZIP ( 347.36 килобайт ) Кол-во скачиваний: 13


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Forger
сообщение Jul 31 2018, 07:01
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(megajohn @ Jul 31 2018, 07:57) *
Добрый день
вот такой вопрос, есть проект для VC2010, на выходе файл 182k
тот же самый проект, скомпиленный в VC2015 дает файл 614k

Очевидно, что в более новой среде используются более "свежие" библиотеки.
Возможно, в чем-то отличаются ключи компиляции и линковки.

зы. Стоит ли того эта "мышиная возня"? Ведь оба этих файла легко уместятся даже на архаичную дискету, даже на античную 5-дюймовую, которые нынче можно найти лишь в музеях biggrin.gif




--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
megajohn
сообщение Jul 31 2018, 07:55
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Кэп, просто человеческое любопытство, не более чем.
Ну раз нет так нет


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 31 2018, 09:55
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(megajohn @ Jul 31 2018, 10:55) *
Кэп
Кэп, есть более подходящие ресурсы для того, чтобы задавать подобные необычные вопросы по VS -
там наверняка найдутся гики, которые готовы удавиться ради нескольких лишних килобайтов в exe-ке wink.gif

Цитата(jcxz @ Jul 31 2018, 11:28) *
Такова уж нынешняя тенденция - ресурсов становится больше, значит их надо сожрать. sad.gif

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 31 2018, 10:15
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Jul 31 2018, 12:55) *
в новой stdlib банальный printf теперь умеет выводить строку через встроенный vpn-сервер и на гугль-облако biggrin.gif

И что? Я это не использую. А значит линкёр должен это выкидывать из exe.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 31 2018, 10:20
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Jul 31 2018, 13:15) *
И что? Я это не использую. А значит линкёр должен это выкидывать из exe.

Это нормальный линкер так делает, а тут по-ходу как "звезды лягут" sm.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 31 2018, 11:27
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Jul 31 2018, 13:20) *
Это нормальный линкер так делает, а тут по-ходу как "звезды лягут" sm.gif

Там не только линкёр, а и компилятор - туповатые. Даже в VS2017 на полной оптимизации что творит:
Код
; 397  :     nv0 = chain[0]->nv;
  mov eax, DWORD PTR [edi+104]
  mov eax, DWORD PTR [eax+4]
  mov DWORD PTR [edi+4], eax
; 398  :     fmtn0 = chain[0]->fmt[ixf0 = chain[0]->ixf].n;
  mov eax, DWORD PTR [edi+104]
  mov ecx, DWORD PTR [eax+8]
  mov DWORD PTR [edi+8], ecx
  add ecx, ecx
  mov eax, DWORD PTR [edi+104]
  mov eax, DWORD PTR [eax+ecx*8+24]
  mov DWORD PTR [edi+12], eax

где chain - массив указателей на структуры.
Вместо того, чтобы использовать значение указателя chain[0] ранее загруженное в регистр, зачем-то постоянно перечитывает его из памяти (DWORD PTR [edi+104]). volatile нет.
Даже IAR в этом случае использовал бы копию указателя из регистра, имхо.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 31 2018, 11:52
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Jul 31 2018, 14:27) *
Там не только линкёр, а и компилятор - туповатые.

А предыдущие версии VS тоже такую дичь плодят?


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 31 2018, 12:07
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Jul 31 2018, 14:52) *
А предыдущие версии VS тоже такую дичь плодят?

Не знаю. Надо будет дома на VS2005 проверить. На работе VS2005 уже не ставится на win64 sad.gif((
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 31 2018, 12:20
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Jul 31 2018, 15:07) *
На работе VS2005 уже не ставится на win64 sad.gif((

Виртуалка в помощь sm.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
gte
сообщение Jul 31 2018, 12:42
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613



Цитата(Forger @ Jul 31 2018, 16:20) *
Виртуалка в помощь sm.gif

Кстати. Вопрос ко всем. Может кто нибудь выложить образ или CRC образа winXP для VirtualBox который раздавался с сайта Майкрософт? Сейчас там только win7x32.
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 31 2018, 19:14
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(gte @ Jul 31 2018, 15:42) *
Кстати. Вопрос ко всем. Может кто нибудь выложить образ или CRC образа winXP для VirtualBox который раздавался с сайта Майкрософт? Сейчас там только win7x32.

Оно?

Цитата(jcxz @ Jul 31 2018, 14:27) *
Там не только линкёр, а и компилятор - туповатые. Даже в VS2017 на полной оптимизации что творит:
Код
; 397  :     nv0 = chain[0]->nv;
  mov eax, DWORD PTR [edi+104]
  mov eax, DWORD PTR [eax+4]
  mov DWORD PTR [edi+4], eax
; 398  :     fmtn0 = chain[0]->fmt[ixf0 = chain[0]->ixf].n;
  mov eax, DWORD PTR [edi+104]
  mov ecx, DWORD PTR [eax+8]
  mov DWORD PTR [edi+8], ecx
  add ecx, ecx
  mov eax, DWORD PTR [edi+104]
  mov eax, DWORD PTR [eax+ecx*8+24]
  mov DWORD PTR [edi+12], eax

где chain - массив указателей на структуры.
Вместо того, чтобы использовать значение указателя chain[0] ранее загруженное в регистр, зачем-то постоянно перечитывает его из памяти (DWORD PTR [edi+104]). volatile нет.
Даже IAR в этом случае использовал бы копию указателя из регистра, имхо.

это не оптимизация. Можно код исходный?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 1 2018, 08:57
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(DASM @ Jul 31 2018, 22:14) *
это не оптимизация. Можно код исходный?

Оптимизация wink.gif ....так как с выключением оной там становится ещё страшнее. smile3046.gif
Исходный? Я же листинг привёл с включением исходных строк.

Цитата(jcxz @ Jul 31 2018, 15:07) *
Не знаю. Надо будет дома на VS2005 проверить. На работе VS2005 уже не ставится на win64 sad.gif((

Проверить дома пока не получается - дома +30 и выше - в такой жаре и комп включать не охота. 05.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- megajohn   VC2015 и VC2010. Файл вырастает в 3,5раза   Jul 31 2018, 04:57
|- - mantech   Цитата(megajohn @ Jul 31 2018, 10:55) Кэп...   Jul 31 2018, 08:27
|- - jcxz   Это "нормально". Компилю сейчас под VS20...   Jul 31 2018, 08:28
- - x893   Соберите из консоли с map файлом. И изучайте.   Jul 31 2018, 10:36
- - DASM   определения типов , входящих в эти строки можно? ч...   Aug 1 2018, 09:27
|- - jcxz   Цитата(DASM @ Aug 1 2018, 12:27) определе...   Aug 1 2018, 09:41
|- - XVR   Цитата(jcxz @ Aug 1 2018, 12:41) PS: Копи...   Aug 1 2018, 11:33
|- - jcxz   Цитата(XVR @ Aug 1 2018, 14:33) Нет. В ма...   Aug 1 2018, 12:12
|- - XVR   Цитата(jcxz @ Aug 1 2018, 15:12) Более то...   Aug 1 2018, 15:43
|- - jcxz   Цитата(XVR @ Aug 1 2018, 18:43) Это не та...   Aug 1 2018, 16:03
- - DASM   if (chainN = n) не компилится, это не член OscRaw   Aug 1 2018, 10:13
|- - jcxz   Цитата(DASM @ Aug 1 2018, 13:13) if (chai...   Aug 1 2018, 10:16
- - DASM   где там n?   Aug 1 2018, 10:18
|- - jcxz   Цитата(DASM @ Aug 1 2018, 13:18) где там ...   Aug 1 2018, 10:22
- - DASM   ну а вдруг. Догадаться не могу, тупой я.   Aug 1 2018, 10:24
- - Gate   Мне кажется, здесь объяснено поведение компилятора...   Aug 1 2018, 15:53
- - XVR   Используйте спецификатор __restrict   Aug 1 2018, 15:57
- - DASM   Не не, сливаться не стоит. О restrict точно вспомн...   Aug 1 2018, 16:13
- - jcxz   Цитата(DASM @ Aug 1 2018, 19:13) Не не, с...   Aug 1 2018, 17:15
- - XVR   Цитата(jcxz @ Aug 1 2018, 20:15) restrict...   Aug 2 2018, 06:32


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 06:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01527 секунд с 7
ELECTRONIX ©2004-2016