我一直在努力让我们的团队将一个大型C ++项目从VS2008迁移到VS2012。我想这样做主要是因为我想开始使用C ++ 11并且IDE更好。所以我的理由有些自私。
我的团队负责人正在推迟,因为他没有看到迁移的商业案例,理由是我们已经通过BOOST和其他库获得了C ++ 11带来的大多数性能改进功能。他还说,这将需要改变我们所有平台上的运行时间,这可能会改变某些行为。这意味着我们需要重新测试我们部署到的所有服务器。
我有点理解的第一个论点,虽然我相信C ++ 11代码比使用BOOST更清晰(同样不是一个很好的商业案例)。
关于使用不同运行时的争论我不明白。本机C ++应用程序使用哪些运行时?这不是VC ++。他的担心只是STL不会完全相同吗?
我不知道会有什么问题。有什么我想念的吗?还有其他任何有关迁移的好论据,我应该引用它来帮助我的案例吗?
答案 0 :(得分:4)
性能不会发生太大变化,因为你不会用C ++ 11风格进行编码(基本上,很多东西都按照值传递,而不是之前)。如果你的代码库有很多......
std::vector<Blah> func(std::vector<Asdf> v); // notice all the pass by value
... C ++ 11可以带来很大的性能提升。但是在C ++ 98/03中,你不会这样做。
你需要为你的团队领导降低入学门槛。自己进行迁移并对产品进行冒烟测试。然后告诉他。之后,这是升级的抽象原因:
这对你的团队领导是否有吸引力超出了我。祝你好运
答案 1 :(得分:2)
但考虑到您可以在较新的IDE中构建VS2008项目意味着您可以立即升级到VS2013并随着时间的推移将项目升级到VS2013工具。
你的TL是正确的,升级需要完全重新测试,但如果你有时间添加功能,那么就可以适应这么大的测试。
我认为升级的主要方面只是为了保持最新状态,今天并不是什么大不了的事,但是在另外5年时间里,你的旧VS2008版本可能会开始阻碍你(因为我知道最近升级了)一个到2010年的VS2002项目,随着你离开它的时间越来越长,它永远不会是一个好主意,你最终必须做的升级努力就越多。这就是实现这一目标的真正原因 - 微软不会在下一版本中支持2008版本,而旧版IDE将无法在Windows 9上运行,每年都会获得更大的成功。最好在有空的时候解决这个问题。
答案 2 :(得分:0)
我想我不会对性能改进有太多期待,但对于测试,我建议对任何类型的编译器或工具链更改进行全面重新测试,无论您是否更改了代码。
编辑:我将补充一点,我会在下一个发布周期中转移到更新的编译器...这将删除测试参数(因为无论如何你都需要进行测试)。