<?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%3Adcho040</id>
	<title>SE250:lab-3:dcho040 - 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%3Adcho040"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-3:dcho040&amp;action=history"/>
	<updated>2026-04-28T17:17:32Z</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:dcho040&amp;diff=5497&amp;oldid=prev</id>
		<title>Mark: 29 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-3:dcho040&amp;diff=5497&amp;oldid=prev"/>
		<updated>2008-11-03T05:19:19Z</updated>

		<summary type="html">&lt;p&gt;29 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Q1=&lt;br /&gt;
==Codes==&lt;br /&gt;
&amp;lt;pre&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;
#define add_time 10000000&lt;br /&gt;
#define add_value 2147483647&lt;br /&gt;
#define number_trial 10&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
	ArrayList xs;&lt;br /&gt;
	arraylist_init(&amp;amp;xs);&lt;br /&gt;
	int i,j;&lt;br /&gt;
	int time_total = 0;&lt;br /&gt;
	double time_avg;&lt;br /&gt;
	for (i = 0; i &amp;lt; number_trial; i++) {&lt;br /&gt;
		clock_t t0 = clock();&lt;br /&gt;
		for (j = 0; j &amp;lt; add_time; j++) {&lt;br /&gt;
			arraylist_push(&amp;amp;xs, add_value);&lt;br /&gt;
		}&lt;br /&gt;
		clock_t t1 = clock();&lt;br /&gt;
		time_total += t1 - t0;&lt;br /&gt;
	}&lt;br /&gt;
	time_avg = (double)time_total / number_trial;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;put %d, %ld times took average %.2lf s&amp;quot;, add_value, add_time, time_avg);&lt;br /&gt;
	return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Prediction==&lt;br /&gt;
- (wrong)Both The number of times saving and The value saved affect to the time&lt;br /&gt;
&lt;br /&gt;
==Results 1 (Vista in G-Lab)==&lt;br /&gt;
 put 1, 100000    times took average 4.60 s&lt;br /&gt;
 put 1, 1000000   times took average 45.20 s&lt;br /&gt;
 put 1, 10000000  times took average 410.30 s&lt;br /&gt;
 put 1, 100000000 times : error&lt;br /&gt;
 assertion &amp;quot;alist-&amp;gt;arr != (element_t*)0&amp;quot; faild: file &amp;quot;arraylist.c&amp;quot;, line 40 &lt;br /&gt;
 10 [sig] lab3_1 3496 h:\soft250lab\lab3\lab3_1.exe: *** fatal error - called with threadlist_ix -1 Hangup&lt;br /&gt;
&lt;br /&gt;
==Results 2 (Vista in G-Lab)==&lt;br /&gt;
 put 2147483647, 100000    times took average 4.70 s&lt;br /&gt;
 put 2147483647, 1000000   times took average 45.20 s&lt;br /&gt;
 put 2147483647, 10000000  times took average 427.40 s&lt;br /&gt;
 put 2147483647, 100000000 times : error&lt;br /&gt;
 assertion &amp;quot;alist-&amp;gt;arr != (element_t*)0&amp;quot; faild: file &amp;quot;arraylist.c&amp;quot;, line 40 &lt;br /&gt;
 10 [sig] lab3_1 3496 h:\soft250lab\lab3\lab3_1.exe: *** fatal error - called with threadlist_ix -1 Hangup&lt;br /&gt;
