public void Benchmark_RandomCards() { int handCount = 1000000; #if DEBUG int repCount = 1; #else int repCount = 40; #endif Console.WriteLine("Random hands: {0}, repetitions: {1}, total: {2}", handCount, repCount, handCount * repCount); RandomHandGenerator randomHands = new RandomHandGenerator(); randomHands.Generate(handCount); randomHands.SetMask(5); Console.WriteLine("{0} random 5-hands generated", handCount); DateTime startTime; double runTime; UInt32 checksum = 0; startTime = DateTime.Now; for (int r = 0; r < repCount; ++r) { for (int i = 0; i < handCount; ++i) { UInt32 value = CardSetEvaluator.Evaluate(ref randomHands.hands[i].CardSet); checksum += value; #if DEBUG VerifyHandValue(RefEvaluator.Evaluate(randomHands.hands[i].CardSet.bits, randomHands.hands[i].CardSet.CountCards()), value); #endif } } runTime = (DateTime.Now - startTime).TotalSeconds; PrintResult(handCount * repCount, runTime, checksum); randomHands.SetMask(7); Console.WriteLine("\n{0} random 7-hands generated", handCount); startTime = DateTime.Now; for (int r = 0; r < repCount; ++r) { for (int i = 0; i < handCount; ++i) { UInt32 value = CardSetEvaluator.Evaluate(ref randomHands.hands[i].CardSet); checksum += value; #if DEBUG VerifyHandValue(RefEvaluator.Evaluate(randomHands.hands[i].CardSet.bits, 7), value); #endif } } runTime = (DateTime.Now - startTime).TotalSeconds; PrintResult(handCount * repCount, runTime, checksum); }
public void Test_RandomCards_Array() { int handCount = 1000000; int rngSeed = (int)DateTime.Now.Ticks; Console.WriteLine("Seed: {0}", rngSeed); RandomHandGenerator randomHands = new RandomHandGenerator(rngSeed); randomHands.Generate(handCount); randomHands.SetMask(7); for (int i = 0; i < handCount; ++i) { UInt32 value = LutEvaluator7.Evaluate(randomHands.hands[i].Cards); VerifyHandValue(RefEvaluator.Evaluate(randomHands.hands[i].CardSet.bits, 7), value); } }
public void Benchmark_RandomCards_Indexes() { int handCount = 1000000; #if DEBUG int repCount = 1; #else int repCount = 20; #endif Console.WriteLine("Random hands: {0}, repetitions: {1}, total: {2}", handCount, repCount, handCount * repCount); RandomHandGenerator randomHands = new RandomHandGenerator(); randomHands.Generate(handCount); // Force loading and JIT. UInt32 checksum = LutEvaluator7.Evaluate(0, 1, 2, 3, 4, 5, 6); randomHands.SetMask(7); Console.WriteLine("\n{0} random 7-hands generated", handCount); DateTime startTime = DateTime.Now; for (int r = 0; r < repCount; ++r) { for (int i = 0; i < handCount; ++i) { RandomHandGenerator.Hand h = randomHands.hands[i]; UInt32 value = LutEvaluator7.Evaluate(h.c1, h.c2, h.c3, h.c4, h.c5, h.c6, h.c7); checksum += value; #if DEBUG VerifyHandValue(RefEvaluator.Evaluate(randomHands.hands[i].CardSet.bits, 7), value); #endif } } double runTime = (DateTime.Now - startTime).TotalSeconds; PrintResult(handCount * repCount, runTime, checksum); }