]> git.llucax.com Git - personal/website.git/blob - source/blog/posts/2010/08/14-memory-allocation/rnddata.d
Move eventxx submodule to the repo subdir
[personal/website.git] / source / blog / posts / 2010 / 08 / 14-memory-allocation / rnddata.d
1 // Written by Oskar Linde <oskar.lindeREM@OVEgmail.com>
2 // Found at http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=46407
3 // Sightly modified by Leandro Lucarella <llucax@gmail.com>
4 // (changed the main loop not to be endless and ported to Tango)
5
6 import tango.math.random.Random;
7
8 const IT = 125; // number of iterations, each creates an object
9 const BYTES = 1_000_000; // ~1MiB per object
10 const N = 50; // ~50MiB of initial objects
11
12 class C
13 {
14         C c; // makes the compiler not set NO_SCAN
15         long[BYTES/long.sizeof] data;
16 }
17
18 void main() {
19         auto rand = new Random();
20         C[] objs;
21         objs.length = N;
22         foreach (ref o; objs) {
23                 o = new C;
24                 foreach (ref x; o.data)
25                         rand(x);
26         }
27         for (int i = 0; i < IT; ++i) {
28                 C o = new C;
29                 foreach (ref x; o.data)
30                         rand(x);
31                 // do something with the data...
32         }
33 }
34