&lt;br /&gt;
==Discussion==&lt;br /&gt;
- Total time would proportion to the number of times saving the value.&lt;br /&gt;
- The value saved would not affect to the total time&lt;br /&gt;
- No idea with the error when input the values 100,000,000 times&lt;br /&gt;
&lt;br /&gt;
=Q2=&lt;br /&gt;
==Prediction==&lt;br /&gt;
- (partly true)The time decreses while (*2) increases because of less memory relocating occured&lt;br /&gt;
&lt;br /&gt;
==Results 1 (Vista(AMD) at home)==&lt;br /&gt;
 put 2147483647, 10,000,000 times&lt;br /&gt;
 *2  : 535.00 s&lt;br /&gt;
 *4  : 496.00 s&lt;br /&gt;
 *6  : 461.70 s&lt;br /&gt;
 *8  : 466.40 s&lt;br /&gt;
 *10 : 449.20 s&lt;br /&gt;
 *12 : assertion &amp;quot;alist-&amp;gt;arr != (element_t*)0&amp;quot; failed: file &amp;quot;arraylist.c&amp;quot;, line 40 &lt;br /&gt;
       15 [sig] lab3_1 4032 _cygtls:: handle_exceptions: Error while dumping state (probably corrupted stack)&lt;br /&gt;
       Segmentation fault (core dumped)&lt;br /&gt;
 *14 : 449.20 s&lt;br /&gt;
 *16 : 449.20 s&lt;br /&gt;
 *18 : assertion &amp;quot;alist-&amp;gt;arr != (element_t*)0&amp;quot; failed: file &amp;quot;arraylist.c&amp;quot;, line 40 &lt;br /&gt;
       14 [sig] lab3_1 4024 _cygtls:: handle_exceptions: Error while dumping state (probably corrupted stack)&lt;br /&gt;
       Segmentation fault (core dumped)&lt;br /&gt;
 *20 : assertion &amp;quot;alist-&amp;gt;arr != (element_t*)0&amp;quot; failed: file &amp;quot;arraylist.c&amp;quot;, line 40 &lt;br /&gt;
       12 [sig] lab3_1 2968 _cygtls:: handle_exceptions: Error while dumping state (probably corrupted stack)&lt;br /&gt;
       Segmentation fault (core dumped)&lt;br /&gt;
 *22 : assertion &amp;quot;alist-&amp;gt;arr != (element_t*)0&amp;quot; failed: file &amp;quot;arraylist.c&amp;quot;, line 40 &lt;br /&gt;
       12 [sig] lab3_1 876 _cygtls:: handle_exceptions: Error while dumping state (probably corrupted stack)&lt;br /&gt;
       Segmentation fault (core dumped)&lt;br /&gt;
 *24 : 447.60 s&lt;br /&gt;
&lt;br /&gt;
==Results 2 (Vista(AMD) at home)==&lt;br /&gt;
 put 2147483647, 1,000,000 times&lt;br /&gt;
 *2  : 53.00 s&lt;br /&gt;
 *4  : 48.30 s&lt;br /&gt;
 *6  : 45.10 s&lt;br /&gt;
 *8  : 48.30 s&lt;br /&gt;
 *10 : 43.60 s&lt;br /&gt;
 *12 : 46.70 s&lt;br /&gt;
 *14 : 49.80 s&lt;br /&gt;
 *16 : 46.70 s&lt;br /&gt;
 *18 : 43.70 s&lt;br /&gt;
 *20 : 45.10 s&lt;br /&gt;
 *22 : 43.60 s&lt;br /&gt;
&lt;br /&gt;
==Discussion==&lt;br /&gt;
- The time reduces while (*2) in arraylist_put increases, but is stable from around (*6)&lt;br /&gt;
- large mount of inputs(10,000,000) shows error in some cases&lt;br /&gt;
&lt;br /&gt;
=Q3=&lt;br /&gt;
==Prediction==&lt;br /&gt;
-(Not quite right)Maybe the results show random times.&lt;br /&gt;
&lt;br /&gt;
==Results 1 (Vista(AMD) at home)==&lt;br /&gt;
 Increase ARRAYLIST_MIN_ALLOC&lt;br /&gt;
 put 2147483647, 10,000,000 times&lt;br /&gt;
 16       : 538.10 s&lt;br /&gt;
 160      : 549.00 s&lt;br /&gt;
 1600     : 508.40 s&lt;br /&gt;
 16000    : 516.20 s&lt;br /&gt;
 160000   : 552.20 s&lt;br /&gt;
 1600000  : 503.80 s&lt;br /&gt;
 16000000 : 517.80 s&lt;br /&gt;
&lt;br /&gt;
==Results 2 (Vista(AMD) at home)==&lt;br /&gt;
 Increase ARRAYLIST_MIN_ALLOC&lt;br /&gt;
 put 2147483647, 1,000,000 times &lt;br /&gt;
 16  : 54.50 s&lt;br /&gt;
 32  : 53.00 s&lt;br /&gt;
 48  : 51.50 s&lt;br /&gt;
 64  : 54.50 s&lt;br /&gt;
 80  : 49.80 s&lt;br /&gt;
 96  : 51.40 s&lt;br /&gt;
 112 : 53.00 s&lt;br /&gt;
 128 : 54.50 s&lt;br /&gt;
 144 : 54.50 s&lt;br /&gt;
 160 : 49.90 s&lt;br /&gt;
