Just to add to everyone else's commentary you should in some
circumstances also prefer LinkedList<T> over List<T> for performance
reasons (in particular if you are adding and removing alot of head
nodes from a large list as this is List<T>'s worst case (due to large
copies of arrays internally). As an example:
class Foo
{
public int i;
public string s;
public Foo(int _i, string _s)
{
i = _i;
s = _s;
}
}
static void Main(string[] args)
{
int Iterations = 100000;
List<Foo> ListFoo = new List<Foo>();
LinkedList<Foo> LinkedListFoo = new LinkedList<Foo>();
Foo f;
for (int i = 0; i < 10000; i++)
{
f = new Foo(i, i.ToString());
ListFoo.Add(f);
LinkedListFoo.AddLast(f);
}
Stopwatch s = new Stopwatch();
f = new Foo(12, "test");
Console.WriteLine("Starting test on List<T>");
s.Start();
for (int i = 0; i < Iterations; i++)
{
ListFoo.RemoveAt(0);
ListFoo.Insert(0, f);
}
s.Stop();
Console.WriteLine(Iterations + " iterations took " + s.Elapsed);
Console.WriteLine("Starting test on List<T>");
s.Reset();
s.Start();
for (int i = 0; i < Iterations; i++)
{
LinkedListFoo.RemoveFirst();
LinkedListFoo.AddFirst(f);
}
s.Stop();
Console.WriteLine(Iterations + " iterations took " + s.Elapsed);
}
output:
Starting test on List<T>
100000 iterations took 00:00:02.3082447
Starting test on List<T>
100000 iterations took 00:00:00.0173658
Cheers,
Greg
On 7/4/07, Martín Salías <[EMAIL PROTECTED]> wrote:
Hi, Russell.
Beside what the rest said, I would advise you to prefer a generic collection
always, as the non-generic once can be slowly phased out as versions pass.
Indeed, the .NET framework for Silverlight doesn't have them available
anymore. Generics are also better type-safe and performance wise, and lead
to much cleaner code in general in my opinion.
Regards,
--
Martín Salías
www.Salias.com.ar
Agile Alliance Member - Microsoft MVP
On 7/3/07, Russell Collins <[EMAIL PROTECTED]> wrote:
>
> I am trying to determine if I should use a generic List<T> or a
> HashTable to hold some data objects. The main thing is that I want to
> know if there is general knowledge that one just performs better than
> the other. Any feedback would be greatly appreciated.
>
> ===================================
> This list is hosted by DevelopMentor(r) http://www.develop.com
>
> View archives and manage your subscription(s) at
> http://discuss.develop.com
>
===================================
This list is hosted by DevelopMentor(r) http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com
--
Studying for the Turing test
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com