public void TestLotsOfSleepyEntities() { int numEntities = 1500; int numIterations = 200 * numEntities; int[] iterationCounter = new int[1]; var entities = new List <SleepyEntity>(); for (int i = 0; i < numEntities; i++) { entities.Add(new SleepyEntity(i, entities, iterationCounter)); } foreach (var e in entities) { e.Start(Scheduler); } int j = 0; long timeStart = Time.Ticks; while (iterationCounter[0] < numIterations) { Scheduler.WaitForWorkItems(1.0); Scheduler.Step(); j += 1; if ((j % 800) == 0) { Console.Out.WriteLine("."); } else if ((j % 10) == 0) { Console.Out.Write("."); } } long timeEnd = Time.Ticks; long elapsed = (timeEnd - timeStart); Console.Out.WriteLine(""); int totalEntitySteps = 0; foreach (var e in entities) { totalEntitySteps += e.NumSteps; } double elapsedSeconds = TimeSpan.FromTicks(elapsed).TotalSeconds; Console.WriteLine("{0} iterations in {1:N2} secs. {2} entity steps @ {3} entities/sec", j, elapsedSeconds, totalEntitySteps, totalEntitySteps / elapsedSeconds); }