&lt;br /&gt;
==Results 3 (Vista(AMD) at home)==&lt;br /&gt;
 Increase ARRAYLIST_MIN_ALLOC&lt;br /&gt;
 put 2147483647, 1,000,000 times &lt;br /&gt;
 16 : 52.90 s  26 : 49.90 s  36 : 54.50 s  46 : 49.90 s  56 : 59.90 s  66 : 54.50 s  47 : 48.20 s&lt;br /&gt;
 17 : 54.60 s  27 : 51.40 s  37 : 56.10 s  47 : 51.50 s  57 : 51.40 s  67 : 54.10 s  48 : 48.40 s&lt;br /&gt;
 18 : 57.60 s  28 : 53.00 s  38 : 56.10 s  48 : 49.90 s  58 : 49.90 s  68 : 56.10 s  49 : 49.90 s&lt;br /&gt;
 19 : 57.60 s  29 : 53.00 s  39 : 49.90 s  49 : 49.80 s  59 : 51.50 s  69 : 54.60 s&lt;br /&gt;
 20 : 49.90 s  30 : 52.90 s  40 : 49.80 s  50 : 51.40 s  60 : 53.00 s  70 : 54.60 s&lt;br /&gt;
 21 : 48.40 s  31 : 54.50 s  41 : 49.90 s  51 : 51.50 s  61 : 53.00 s  71 : 56.10 s&lt;br /&gt;
 22 : 49.90 s  32 : 54.50 s  42 : 51.40 s  52 : 48.30 s  62 : 51.40 s  72 : 56.10 s&lt;br /&gt;
 23 : 51.50 s  33 : 56.10 s  43 : 49.90 s  53 : 53.00 s  63 : 53.10 s  73 : 53.00 s&lt;br /&gt;
 24 : 51.40 s  34 : 54.50 s  44 : 49.90 s  54 : 52.90 s  64 : 51.50 s  74 : 54.50 s&lt;br /&gt;
 25 : 51.40 s  35 : 54.50 s  45 : 48.30 s  55 : 52.90 s  65 : 54.50 s  75 : 48.20 s&lt;br /&gt;
&lt;br /&gt;
==Discussion==&lt;br /&gt;
- Generally times increases while ARRAYLIST_MIN_ALLOC increases, but some points the time drops.&lt;br /&gt;
&lt;br /&gt;
=Q4=&lt;br /&gt;
==Codes==&lt;br /&gt;
&amp;lt;pre&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;
#define add_time 10000000&lt;br /&gt;
#define add_value 2147483647&lt;br /&gt;
#define number_trial 10&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
	ArrayList xs;&lt;br /&gt;
	arraylist_init(&amp;amp;xs);&lt;br /&gt;
	int i,j;&lt;br /&gt;
	int time_total = 0;&lt;br /&gt;
	double time_avg;&lt;br /&gt;
	ensure_capacity(&amp;amp;xs, add_time); // pre-allocate the meximum expected size of the array&lt;br /&gt;
	for (i = 0; i &amp;lt; number_trial; i++) {&lt;br /&gt;
		clock_t t0 = clock();&lt;br /&gt;
		for (j = 0; j &amp;lt; add_time; j++) {&lt;br /&gt;
			arraylist_push(&amp;amp;xs, add_value);&lt;br /&gt;
		}&lt;br /&gt;
		clock_t t1 = clock();&lt;br /&gt;
		time_total += t1 - t0;&lt;br /&gt;
	}&lt;br /&gt;
	time_avg = (double)time_total / number_trial;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;put %d, %ld times took average %.2lf s&amp;quot;, add_value, add_time, time_avg);&lt;br /&gt;
	return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Prediction==&lt;br /&gt;
- (right)pre-allocate the meximum expected size of the array saves the time.&lt;br /&gt;
&lt;br /&gt;
==Results 1 (Vista(AMD) at home)==&lt;br /&gt;
 experiment1&lt;br /&gt;
 put 2147483647, 100,000    times took average     32.80 s&lt;br /&gt;
 put 2147483647, 1,000,000  times took average   2194.90 s&lt;br /&gt;
 put 2147483647, 10,000,000 times took average 202227.10 s&lt;br /&gt;
&lt;br /&gt;
==Results 2 (Vista(AMD) at home)==&lt;br /&gt;
 pre-allocate the meximum expected size of the array&lt;br /&gt;
 put 2147483647, 100,000    times took average     29.70 s&lt;br /&gt;
 put 2147483647, 1,000,000  times took average   2148.10 s&lt;br /&gt;
 put 2147483647, 10,000,000 times took average 203534.40 s&lt;br /&gt;
