【发布时间】:2014-01-13 00:56:54
【问题描述】:
如果我们假设我们有一个典型的队列实现(带有代表节点的链表、一个计数器、一个推送方法和一个弹出方法),那么衡量到达率和速率的最佳方法是什么新项目离开列表?我需要两个单独的线程,一个两个测量每个速率吗?
欢迎任何伪代码/想法!
(我只是快速写了这个来帮助任何答案。为简单起见省略了模板)
class my_queue{
public:
struct Node{
Node* next;
Node* previous;
int data;
}
Node* head;
Node* tail;
int queue_size;
my_queue(){}
int pop(){
Node* old_head = head;
Node* new_head = old_head->previous;
new_head->next = null;
head = new_head;
int data = old_head->data
delete old_head;
queue_size--;
return data;
}
void push(int data){
Node* new_tail = new Node();
new_node->data = data;
Node* old_tail = tail;
old_tail->previous = new_tail;
new_node->next = old_tail;
tail = new_tail;
queue_size++;
}
int getSize(){
return queue_size;
}
};
【问题讨论】:
-
您可以使用提供函数调用计数的分析器来代替修改代码。在给定时间段内使用您要测量的工作负载运行程序。
标签: c++ multithreading c++11 queue chrono