在VS2013更新2中提升安装性能

[原文发表地址] Improving Setup in Visual Studio 2013 Update 2 [原文发表时间] 1 May 2014 9:00 AM 在几周以前的Build大会上,我们发布了Visual Studio 2013第二个更新的候选发布版。这次Visual Studio的更新包含了重大的新功能,这些功能中包括能够创建针对Windows 和Windows Phone的通用的应用程序。为了能够针对Windows Phone的开发,开发人员需要使用在Windows安装运行Windows Phone操作系统的模拟器。这个模拟器是完整的虚拟机,因此会相当大(几百MB),虽然它们是Windows Phone开发的必要组件,但对于那些想要用Visual Studio进行其他功能的进一步开发的人员来说却不是必需的。VS2013春季更新会异步安装这些模拟器,因此你不用等待安装完成就可以开始进行编码。这个异步安装功能可以在VS完成基本的安装之后在后台继续下载安装其他的组件。我们正开始使用这些模拟器,但是也会注意到可能有助于这个动作的其他的优势,我们下面就来快速的看一下它是怎么工作的。 在VS进行异步安装之前,我们必须选择一些能够在其他的VS组件启动和运行之后适于安装的功能。我们通过着眼于VS组件的某些方面来完成上述动作,这些方面包括下载和硬盘空间,组件安装速度(例如:要进行写入大量注册表值的组件会比不需要写入注册表值的组件安装的更慢)以及使用方式,Windows Phone 8.1 模拟器在这方面做的不错,安装很快(因为它的大小),而且是在编码开始之后进行的。 一旦我们为异步安装选择了候选项,我们编写设置并告诉安装引擎与VS的其他组件分开并同时下载和安装这些候选组件。实事求是的讲,异步下载界面会在一般的安装完成之后以一个最小化的进程对话框的形式出现。异步下载会有一个后台网络优先级以尽量减少对其他的网络活动的影响。这个下载会强制打开VS并重启系统。 图1:异步下载看起来像是在一般的安装完成之后的第二个进度条。 .一旦你用到VS中我们设定的异步安装的部分,VS就会调用这些组件的安装程序并自动安装。对Windows Phone8.1 模拟器来说,当你在Windows Phone8.1工程中选择F5的时候将会引发一个触发器:当你选择F5,你需要选择一个Windows Phone8.1 的硬件或者是Windows Phone 8.1模拟器。如果你选择了模拟器,然后开始安装模拟器。因为模拟器已经下载了,所以它只需要几分钟来完成安装和后续步骤。对Windows Phone8.1 来说,大部分的用户后台的安装时间是在20分钟左右(北美带宽的平均速度)。 一如既往,我们会看你们在这篇博客后的留言,会关注在论坛中的问题,在用户心声上听取你们建议,从用户反馈中追踪好的和不好的地方,同时也会看你们在Connect上边开的任何bug。

0

Visual Studio 2013 中异步解决方案负载性能的改进

