Производительность действительно зависит от вашего сценария, и всегда случается так, что кто-то предупреждает вас, чтобы вы не оптимизировали преждевременно и не находили узкие места, прежде чем предположить, что что-то происходит медленно или что-то подобное, а также существуют предположения с разных сторон, которые могутне верны;Я действительно согласен с предыдущей частью этого, но не люблю делать поспешные выводы и считаю, что части программы демонстрируются медленнее и, следовательно, призываем к необходимости оптимизации такой части.
При этом, во всяком случае, рассмотрим следующую примитивную, не совсем практичную специальную программу (использующую ваши методы с именами Dequeue
и TryDequeue
здесь, но не в списке):
var data = new byte[4096];
var random = new Random();
var queue = new Queue<byte>();
var stopWatch = new Stopwatch();
TimeSpan dequeueTimespan, tryDequeueTimespan;
stopWatch.Restart();
for (int i = 0; i < 1000000; i++)
{
random.NextBytes(data);
foreach (var item in data)
{
queue.Enqueue(item);
}
Dequeue(queue, 1024);
queue.Clear();
}
stopWatch.Stop();
dequeueTimespan = stopWatch.Elapsed;
stopWatch.Restart();
for (int i = 0; i < 1000000; i++)
{
random.NextBytes(data);
foreach (var item in data)
{
queue.Enqueue(item);
}
TryDequeue(queue, 1024);
queue.Clear();
}
stopWatch.Stop();
tryDequeueTimespan = stopWatch.Elapsed;
Console.WriteLine("Dequeue: {0}", dequeueTimespan);
Console.WriteLine("TryDequeue: {0}", tryDequeueTimespan);
Console.ReadKey();
Сейчас, если мы выполним более 10000 итераций для каждой, мы получим:
Dequeue: 00:00:12.6178244
TryDequeue: 00:00:13.6747715
И для 1000000 итераций для метода:
Dequeue: 00:02:16.4144764
TryDequeue: 00:02:13.2039597
Конечно, мы делаем прочее работа здесь, но это все относительно;мы также преувеличиваем ваш случай здесь, так как вам требуется всего 5 байтов, так что ...
В первом случае снова 10000 итераций:
Dequeue: 00:00:10.5624014
TryDequeue: 00:00:10.2529997
Я не говорю, что этоидеальны, результаты, но они являются результатами;Но дело в следующем.
То, что снижение производительности между ними незначительно.
Есть также много других факторов, которые следует учитывать в практической среде, которые, разумеется, не стоит пытатьсяПеречислите здесь все различия, о которых вы будете (или узнаете), и вам следует потратить время на то, чтобы привязаться к вашему сценарию.