|
VC2015 и VC2010. Файл вырастает в 3,5раза |
|
|
|
Jul 31 2018, 04:57
|

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

|
Добрый день вот такой вопрос, есть проект для VC2010, на выходе файл 182k тот же самый проект, скомпиленный в VC2015 дает файл 614k посему немного вопросов для тех, кто разбирается в тонкостях линковки: - каким софтом можно узнать, что же так разрослось ? - так как конечный результат хочу выложить в свободный доступ для желающих, то какой вариант выкладывать ? вот эти файлики, если вдруг кому-то проще посмотреть
prj_VC2010_vs_VC2015.ZIP ( 347.36 килобайт )
Кол-во скачиваний: 13
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
 |
Ответов
|
Jul 31 2018, 07:01
|

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

|
Цитата(megajohn @ Jul 31 2018, 07:57)  Добрый день вот такой вопрос, есть проект для VC2010, на выходе файл 182k тот же самый проект, скомпиленный в VC2015 дает файл 614k Очевидно, что в более новой среде используются более "свежие" библиотеки. Возможно, в чем-то отличаются ключи компиляции и линковки. зы. Стоит ли того эта "мышиная возня"? Ведь оба этих файла легко уместятся даже на архаичную дискету, даже на античную 5-дюймовую, которые нынче можно найти лишь в музеях
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jul 31 2018, 11:27
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Forger @ Jul 31 2018, 13:20)  Это нормальный линкер так делает, а тут по-ходу как "звезды лягут"  Там не только линкёр, а и компилятор - туповатые. Даже в 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 в этом случае использовал бы копию указателя из регистра, имхо.
|
|
|
|
|
Jul 31 2018, 19:14
|
Гуру
     
Группа: Свой
Сообщений: 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 в этом случае использовал бы копию указателя из регистра, имхо. это не оптимизация. Можно код исходный?
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 1 2018, 08:57
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(DASM @ Jul 31 2018, 22:14)  это не оптимизация. Можно код исходный? Оптимизация  ....так как с выключением оной там становится ещё страшнее. Исходный? Я же листинг привёл с включением исходных строк. Цитата(jcxz @ Jul 31 2018, 15:07)  Не знаю. Надо будет дома на VS2005 проверить. На работе VS2005 уже не ставится на win64  (( Проверить дома пока не получается - дома +30 и выше - в такой жаре и комп включать не охота.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|