从性能角度看:C++ 11的性能会优于它的前辈吗? 我知道C++ 11和后来的C++提供了很多实用工具,使开发人员更容易工作。但是,从性能的角度来看,C++ 11的性能是否优于它的前辈? 一个实例,C++ 11的STD::Trink可以跨平台工作,但是在C++ 0x中,我们必须为Windows和Linux都做包装。就性能而言,std::thread是否会表现得更好?

从性能角度看:C++ 11的性能会优于它的前辈吗? 我知道C++ 11和后来的C++提供了很多实用工具,使开发人员更容易工作。但是,从性能的角度来看,C++ 11的性能是否优于它的前辈? 一个实例,C++ 11的STD::Trink可以跨平台工作,但是在C++ 0x中,我们必须为Windows和Linux都做包装。就性能而言,std::thread是否会表现得更好?,c++,c++11,C++,C++11,几个C++11特性,即移动语义,可以显著提高性能。但主要是针对显式编写以利用它的代码 但许多性能改进也将自动适用于未修改的代码,因为编译器将能够自动推断移动语义和其他新的语言功能可以在何处使用 但是,为了获得最佳结果,请编写代码以明确利用C++11的特性 一些性能改进将是间接的。其他语言特性使编写最佳代码更容易、更快;我特别想到了constexpr。这通常也会带来更好的性能。C++11的主要性能优势是支持移动构造/分配和标准指定的拷贝省略。后者免费改进了大量代码,前者仍然有利于使用STL集合和其

几个C++11特性,即移动语义,可以显著提高性能。但主要是针对显式编写以利用它的代码

但许多性能改进也将自动适用于未修改的代码,因为编译器将能够自动推断移动语义和其他新的语言功能可以在何处使用

但是,为了获得最佳结果,请编写代码以明确利用C++11的特性


一些性能改进将是间接的。其他语言特性使编写最佳代码更容易、更快;我特别想到了constexpr。这通常也会带来更好的性能。

C++11的主要性能优势是支持移动构造/分配和标准指定的拷贝省略。后者免费改进了大量代码,前者仍然有利于使用STL集合和其他标准类型重新编译的现有代码,这些标准类型通常支持移动语义,并从中受益,即使使用它们的代码没有显式地选择加入;如果代码没有适当地显式使用std::move等,那么这些好处是有限的,但仍然存在


据我所知,其余的绝大多数基本上都是语法糖std::thread只是包装了现有的线程API;它在很大程度上是模板化/内联的,因此开销很小或根本不存在,但它也不会以某种方式为您带来性能优势。也就是说,运行时性能通常不如开发人员周期重要;语法糖是一个巨大的好处,因为它意味着编写C++11更容易。auto的存在意味着模板可以做更复杂的事情,而不必强迫开发人员编写荒谬的声明来描述模板正在做什么;他们只是使用auto,让类型推断来解决这个问题。

std::thread是本机线程的包装器。所以就性能而言,除了可能的开销之外,它不应该有任何区别。std::thread只是一个例子。我们还有很多其他的东西,对吗?支持C++11以后的一个明显的性能增益是移动语义。final有助于在编译时解析某些虚拟分派情况。C++11也是第一个正式引入哈希表的标准,尽管C++03的实现是可用的。是的,还有其他东西,但它太宽泛了,无法讨论所有内容。