【发布时间】:2011-11-09 11:02:30
【问题描述】:
我有一个包含一些数据的队列。如果我想检索 5 个字节(或者如果少于 5 个,则尽可能多),以下哪种方法更有效,或者没有区别?
选项 1:
byte[] ret = null;
if (this.dataQueue.Count >= numBytes)
{
ret = new byte[numBytes];
}
else
{
ret = new byte[this.dataQueue.Count];
}
for (int i = 0; i < ret.Length; i++)
{
ret[i] = this.dataQueue.Dequeue();
}
return ret;
选项 2:
List<byte> l = new List<byte>();
try
{
for (int i = 0; i < numBytes; i++)
{
l.Add(this.dataQueue.Dequeue());
}
}
catch
{
System.Diagnostics.Debug.WriteLine(string.Format("Unable to retrieve requested number of bytes from queue. ({0} bytes requested, {1} bytes available)", numBytes, l.Count));
}
return l.ToArray();
提前感谢您的任何建议。
【问题讨论】:
-
你做过测试吗?
-
您是否真的遇到了要解决的性能问题?如果是,您是否认为这是瓶颈?
-
当您说“队列”时,您具体指的是什么?您使用的是哪种数据结构?
-
我还没有进行任何测试。我没有看到任何瓶颈。我刚刚意识到有两种方法可以执行相同的任务,并且比什么都好奇。我正在使用 System.Collections.Generic.Queue