[原文发表地址] Asynchronous Solution Load Performance Improvements in Visual Studio 2013 [原文发表时间] 2013-10-14 改善解决方案的负载 过去的几年中,Visual Studio 团队一直在努力提高开发大型解决方案的Visual Studio 的性能和可扩展性。你们很多人特别感兴趣的一个领域是我们最初的解决方案的加载时间。对于Visual Studio 2012,我们实现了使大型解决方案异步加载,这将大大提高我们许多用户的加载速度。对于Visual Studio 2013,我们通过将文档选项卡的初始化推迟到文档被需要使用时,来提高解决方案的负载性能。在这篇文章中,我们将帮助你看到在最新版本中期望看到的变化,以及一些我们从使用预发布版本的客户那里看到的早期性能数据。 大负载 在此之前的VS 2012 ,解决方案是所有资源一次性加载。在加载期间,整个 IDE 将被阻挡,直到为解决方案可用而做的所有必要的准备和初始化完成时为止。使用更大的解决方案的用户可能熟悉此对话框: 对于只有几个项目的一个小的解决方案,加载通常不会花太多时间。但随着解决方案的复杂性和大小的增加,加载该解决方案所需的时间也会增长,等待此对话框消失的时间也会增长。所以当使用VS 2012时,我们问过自己,”如果我们只加载用户需要工作的项目,会发生什么?” 去异步 我们的理由是,在任何时候,开发人员只能积极地工作在一个解决方案中的几个项目。当解决方案被关闭时,如果我们能够确定哪些项目对于开发者来说是最重要的,那么我们就可以在下一次解决方案的加载时,先加载这些项目。其余的项目则可以在不影响开发人员的生产效率的某个时间加载。 上述文章描述了异步加载的解决方案,所以我不会在这里详谈了。但对于这个话题,知道的关键概念是,我们用打开的文档,来确定哪些项目应该在下一次解决方案加载时首先被加载。使用“局部性原理”的概念,我们可以推断,如果一个文件打开着,而该解决方案已经关闭,那么它很可能会在解决方案重新开启后不久被再次需要。为了确保解决方案加载之后该文件是处于可用状态,我们必须载入拥有该文档的项目(以及它所依赖的任何项目),以确保编辑和导航按预期方式工作。因为我们用一个模态对话框阻碍了UI,直到加载完成,我们称此为溶解负载的模态阶段。剩余的项目将在稍后的时间中被异步加载,他们将不会影响开发者的生产效率(被称为意料之中异步阶段)。 进度! 我们的内部测试表明:从异步加载的解决方案中获得重大的潜在收益,但最终的问题是在实践中用户得到了多少收益。为了实现此目的,我们添加了新的遥测点,使我们能够分析异步解决方案加载在我们的客户那里的工作性能如何。使用这些遥测点,我们可以计算出发生Visual Studio 2012 更新3上的负载。虽然也可以异步加载单个项目的解决方案,但他们不是这些改进的重点作用对象,所以我们将首先着眼于至少包含2 个项目的加载。 这些数字是很有前途的。我们查看所有解决方案加载的四分之一,我们推迟加载超过解决方案60%的比例,仅阻碍 IDE 2 秒左右。解决方案加载更多时,我们开始看到异步解决方案负载产生的影响开始减少。到75 个百分点时,解决方案加载几乎同步加载整个解决方案并且响应时间大大增加。 尽管只有 2 个项目的解决方案可以受益于异步加载,但我们预期对于更大的解决方案的影响会更明显。例如,当针对具有 10 个或更多的项目的更大的解决方案时,我们可以看到异步加载产生了更大的影响。 到75 个百分点时,项目的延迟加载比例从 0.3%增加到 18%。虽然模态加载时间略有增加,但如果不推迟项目的加载的话,它将会大得多。 虽然这是令人鼓舞的进展,但是我们想知道什么可以进一步增加异步加载的项目的数目。我们再来看我们的遥测,发现了与速度较慢的加载密切相关的变量之一,即会话之间保持打开状态的文档的数目。 看看在这种方式下只有一个项目并且只有一个打开着的文档的加载,这将会导致模式加载项目的数量大大增加。我们仍然的在IDE的响应时间量上看到明显的改善,但显然有进一步改进的余地。…

1

LightSwitch在VS2013上的出色表现

[原文发表地址]LightSwitch Performance Win in Visual Studio 2013 [原文发表时间]2013-10-09 伴随着Visual Studio 2013 RC的发布,对于HTML客户端和服务器交互时所占用的带宽,我们LightSwitch Team也做了一些改善。一起来看看我们所做的,以及怎么样才能使lightSwitch应用的开发者和用户都获益。 一个不可取的开放式数据协议形式 LightSwitch 用一种基于REST的协议——ODATA来进行客户端和服务器的交互。ODATA可以通过一些不同的方式被格式化。这些当中一个比一个冗余,但是对于我们来说幸运的是微软的ODATA团队最近正致力于寻找方法使得ODATA没那么冗余。 之前发布的LightSwitch HTML客户端使用的是一种称为JSON Verbose的ODATA形式。正如它的名字暗示的一样,这种形式占用不少带宽。 伴随着Visual Studio 2013 RC的发布,LightSwitch现在正在使用一种叫做JSON Light的形式。正如你所猜测的,这种形式占用相当少的带宽。 现在来看看带宽的使用情况,我们得到的结论是仅仅使用了更少的带宽。 节约带宽 最简单的证明方法就是创建一个简单的LightSwitch 应用数据,添加数据到数据库,创建一个简单的界面,然后“启动”我们的APP。我们可以接着使用IE浏览器F12调试工具看一下HTTP请求和响应的带宽大小。 我将演示下制作一个简单的LightSwitch工程。如果你对如何制作LightSwitch工程不熟悉,请查看一个非常简短的教程在我们的教程开发中心。 我同时还制作了一个简单的动画图片展示这些设计阶段的步骤。 登陆Visual Studio然后导航到文件–>创建新项目然后选择一个LightSwitch HTML 应用(LightSwitch 桌面应用使用一个silverlight客户端,它已经从Visual Studio 2012 Updata2开始一直使用Json light 形式)。 当你做完这些以后,接着去点击“添加外部数据库”。我们添加一些已经在数据库里有的数据。(添加的是Northwind ODATA Service)。但是假如你没有可用的有数据的数据库,你可以添加Northwind ODATA Service)。选择你想要导入的表然后点击“完成” 我们需要一些方式去展示数据,那么我们创建一个简单的界面来放数据库里的表。 右击LightSwitch HTML 工程,然后点击“添加界面” 选择“浏览数据界面”模版,然后为你知道有数据的表选择界面(我使用的是Customers表)。 现在我们可以启动我们的app然后使用IE浏览器F12的开发工具去看看特定的HTTP请求。 你可以参照这张动态图上的步骤: 1. 按F5去登陆LightSwitch HTML…

0