Ответ 1
Поскольку вы связали объяснение MSDN, вы знаете, что /Gy гарантирует, что все функции будут упакованы в их собственный COMDAT. Главное преимущество этого заключается в том, что если у вас есть идентичные функции, компоновщик может сворачивать их все в один фактический фрагмент кода ( "Складывание COMDAT" ). Это может иметь очень большие последствия, когда у вас много одинаковых функций, что часто бывает при написании современного С++, который тяжел для шаблонов.
Помимо меньшего размера результирующего исполняемого файла из-за сворачивания COMDAT и устранения неподдерживаемых COMDAT, никакого другого эффекта от /Gy нет. Чтобы быть конкретным, это не помогает в сокращении межпроектных зависимостей.
Стоимость - небольшое увеличение времени компиляции (аналогично другим флагам оптимизатора). Обычно не то, что вы заметите.