Fixed-size arrays and randomShuffle()

Chris Cain clcain at uncg.edu
Thu May 3 08:31:16 PDT 2012


On Thursday, 3 May 2012 at 14:41:20 UTC, Vidar Wahlberg wrote:
> I tried those two as well. Still significantly slower than what 
> I can achieve in Java.

You might want to post your code... I wrote this code in D:
-=-=-=-

import std.random, std.stdio, std.datetime;

void main() {
	int[] arr = new int[5_000_000];
     foreach(i, ref e; arr)
         e = i;

     StopWatch sw = AutoStart.yes;
     arr.randomShuffle();
     sw.stop();

     writeln("Took ", sw.peek().to!("msecs", double)(), "ms");
}

-=-=-=-

And it performed _identically_ to this in Java:

-=-=-=-

import java.util.ArrayList;
import java.util.Collections;

public class Main {
	public static void main(String[] args) {
		ArrayList<Integer> ints = new ArrayList<>(5000);
		for(int i = 0; i < 5_000_000; ++i)
			ints.add(i);

		long startTime = System.currentTimeMillis();
		Collections.shuffle(ints);
		long endTime = System.currentTimeMillis();

		System.out.println("Took " + (endTime - startTime) + "ms");
	}
}

-=-=-=-


More information about the Digitalmars-d-learn mailing list