草庐IT

OPTIMIZATION

全部标签

c++ - 你有没有通过使用 boost::pool 获得显着的 boost ?

我在一些地方玩了boost::pool几次,在我看来我正在用大量的对象“搅动”严重地敲打堆。通常我使用boost::object_pool或boost::pool_alloc作为STL模板参数。然而,结果始终是性能几乎没有变化,或者显着恶化。我很想知道它有什么成功案例。我应该在分析输出中寻找哪些可能表明boost::pool可能有帮助的东西?真的很难改进旧的malloc吗? 最佳答案 内存池是imo最有效的事务处理方式,您可以在其中分配给池,然后在事务完成后,将其转储到遗忘中。真正的boost并不是每次分配都会快得多,而是在一个运行

c++ - 否定 std::vector 的最快方法

假设我有一个double的std::vector,即std::vectorMyVec(N);N如此之大以至于性能很重要。现在假设MyVec是一个非平凡vector(即它不是一个零vector,但已被某些例程修改)。现在,我需要negated版本的vector:我需要-MyVec。到目前为止,我一直在通过实现它std::transform(MyVec.cbegin(),MyVec.cend(),MyVec.begin(),std::negate());但是,真的,我不知道这是明智之举,还是在我看来这只是太天真了。我做得对吗?或者std::transform在这种情况下只是一个super慢

c++ - 否定 std::vector 的最快方法

假设我有一个double的std::vector,即std::vectorMyVec(N);N如此之大以至于性能很重要。现在假设MyVec是一个非平凡vector(即它不是一个零vector,但已被某些例程修改)。现在,我需要negated版本的vector:我需要-MyVec。到目前为止,我一直在通过实现它std::transform(MyVec.cbegin(),MyVec.cend(),MyVec.begin(),std::negate());但是,真的,我不知道这是明智之举,还是在我看来这只是太天真了。我做得对吗?或者std::transform在这种情况下只是一个super慢

C++ 编译器可以内联函数指针吗?

假设我有一个函数functionProxy,它接受一个泛型参数function并调用它的operator():templatevoidfunctionProxy(Functionfunction){function();}传递给它的对象可能是:仿函数:structFunctor{voidoperator()()const{std::cout一个函数:voidfunction(){std::cout一个(C++0x)lambda函数:[](){std::coutintmain(){functionProxy(Functor());functionProxy(function);funct

C++ 编译器可以内联函数指针吗?

假设我有一个函数functionProxy,它接受一个泛型参数function并调用它的operator():templatevoidfunctionProxy(Functionfunction){function();}传递给它的对象可能是:仿函数:structFunctor{voidoperator()()const{std::cout一个函数:voidfunction(){std::cout一个(C++0x)lambda函数:[](){std::coutintmain(){functionProxy(Functor());functionProxy(function);funct

c++ - C++ 的优化技术

几天前他在Facebook的演讲中-slides,video,AndreiAlexandrescu谈到了可能证明我们错了的常见直觉。对我来说,幻灯片7中出现了一个非常有趣的观点,他指出假设“更少的指令=更快的代码”是不正确的,更多的指令并不一定意味着更慢的代码。我的问题来了:他的演讲(大约6分20秒)的音频质量不是很好,我不太理解解释,但据我所知,他正在比较退休指令与最优性一种性能级别的算法。但是,据我了解,这是无法做到的,因为这是两个独立的结构级别。指令(尤其是实际停用的指令)是一项非常重要的衡量标准,基本上,它可以让您了解实现目标的性能。如果我们忽略一条指令的延迟,我们可以概括出更

c++ - C++ 的优化技术

几天前他在Facebook的演讲中-slides,video,AndreiAlexandrescu谈到了可能证明我们错了的常见直觉。对我来说,幻灯片7中出现了一个非常有趣的观点,他指出假设“更少的指令=更快的代码”是不正确的,更多的指令并不一定意味着更慢的代码。我的问题来了:他的演讲(大约6分20秒)的音频质量不是很好,我不太理解解释,但据我所知,他正在比较退休指令与最优性一种性能级别的算法。但是,据我了解,这是无法做到的,因为这是两个独立的结构级别。指令(尤其是实际停用的指令)是一项非常重要的衡量标准,基本上,它可以让您了解实现目标的性能。如果我们忽略一条指令的延迟,我们可以概括出更

c++优化整数数组

我有一个int16_t的二维查找表。int16_tmy_array[37][73]={{**DATAHERE**}}我混合了从int8_t范围之上到int8_t范围之下的值,其中一些值会重复。我正在尝试减小此查找表的大小。到目前为止,我所做的是将每个int16_t值拆分为两个int8_t值,以可视化浪费的字节。int8_tpart_1=original_value>>4;int8_tpart_2=original_value&0x0000FFFF;//Iftheupper4bitsoftheoriginal_valuewereemptyif(part_1==0)wasted_bytes

c++优化整数数组

我有一个int16_t的二维查找表。int16_tmy_array[37][73]={{**DATAHERE**}}我混合了从int8_t范围之上到int8_t范围之下的值,其中一些值会重复。我正在尝试减小此查找表的大小。到目前为止,我所做的是将每个int16_t值拆分为两个int8_t值,以可视化浪费的字节。int8_tpart_1=original_value>>4;int8_tpart_2=original_value&0x0000FFFF;//Iftheupper4bitsoftheoriginal_valuewereemptyif(part_1==0)wasted_bytes

c++ - 我应该多担心英特尔 C++ 编译器为 AMD 发出次优代码?

我们一直是一家英特尔商店。所有开发人员都使用Intel机器,最终用户推荐的平台是Intel,如果最终用户想在AMD上运行,那是他们的了望。也许测试部门在某处有一台AMD机器来检查我们没有交付任何完全损坏的东西,但仅此而已。直到几年前,我们还只使用了MSVC编译器,因为它并没有真正提供很多超出SSE级别的处理器调整选项,所以没有人担心代码是否会偏向某个x86供应商。然而,最近我们一直在使用英特尔编译器。我们的东西肯定会从中获得一些显着的性能优势(在我们的英特尔硬件上),它的矢量化能力意味着更少需要去asm/intrinsics。然而,人们开始对英特尔编译器是否实际上可能没有为AMD硬件做