Onderstaande stukken code zijn identiek, behalve dat in de onderste code 1 regel in commentaar is gezet (namelijk het toevoegen aan de TreeSet). Opmerkelijk is dat de eerste code consequent 3 seconden sneller is dan de tweede code. Tijdens het testen had ik beide stukken code in dezelfde functie onder elkaar staan. Tevens gaat het niet om een eenmalige test (dus toeval). De runtimes zijn namelijk keer op keer zeer constant.
Snellere code (avg runtime: 38 s):
Tragere code (avg runtime: 41 s):
Ik ben erg nieuwsgierig hoe dit kan, wellicht dat iemand hier een idee heeft?
Snellere code (avg runtime: 38 s):
Java:
1
2
3
4
5
6
7
8
9
| long start_time1 = new Date().getTime(); int nr1 = 0; TreeSet<Coloring> population1 = new TreeSet<Coloring>(); while (nr1 < 1000) { nr1++; Coloring coloring = VD(random(colors)); population1.add(coloring); } System.out.println("TIME USED FOR TEST: "+(new Date().getTime()-start_time1)); |
Tragere code (avg runtime: 41 s):
Java:
1
2
3
4
5
6
7
8
9
| long start_time = new Date().getTime(); int nr = 0; TreeSet<Coloring> population = new TreeSet<Coloring>(); while (nr < 1000) { nr++; Coloring coloring = VD(random(colors)); //population.add(coloring); } System.out.println("TIME USED FOR TEST: "+(new Date().getTime()-start_time)); |
Ik ben erg nieuwsgierig hoe dit kan, wellicht dat iemand hier een idee heeft?