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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> 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
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
mantech
сообщение Jul 31 2018, 08:27
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(megajohn @ Jul 31 2018, 10:55) *
Кэп, просто человеческое любопытство, не более чем.
Ну раз нет так нет

Все, как должно быть, программы больше, диски тоже, скорости по сети аналогично... Вы все должны вносить вклад в развитие потребкультуры, в соответствии с политикой партии заокеанских буржуев biggrin.gif

ЗЫ. Вы заметили, насколько больше стал дистрибутив 15 студии от 10 ?? Вот похоже и на выхлопе прямая зависимость...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 31 2018, 08:28
Сообщение #5


Гуру
******

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



Это "нормально". Компилю сейчас под VS2017 проект, тот же проект скомпилённый VS2005 - даёт примерно в 4.5 раза меньший exe-ник. И это при полной оптимизации.
Такова уж нынешняя тенденция - ресурсов становится больше, значит их надо сожрать. sad.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 31 2018, 09:55
Сообщение #6


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

Группа: Свой
Сообщений: 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
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #8


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

Группа: Свой
Сообщений: 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
x893
сообщение Jul 31 2018, 10:36
Сообщение #9


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Соберите из консоли с map файлом.
И изучайте.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 31 2018, 11:27
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #11


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

Группа: Свой
Сообщений: 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
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #13


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

Группа: Свой
Сообщений: 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
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 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

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

 


RSS Текстовая версия Сейчас: 16th April 2024 - 16:43
Рейтинг@Mail.ru


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