mirror of
https://github.com/dlang/dmd.git
synced 2025-05-03 00:20:18 +03:00
39 lines
1 KiB
D
39 lines
1 KiB
D
/**
|
|
* Benchmark on uniformly distributed, random small allocations.
|
|
*
|
|
* Copyright: Copyright David Simcha 2011 - 2011.
|
|
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
|
|
* Authors: David Simcha
|
|
*/
|
|
|
|
/* Copyright David Simcha 2011 - 2011.
|
|
* Distributed under the Boost Software License, Version 1.0.
|
|
* (See accompanying file LICENSE or copy at
|
|
* http://www.boost.org/LICENSE_1_0.txt)
|
|
*/
|
|
import std.random, core.memory, std.stdio, std.conv;
|
|
|
|
void main(string[] args)
|
|
{
|
|
size_t nIter = 10000;
|
|
if(args.length > 1)
|
|
nIter = to!size_t(args[1]);
|
|
|
|
version (RANDOMIZE)
|
|
auto rnd = Random(unpredictableSeed);
|
|
else
|
|
auto rnd = Random(2929088778);
|
|
|
|
auto ptrs = new void*[4096];
|
|
|
|
// Allocate large blocks with size uniformly distributed between 8
|
|
// and 2048 bytes.
|
|
foreach(i; 0..nIter)
|
|
{
|
|
foreach(ref ptr; ptrs)
|
|
{
|
|
immutable sz = uniform(8, 2048, rnd);
|
|
ptr = GC.malloc(sz, GC.BlkAttr.NO_SCAN);
|
|
}
|
|
}
|
|
}
|