为什么visualstudio收费吗 studio?

为什么浮点优化这么重要?为了借助AVX2指令集来优化浮点操作,Visual Studio 2019开发团队一直在努力地工作。下面我们将会简单介绍我们目前已经完成的工作和在Visual Studio v16.5版本中的一些功能改进。浮点操作的速度直接影响到游戏的帧率。新一代的x86和x64处理器已经添加了FMA(Fused Multiply Add)指令集,用来优化和并行化浮点操作。从Visual Studio 2019开始,编译器将会执行更加激进的浮点优化措施,具体来说,就是当使用了[/fp:fast]编译开关时,编译器将会在适合的情况下使用新的浮点指令并对这些指令执行常量传播[constant propagation]。在Visual Studio 2019 v16.2版本中,我们改进了向量化浮点操作的启发机制,并且我们将一些浮点操作可以被缩减为一个常量。在之前的一篇有关游戏性能优化的文章中,描述了上面描述的优化的细节信息。在Visual Studio 2019 v16.5版本中,我们改进了SSA优化器,用来检测可以使用AVX2指令的使用场景,并且改进了有关向量操作的常量传播,其中包括shuffle操作。下面的所有例子程序,都是编译为x64平台并使用到了[/arch:AVX2 /O2 /fp:fast /c /Fa]编译开关。乘法的常量传播从VisualStudio2019v16.2开始,如果初始化向量在编译器是可以预知的情况下,一些浮点向量操作可以被缩减为一个常量。下面是一个平方根反转的函数:从VisualStudiov16.2开始,函数[ReturnInvSqrt]可以被优化为一个常量,如下图所示:Shuffle的常量传播另外一个常用的向量操作的是创建一个标准形式的向量,这样这个向量的长度为1。一个向量的长度是它的数量积的平方根。计算数量积的最简单的方法是使用Shuffle操作。即使是在Visual Studio v16.0中,优化器都可以通过Shuffle操作来进行常量传播优化。但是,由于在FMA常量传播原始实现中有一些排序的问题,Shuffle操作阻止了FMA的常量传播。从VisualStudiov16.5开始,常量传播可以同时处理Shuffle操作和FMA操作。这意味着一个标准化一个向量的平方根反转在编译期可以被优化为一个常量,如果输入在编译期是可知的话。如下图所示:总结浮点操作优化对于游戏开发者来说,是一个很好的机会,谁不想玩一个爽爽的游戏呢?另外,我不玩游戏。
没错,我就是被坑的那代人之一。从最早的Visual C++ 6.0起步,就是这货:那时候刚刚入行,看孙鑫的《深入VC++详解》视频和侯捷的《深入浅出MFC》发家,连C++和VC++都分不清楚,以为C++就是VC6.0+MFC,沉迷在微软的怀抱无法自拔,天天高呼:微软大法好!后来又跟着投入Visual Studio 2008的怀抱,就是这货:在Visual Studio中,除了VC++,还有VC#,从那时起接触了C#,爱上了.NET Framework,惊呼:世上竟有如此强大完美的内裤(类库)。不仅如此,还知道了C++.NET,一个可以执行托管代码的C++。那个时候,恨不得在自己的简历上写上:精通C++开发。工作以后,猛地发现,身边的大神都是写Linux C++的,没几个写Windows C++,我所钟爱的Visual Studio一时竟无用武之地!那时我才发现,我被微软坑了。多年以后的今天,回想当初的学习经历,倒是释然了很多,我不会去怪Visual Studio坑了我,她没有错,错的是我,她如同我的初恋,留在了记忆里,如果非要用两个字来形容,我想那应该是:爱过。

我要回帖

更多关于 visualstudio收费吗 的文章