1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
/**
* Benchmark increasing/decreasing AA size.
*
* Copyright: Copyright Martin Nowak 2011 - 2011.
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Authors: Martin Nowak
*/
import std.random;
enum Count = 1_000;
enum MinSize = 512;
enum MaxSize = 16_384;
void runTest(Random gen)
{
bool[uint] aa;
sizediff_t diff = MinSize;
size_t cnt = Count;
do
{
while (diff > 0)
{
auto key = uniform(0, MaxSize, gen);
if (!(key in aa))
{
aa[key] = true;
--diff;
}
}
while (diff < 0)
{
auto key = uniform(0, MaxSize, gen);
if (!!(key in aa))
{
aa.remove(key);
++diff;
}
}
auto nsize = uniform(MinSize, MaxSize, gen);
diff = nsize - aa.length;
} while (--cnt);
}
void main()
{
version (RANDOMIZE)
auto gen = Random(unpredictableSeed);
else
auto gen = Random(12);
runTest(gen);
}
|