Introduction
I’ve been implementing numerical libraries in .NET and have come to some conclusions about iteration performance. My classes have to hold a large amount of data and be able to iterate through that data as quickly as possible. In order to compare various methods, I created a simple class called Data that encapsulates an array of doubles.
Method #1: Enumeration
Data implements IEnumerable. It contains GetEnumerator which returns its own DataEnumerator, an inner class.
…
public IEnumerator GetEnumerator()
{
return new DataEnumerator( this );
}
internal class DataEnumerator : IEnumerator
{
private Data internal_ = null;
private int index = -1;
public DataEnumerator( Data data )
{
internal_ = data;
}
public object Current
{
get
{
return internal_.Array[index];
}
}
public bool MoveNext()
{
index++;
if ( index >= internal_.Array.Length )
{
return false;
}
return true;
}
public void Reset()
{
index = -1;
}
}
…
Comments