[Перевод] Visual Studio “15” Preview 5
Значительный шаг вперёд в производительности и экономии памяти
Я хотел бы начать с видео, которое очень хорошо показывает рост производительности в данном превью. Здесь показана загрузка проекта Roslyn, которая ранее занимала 60 секунд, а в новом превью полностью заканчивается уже к 30-ой секунде.
Ускорение загрузки является результатом нескольких усовершенствований, таких как, например, легковесная загрузка проектов и загрузка по требованию расширений. Весь список нововведений включает следующие вещи:
Меньшее время загрузки благодаря новой «легковесной» загрузке. Если у вас есть сотня проектов — это не значит, что с каждым из них вы будете работать прямо сейчас. VS »15» даёт возможность редактировать, собирать и отлаживать код без необходимости ждать загрузки всех проектов. Вы можете протестировать эту возможность с управляемыми (managed) проектами, путём включения галочки «Lightweight Solution Load» в Tools → Options → Projects and Solutions.
Ускорение загрузки благодаря отложенной загрузке расширений. Идея проста: загружать расширения тогда, когда они понадобятся, а не сразу при запуске Visual Studio. В данном превью мы начали работать над тем, чтобы загружать наши расширения для Python и Xamarin только когда (и если!) они понадобятся. В будущем все расширения (как от Microsoft, так и от сторонних фирм) будут работать по этой схеме. Если вам интересно, как то или иное расширение влияет на скорость загрузки Visual Studio, то теперь вы можете это узнать, открыв в меню Help → Manage Visual Studio Performance. Вы разрабатываете своё расширение? Мы вскоре опубликуем рекомендации на счёт того, как перевести его на новую схему работы с отложенной загрузкой.
Перемещение некотрых подсистем, активно использующих память, из главного процесса Visual Studio в отдельные процессы. Мы выделили некоторые компоненты, такие как Git Source Control, Javascript и Typescript-сервисы в отдельные процессы. Это позволило уменьшить влияние от пауз в их работе на отзывчивость пользовательского интерфейса в главном процессе Visual Studio. Кроме того, это позволило уйти дальше от лимита в 4 ГБ памяти на один процесс, налагаемый 32-битными версиями операционной системы. Мы планируем продолжить работу по выделению подсистем в отдельные процессы в следующих релизах.
Более быстрая загрузка, редактирование и отладка С++ проектов. Мы отдельно повысили производительность работы с С++ кодом. Посмотрите вот это видео. Вы можете включить данную возможность для своих проектов с помощью опции «Enable Faster Project Load», которая находится в Tools → Options → Text Editor → C/C++ → Experimental. Мы также внесли изменение в линковщик и механизм загрузки PDB-файлов для того, чтобы сделать запуск отладчика значительно более быстрым, а также уменьшить потребление памяти во время отладки.
Улучшена скорость работы Git, отладки и редактирования XAML. Мы ускорили работу с Git путём замены использования libgit2 на git.exe. Скорость работы отладчика повышена за счёт оптимизации затрат на инициализацию, использование IntelliTrace и Diagnostic Tools. Также удалось убрать несколько задержек, возникающих при редактировании XAML-файлов.
Это только начало и мы продолжаем работать над тем, чтобы сделать Visual Studio быстрее, отзывчевее, более экономной к памяти. В следующих статьях блога команды Visual Studio мы постараемся детальнее рассказать о каждом из нововведений.
Улучшение продуктивности
В Visual Studio »15» есть также ряд новых возможностей, направленных на повышение производительности труда программиста
Редактирование кода
Фильтры IntelliSense теперь доступны для C#, VB и C++. При использовании сложных API вы можете сузить область до лишь того типа объектов, который вам интересен в данный момент (например, методов, свойств или событий). В C# и Visual Basic мы определяем «требуемый тип», который ожидается в текущей позиции и заранее выбираем из списка сущности соответствующего типа. Это ускоряет ваш набор кода и убирает необходимость перебирать ненужные пункты в списке.
В С++ у нас также появилась экспериментальная поддержка аналогичной функциональности, она называется Predictive IntelliSense и точно так же избавляет программиста от листания длинных списков автодополнения. Будут показываться только актуальные в данном контексте подсказки, отсортированные по вероятности того, насколько они могут быть полезны. Данную возможность можно включить в Tools > Options > Text Editor > C/C++ > Experimental.
Для XAML мы добавили возможность автодополнения для x: Bind, что позволяет удобно биндиться к свойствам и событиям. Автодополнение пространств имён позволяет дописывать префиксы, если ссылка на пространство имён уже существует. IntelliSense для XAML также был обновлён таким образом, чтобы отфильтровывать неподходящие типы и свойства.
Для JavaScript мы полностью переписали сервис поддержки IntelliSense. Раньше движок JavaScript непрерывно выполнял набранный код по ходу того, как вы его печатали. Это давало возможность получить списки автодополнения на рантайме. Подобный динамизм — хорошая штука и вообще суть JavaScript, однако не лучший способ помощи программисту при редактировании кода. Новый сервис использует статический анализ для более качественного автодополнения, включая все возможности ES6/ES7.
Быстрые правки и рефакторинг
Для того, чтобы помочь вам поддерживать ваш код в хорошем, читаемом состоянии мы добавили ещё больше быстрых правок (Quick Actions) и возможностей рефакторинга для C# и Visual Basic. Например, «Move Type to Matching File» перемещает тип в новый файл, имеющий такое же имя. «Sync File and Type Name» позволяет переименовать тип таким образом, чтобы его имя соответствовало названию файла, в котором он находится (или наоборот). И, наконец, «Convert to Interpolated String» позволяет задействовать доступную в C# 6.0 и VB14 возможность использования интерполлированых строк вместо «string.Format».
Навигация по коду
Осмотреться вокруг и понять, где находишься бывает непросто при работы с большой кодовой базой. Мы добавили несколько новых возможностей, связанных с навигацией. Go To: (Ctrl +, или Ctrl + T) позволит вам быстро найти файлы, типы, методы или другие типы сущностей в вашем коде.
Найти все ссылки (Shift+F12) помогает вам разобраться в связях кода, даже в очень больших кодовых базах. Эта возможность позволяет группировать, фильтровать, сортировать и искать результаты, а для некоторых языков также поддерживает выделение цветами, что позволяет лучше сориентироваться и понять зависимости в коде.
Отладка
В Preview 5 мы добавили новую экспериментальную возможность Run to Click. Вам больше не нужно устанавливать временные точки останова для того, чтобы пропустить не интересный вам блок и остановиться на конкретной строке. При остановке в отладчике просто кликните на иконке, которая появится на нужной вам строке. Отладчик запустит выполнение кода с текущего места и до позиции, на которую вы указали. Вы можете включить данную возможность в Debug > Options > Enable Run to Click.
Самое время попробовать
В данной статье расказано не всё о данном превью, полный список нововведений есть в release notes.
Несколько важным особенностей данного превью. Прежде всего, оно является неподдерживаемым, а значит не стоит пока использовать его в критичных производственных процессах. Во-вторых, данное превью может быть установлено параллельно с предыдущими версиями Visual Studio, но не может быть установлено параллельно с другими превью Visual Studio »15», а значит их придётся удалить до его установки. Подробнее об этом можно прочесть в часто задаваемых вопросах.
Как всегда, обратная связь приветствуется. Для сообщений об ошибках вы можете воспользоваться встроенной в Visual Studio и инсталлятор функцией Report a Problem. Оставить свой отзыв можно на портале разработчиков. Советы и предложения принимаются на UserVoice