megajohn 3 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Добрый день вот такой вопрос, есть проект для VC2010, на выходе файл 182k тот же самый проект, скомпиленный в VC2015 дает файл 614k посему немного вопросов для тех, кто разбирается в тонкостях линковки: - каким софтом можно узнать, что же так разрослось ? - так как конечный результат хочу выложить в свободный доступ для желающих, то какой вариант выкладывать ? вот эти файлики, если вдруг кому-то проще посмотреть prj_VC2010_vs_VC2015.ZIP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Добрый день вот такой вопрос, есть проект для VC2010, на выходе файл 182k тот же самый проект, скомпиленный в VC2015 дает файл 614k Очевидно, что в более новой среде используются более "свежие" библиотеки. Возможно, в чем-то отличаются ключи компиляции и линковки. зы. Стоит ли того эта "мышиная возня"? Ведь оба этих файла легко уместятся даже на архаичную дискету, даже на античную 5-дюймовую, которые нынче можно найти лишь в музеях :biggrin: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Кэп, просто человеческое любопытство, не более чем. Ну раз нет так нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Кэп, просто человеческое любопытство, не более чем. Ну раз нет так нет Все, как должно быть, программы больше, диски тоже, скорости по сети аналогично... Вы все должны вносить вклад в развитие потребкультуры, в соответствии с политикой партии заокеанских буржуев :biggrin: ЗЫ. Вы заметили, насколько больше стал дистрибутив 15 студии от 10 ?? Вот похоже и на выхлопе прямая зависимость... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Это "нормально". Компилю сейчас под VS2017 проект, тот же проект скомпилённый VS2005 - даёт примерно в 4.5 раза меньший exe-ник. И это при полной оптимизации. Такова уж нынешняя тенденция - ресурсов становится больше, значит их надо сожрать. :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба КэпКэп, есть более подходящие ресурсы для того, чтобы задавать подобные необычные вопросы по VS - там наверняка найдутся гики, которые готовы удавиться ради нескольких лишних килобайтов в exe-ке ;) Такова уж нынешняя тенденция - ресурсов становится больше, значит их надо сожрать. :( в новой stdlib банальный printf теперь умеет выводить строку через встроенный vpn-сервер и на гугль-облако :biggrin: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба в новой stdlib банальный printf теперь умеет выводить строку через встроенный vpn-сервер и на гугль-облако :biggrin: И что? Я это не использую. А значит линкёр должен это выкидывать из exe. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба И что? Я это не использую. А значит линкёр должен это выкидывать из exe. Это нормальный линкер так делает, а тут по-ходу как "звезды лягут" :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Соберите из консоли с map файлом. И изучайте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Это нормальный линкер так делает, а тут по-ходу как "звезды лягут" :) Там не только линкёр, а и компилятор - туповатые. Даже в 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 в этом случае использовал бы копию указателя из регистра, имхо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Там не только линкёр, а и компилятор - туповатые. А предыдущие версии VS тоже такую дичь плодят? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба А предыдущие версии VS тоже такую дичь плодят? Не знаю. Надо будет дома на VS2005 проверить. На работе VS2005 уже не ставится на win64 :((( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба На работе VS2005 уже не ставится на win64 :((( Виртуалка в помощь :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Виртуалка в помощь :) Кстати. Вопрос ко всем. Может кто нибудь выложить образ или CRC образа winXP для VirtualBox который раздавался с сайта Майкрософт? Сейчас там только win7x32. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 31 июля, 2018 Опубликовано 31 июля, 2018 · Жалоба Кстати. Вопрос ко всем. Может кто нибудь выложить образ или CRC образа winXP для VirtualBox который раздавался с сайта Майкрософт? Сейчас там только win7x32. Оно? Там не только линкёр, а и компилятор - туповатые. Даже в 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 в этом случае использовал бы копию указателя из регистра, имхо. это не оптимизация. Можно код исходный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться