相关疑难解决方法(0)

标准堆栈性能问题

最近我正在尝试做一些性能基准测试,比较std::stack<int, std::vector<int>>和我自己的堆栈的简单实现(使用预先分配的内存)。现在我遇到了一些奇怪的行为。

我想问的第一件事是堆栈基准代码中的这一行:

//  std::vector<int> magicVector(10);
Run Code Online (Sandbox Code Playgroud)

当我取消注释这条线时,性能提高了大约 17%(基准时间从 6.5 秒下降到 5.4 秒)。但是该行应该对程序的其余部分没有影响,因为它不会修改任何其他成员。此外,它是int的向量还是double的向量都没有关系......

我想问的第二件事是我的堆栈实现和std::stack. 有人告诉我这std::stack应该和我的堆栈一样快,但结果显示我的“FastStack”是两倍快。

结果(未注释的性能提升线):
stack 5.38979
stack 5.34406
stack 5.32404
stack 5.30519
FastStack 2.59635
FastStack 2.59204
FastStack 2.59713
FastStack 2.64814

这些结果来自 VS2010 的发布版本,带有 /O2、/Ot、/Ob2 和其他默认优化。我的 CPU 是 Intel i5 3570k,具有默认时钟(一个线程为 3.6 GHz)。

我将所有代码放在一个文件中,以便任何人都可以轻松测试它。

#define _SECURE_SCL 0

#include <iostream>
#include <vector>
#include <stack>
#include <Windows.h>

using namespace std;

//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
//  Purpose:    High Resolution Timer
//---------------------------------------------------------------------------------

class HRTimer
{
public:
    HRTimer(); …
Run Code Online (Sandbox Code Playgroud)

c++ windows performance stack

-3
推荐指数
1
解决办法
3984
查看次数

标签 统计

c++ ×1

performance ×1

stack ×1

windows ×1