&lt;br /&gt;
==Discussion==&lt;br /&gt;
- There is time saving from pre-allocating the meximum expected size of the array&lt;br /&gt;
&lt;br /&gt;
=Q5=&lt;br /&gt;
==Prediction==&lt;br /&gt;
- (+1000) took more time than (*2) because (+1000) does more replacing than (* 2)&lt;br /&gt;
&lt;br /&gt;
==Results 1 (Vista(AMD) at home)==&lt;br /&gt;
 (*2) in arrylist_put&lt;br /&gt;
 put 2147483647, 100,000    times took average       4.60 s&lt;br /&gt;
 put 2147483647, 200,000    times took average       9.30 s&lt;br /&gt;
 put 2147483647, 300,000    times took average      15.60 s&lt;br /&gt;
 put 2147483647, 400,000    times took average      20.20 s&lt;br /&gt;
 put 2147483647, 500,000    times took average      26.40 s&lt;br /&gt;
 put 2147483647, 600,000    times took average      31.20 s&lt;br /&gt;
 put 2147483647, 700,000    times took average      35.80 s&lt;br /&gt;
 put 2147483647, 800,000    times took average      38.90 s&lt;br /&gt;
 put 2147483647, 900,000    times took average      50.00 s&lt;br /&gt;
 put 2147483647, 1000,000   times took average      53.00 s&lt;br /&gt;
&lt;br /&gt;
==Results 2 (Vista(AMD) at home)==&lt;br /&gt;
 (+2000) in arrylist_put&lt;br /&gt;
 put 2147483647, 100,000    times took average      23.50 s&lt;br /&gt;
 put 2147483647, 200,000    times took average      87.30 s&lt;br /&gt;
 put 2147483647, 300,000    times took average     193.40 s&lt;br /&gt;
 put 2147483647, 400,000    times took average     352.40 s&lt;br /&gt;
 put 2147483647, 500,000    times took average     542.90 s&lt;br /&gt;
 put 2147483647, 600,000    times took average     773.70 s&lt;br /&gt;
 put 2147483647, 700,000    times took average    1040.50 s&lt;br /&gt;
 put 2147483647, 800,000    times took average    1358.70 s&lt;br /&gt;
 put 2147483647, 900,000    times took average    1733.10 s&lt;br /&gt;
 put 2147483647, 1000,000   times took average    2157.40 s&lt;br /&gt;
&lt;br /&gt;
==Discussion==&lt;br /&gt;
- As put values more, (+1000) needs huge mount of times to precess&lt;br /&gt;
&lt;br /&gt;
=Q6=&lt;br /&gt;
==codes==&lt;br /&gt;
&amp;lt;pre&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;
#define add_time 10000&lt;br /&gt;
#define add_value 2147483647&lt;br /&gt;
#define number_trial 10&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
	ArrayList xs;&lt;br /&gt;
	arraylist_init(&amp;amp;xs);&lt;br /&gt;
	int i,j;&lt;br /&gt;
	int time_total = 0;&lt;br /&gt;
	double time_avg;&lt;br /&gt;
	for (i = 0; i &amp;lt; number_trial; i++) {&lt;br /&gt;
		clock_t t0 = clock();&lt;br /&gt;
		for (j = 0; j &amp;lt; add_time; j++) {&lt;br /&gt;
			arraylist_put(&amp;amp;xs, add_value, 0);&lt;br /&gt;
		}&lt;br /&gt;
		clock_t t1 = clock();&lt;br /&gt;
		time_total += t1 - t0;&lt;br /&gt;
	}&lt;br /&gt;
	time_avg = (double)time_total / number_trial;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;put %d, %ld times took average %.2lf s&amp;quot;, add_value, add_time, time_avg);&lt;br /&gt;
	return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Prediction==&lt;br /&gt;
- (true) Arraylist_put with index 0 is much slower than experiment 1&lt;br /&gt;
&lt;br /&gt;
==Results 1 (Vista(AMD) at home)==&lt;br /&gt;
 Arraylist_put with index 0&lt;br /&gt;
 put 2147483647, 1,000    times took average       1.50 s&lt;br /&gt;
 put 2147483647, 2,000    times took average      14.00 s&lt;br /&gt;
 put 2147483647, 3,000    times took average      45.20 s&lt;br /&gt;
 put 2147483647, 4,000    times took average      93.60 s&lt;br /&gt;
 put 2147483647, 5,000    times took average     154.40 s&lt;br /&gt;
 put 2147483647, 6,000    times took average     229.30 s&lt;br /&gt;
 put 2147483647, 7,000    times took average     312.00 s&lt;br /&gt;
 put 2147483647, 8,000    times took average     414.90 s&lt;br /&gt;
 put 2147483647, 9,000    times took average     517.80 s&lt;br /&gt;
 put 2147483647, 10,000   times took average     655.20 s&lt;br /&gt;
&lt;br /&gt;
==Results 2 (Vista(AMD) at home)==&lt;br /&gt;
 experiment 1&lt;br /&gt;
 put 2147483647, 10,000   times took average     1.50 s&lt;br /&gt;
&lt;br /&gt;
==Discussion==&lt;br /&gt;
 As expected, Arraylist_put with index 0 is much slower than experiment 1&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>