dmd/druntime/benchmark/aabench/resize.d
2022-07-09 18:53:15 +02:00

56 lines
1.1 KiB
D

/**
* 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 = 256;
enum MinSize = 512;
enum MaxSize = 16_384;
void runTest(RNG)(RNG 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 = Xorshift32(unpredictableSeed);
else
auto gen = Xorshift32(33);
runTest(gen);
}