我计划实现一个有界队列而不使用Queue<T>
班级。阅读完优点和缺点后Arrays
and LinkedList<T>
,我更倾向于使用数组来实现队列功能。该集合将是固定大小的。我只想在队列中添加和删除项目。
就像是
public class BoundedQueue<T>
{
private T[] queue;
int queueSize;
public BoundedQueue(int size)
{
this.queueSize = size;
queue = new T[size + 1];
}
}
代替
public class BoundedQueue<T>
{
private LinkedList<T> queue;
int queueSize;
public BoundedQueue(int size)
{
this.queueSize = size;
queue = new LinkedList<T>();
}
}
我选择数组是因为效率以及集合的大小是固定的。想就此征求其他意见。谢谢。
好吧,这将是一个错误。我猜你是前 C/C++ 程序员,std::list 才是王道。从表面上看,它对内存的节省非常少,不可能比仅分配所需的内存更有效地创建列表,对吧?是的,LinkedList 就是这么做的。
但不,它与 CPU 缓存的工作方式极其不兼容,它们really喜欢数组,讨厌指针。将垃圾收集器放在上面,因此非常有能力打包内存。
读完后流泪的基准are here http://www.codeproject.com/Articles/24206/A-look-at-STL-CLR-performance-for-linear-container。斯塔克。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)