<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-3%3Ajhor053</id>
	<title>SE250:lab-3:jhor053 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-3%3Ajhor053"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-3:jhor053&amp;action=history"/>
	<updated>2026-05-01T22:29:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.kram.nz/index.php?title=SE250:lab-3:jhor053&amp;diff=5572&amp;oldid=prev</id>
		<title>Mark: 13 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-3:jhor053&amp;diff=5572&amp;oldid=prev"/>
		<updated>2008-11-03T05:19:21Z</updated>

		<summary type="html">&lt;p&gt;13 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Lab 2 ==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 ===&lt;br /&gt;
Here is my code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;arraylist.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main (){&lt;br /&gt;
	ArrayList AL;&lt;br /&gt;
	double start, end, diff;&lt;br /&gt;
	int ntimes = 10000000;&lt;br /&gt;
	int pushed = 1;&lt;br /&gt;
	int i;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	arraylist_init(&amp;amp;AL);&lt;br /&gt;
&lt;br /&gt;
	start = clock();&lt;br /&gt;
&lt;br /&gt;
	for(i = 0; i &amp;lt; ntimes; i++){&lt;br /&gt;
		arraylist_push(&amp;amp;AL, pushed);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	end = clock();&lt;br /&gt;
&lt;br /&gt;
	diff = (end - start) / CLOCKS_PER_SEC;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;Difference in time for %d elements is: %f \n&amp;quot;, ntimes, diff );&lt;br /&gt;
	&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In my code ntimes being n (10000000) and i was pushing the value pushed which was an int of value 1.&lt;br /&gt;
&lt;br /&gt;
My result was:&lt;br /&gt;
&amp;lt;pre&amp;gt;Difference in time for 1000000 elements is: 0.198000&lt;br /&gt;
Difference in time for 2000000 elements is: 0.293000&lt;br /&gt;
Difference in time for 3000000 elements is: 0.448000&lt;br /&gt;
Difference in time for 4000000 elements is: 0.614000&lt;br /&gt;
Difference in time for 5000000 elements is: 0.767000&lt;br /&gt;
Difference in time for 6000000 elements is: 0.892000&lt;br /&gt;
Difference in time for 7000000 elements is: 1.133000&lt;br /&gt;
Difference in time for 8000000 elements is: 1.173000&lt;br /&gt;
Difference in time for 9000000 elements is: 1.392000&lt;br /&gt;
Difference in time for 10000000 elements is: 1.802000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seemed alright but it didn&amp;#039;t quite take into account the for loop.&lt;br /&gt;
&lt;br /&gt;
=== Task 2 ===&lt;br /&gt;
I modified my ocde further to automate the task of changing values for a set value in arraylist_put&lt;br /&gt;
&amp;lt;pre&amp;gt;int main (){&lt;br /&gt;
	ArrayList AL;&lt;br /&gt;
	double start, end, diff;&lt;br /&gt;
	int ntimes = 10000000;&lt;br /&gt;
	int pushed = 1;&lt;br /&gt;
	int i;&lt;br /&gt;
	&lt;br /&gt;
	for(ntimes = 1000000; ntimes &amp;lt;= 10000000; ntimes += 1000000){&lt;br /&gt;
		arraylist_init(&amp;amp;AL);&lt;br /&gt;
&lt;br /&gt;
		start = clock();&lt;br /&gt;
&lt;br /&gt;
		for(i = 0; i &amp;lt; ntimes; i++){&lt;br /&gt;
			arraylist_push(&amp;amp;AL, pushed);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
		end = clock();&lt;br /&gt;
&lt;br /&gt;
		diff = (end - start) / CLOCKS_PER_SEC;&lt;br /&gt;
&lt;br /&gt;
		printf(&amp;quot;Difference in time for %d elements is: %f \n&amp;quot;, ntimes, diff );&lt;br /&gt;
&lt;br /&gt;
		arraylist_clear(&amp;amp;AL);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return 0;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
My result now is for * 3 factor&lt;br /&gt;
&amp;lt;pre&amp;gt;Difference in time for 1000000 elements is: 0.172000&lt;br /&gt;
Difference in time for 2000000 elements is: 0.276000&lt;br /&gt;
Difference in time for 3000000 elements is: 0.447000&lt;br /&gt;
Difference in time for 4000000 elements is: 0.592000&lt;br /&gt;
Difference in time for 5000000 elements is: 0.738000&lt;br /&gt;
Difference in time for 6000000 elements is: 0.950000&lt;br /&gt;
Difference in time for 7000000 elements is: 0.975000&lt;br /&gt;
Difference in time for 8000000 elements is: 1.106000&lt;br /&gt;
Difference in time for 9000000 elements is: 1.348000&lt;br /&gt;
Difference in time for 10000000 elements is: 1.478000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My result now is for the * 4 factor&lt;br /&gt;
&amp;lt;pre&amp;gt; Difference in time for 1000000 elements is: 0.222000&lt;br /&gt;
Difference in time for 2000000 elements is: 0.313000&lt;br /&gt;
Difference in time for 3000000 elements is: 0.409000&lt;br /&gt;
Difference in time for 4000000 elements is: 0.674000&lt;br /&gt;
Difference in time for 5000000 elements is: 0.872000&lt;br /&gt;
Difference in time for 6000000 elements is: 0.924000&lt;br /&gt;
Difference in time for 7000000 elements is: 1.012000&lt;br /&gt;
Difference in time for 8000000 elements is: 1.142000&lt;br /&gt;
Difference in time for 9000000 elements is: 1.244000&lt;br /&gt;
Difference in time for 10000000 elements is: 1.393000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My result now is for the * 5 factor&lt;br /&gt;
&amp;lt;pre&amp;gt;Difference in time for 1000000 elements is: 0.154000&lt;br /&gt;
Difference in time for 2000000 elements is: 0.290000&lt;br /&gt;
Difference in time for 3000000 elements is: 0.420000&lt;br /&gt;
Difference in time for 4000000 elements is: 0.578000&lt;br /&gt;
Difference in time for 5000000 elements is: 0.759000&lt;br /&gt;
Difference in time for 6000000 elements is: 0.880000&lt;br /&gt;
Difference in time for 7000000 elements is: 1.135000&lt;br /&gt;
Difference in time for 8000000 elements is: 1.336000&lt;br /&gt;
Difference in time for 9000000 elements is: 1.500000&lt;br /&gt;
Difference in time for 10000000 elements is: 1.708000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Performance seems to change as you greatly increase the amount of memory to copy accross ie a factor of 10 or 20 crashes it for 9 million values.&lt;br /&gt;
&lt;br /&gt;
=== Task 3 ===&lt;br /&gt;
With ARRAYLIST_MIN_ALLOC set to 32:&lt;br /&gt;
&amp;lt;pre&amp;gt;Difference in time for 1000000 elements is: 0.177000&lt;br /&gt;
Difference in time for 2000000 elements is: 0.342000&lt;br /&gt;
Difference in time for 3000000 elements is: 0.432000&lt;br /&gt;
Difference in time for 4000000 elements is: 0.690000&lt;br /&gt;
Difference in time for 5000000 elements is: 0.760000&lt;br /&gt;
Difference in time for 6000000 elements is: 0.955000&lt;br /&gt;
Difference in time for 7000000 elements is: 1.055000&lt;br /&gt;
Difference in time for 8000000 elements is: 1.251000&lt;br /&gt;
Difference in time for 9000000 elements is: 1.385000&lt;br /&gt;
Difference in time for 10000000 elements is: 1.462000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With ARRAYLIST_MIN_ALLOC set to 64:&lt;br /&gt;
&amp;lt;pre&amp;gt;Difference in time for 1000000 elements is: 0.164000&lt;br /&gt;
Difference in time for 2000000 elements is: 0.302000&lt;br /&gt;
Difference in time for 3000000 elements is: 0.560000&lt;br /&gt;
Difference in time for 4000000 elements is: 0.657000&lt;br /&gt;
Difference in time for 5000000 elements is: 0.817000&lt;br /&gt;
Difference in time for 6000000 elements is: 0.944000&lt;br /&gt;
Difference in time for 7000000 elements is: 0.987000&lt;br /&gt;
Difference in time for 8000000 elements is: 1.201000&lt;br /&gt;
Difference in time for 9000000 elements is: 1.316000&lt;br /&gt;
Difference in time for 10000000 elements is: 1.487000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With ARRAYLIST_MIN_ALLOC set to 128:&lt;br /&gt;
&amp;lt;pre&amp;gt;Difference in time for 1000000 elements is: 0.165000&lt;br /&gt;
Difference in time for 2000000 elements is: 0.289000&lt;br /&gt;
Difference in time for 3000000 elements is: 0.519000&lt;br /&gt;
Difference in time for 4000000 elements is: 0.673000&lt;br /&gt;
Difference in time for 5000000 elements is: 0.909000&lt;br /&gt;
Difference in time for 6000000 elements is: 1.065000&lt;br /&gt;
Difference in time for 7000000 elements is: 1.125000&lt;br /&gt;
Difference in time for 8000000 elements is: 1.172000&lt;br /&gt;
Difference in time for 9000000 elements is: 1.344000&lt;br /&gt;
Difference in time for 10000000 elements is: 1.451000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Well doing it in relatively small values seemed useless so I went for a million default and was quicker&lt;br /&gt;
&amp;lt;pre&amp;gt;Difference in time for 1000000 elements is: 0.156000&lt;br /&gt;
Difference in time for 2000000 elements is: 0.273000&lt;br /&gt;
Difference in time for 3000000 elements is: 0.412000&lt;br /&gt;
Difference in time for 4000000 elements is: 0.659000&lt;br /&gt;
Difference in time for 5000000 elements is: 0.816000&lt;br /&gt;
Difference in time for 6000000 elements is: 0.875000&lt;br /&gt;
Difference in time for 7000000 elements is: 0.986000&lt;br /&gt;
Difference in time for 8000000 elements is: 1.118000&lt;br /&gt;
Difference in time for 9000000 elements is: 1.323000&lt;br /&gt;
Difference in time for 10000000 elements is: 1.454000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Increasing min alloc insanely made it far faster for the early values as it didn&amp;#039;t have allocate any more memory.&lt;br /&gt;
&lt;br /&gt;
=== Task 4 ===&lt;br /&gt;
Using required capacity I passed ntimes + 1&lt;br /&gt;
Getting:&lt;br /&gt;
&amp;lt;pre&amp;gt;Difference in time for 1000000 elements is: 0.147000&lt;br /&gt;
Difference in time for 2000000 elements is: 0.281000&lt;br /&gt;
Difference in time for 3000000 elements is: 0.387000&lt;br /&gt;
Difference in time for 4000000 elements is: 0.594000&lt;br /&gt;
Difference in time for 5000000 elements is: 0.713000&lt;br /&gt;
Difference in time for 6000000 elements is: 0.865000&lt;br /&gt;
Difference in time for 7000000 elements is: 0.947000&lt;br /&gt;
Difference in time for 8000000 elements is: 1.097000&lt;br /&gt;
Difference in time for 9000000 elements is: 1.151000&lt;br /&gt;
Difference in time for 10000000 elements is: 1.278000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which is significantly faster as it won&amp;#039;t take the time to allocate memory.&lt;br /&gt;
&lt;br /&gt;
=== Task 5 ===&lt;br /&gt;
Started off with n being 10000 and going up in 10000 as it was too quick either wise&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Difference in time for 10000 elements is: 0.002000&lt;br /&gt;
Difference in time for 20000 elements is: 0.004000&lt;br /&gt;
Difference in time for 30000 elements is: 0.004000&lt;br /&gt;
Difference in time for 40000 elements is: 0.006000&lt;br /&gt;
Difference in time for 50000 elements is: 0.008000&lt;br /&gt;
Difference in time for 60000 elements is: 0.008000&lt;br /&gt;
Difference in time for 70000 elements is: 0.008000&lt;br /&gt;
Difference in time for 80000 elements is: 0.011000&lt;br /&gt;
Difference in time for 90000 elements is: 0.012000&lt;br /&gt;
Difference in time for 100000 elements is: 0.022000&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>