C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
C# program that uses Clear on List
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> ids = new List<int>();
ids.Add(10);
ids.Add(11);
Console.WriteLine("COUNT: {0}", ids.Count);
// Do not assign anything to clear.
ids.Clear();
Console.WriteLine("COUNT: {0}", ids.Count);
}
}
Output
COUNT: 2
COUNT: 0
Version 1: This code calls Clear on an existing List and then adds 100 ints to it.
Version 2: This code instead changes the reference to point to a new List with capacity of 100.
CapacityResult: Both methods have the same result, which is a list of 100 integers from 0 to 99. The first version requires a non-null reference.
C# program that benchmarks List Clear method
using System;
using System.Collections.Generic;
using System.Diagnostics;
class Program
{
const int _max = 1000000;
static void Main()
{
// ... New list.
var list = new List<int>(100);
// Version 1: clear 1 list and reuse it many times.
var s1 = Stopwatch.StartNew();
for (int i = 0; i < _max; i++)
{
list.Clear();
for (int x = 0; x < 100; x++)
{
list.Add(x);
}
}
s1.Stop();
// Version 2: create a new list on each use.
var s2 = Stopwatch.StartNew();
for (int i = 0; i < _max; i++)
{
list = new List<int>(100);
for (int x = 0; x < 100; x++)
{
list.Add(x);
}
}
s2.Stop();
Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) /
_max).ToString("0.00 ns"));
Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) /
_max).ToString("0.00 ns"));
}
}
Output
534.52 ns List Clear
274.80 ns new List
Info: This depends on how fast the Clear() method is versus the speed of the memory allocation.
Important: Avoiding new collection allocations is not a reliable optimization. Simply creating a new List when one is needed is best.