SE250:lab-3:hals016
Lab3
Question 1
For question one I made a loop for the arralist_push function, to change the array value to zero, 10 million times. Here is my code.
int main() {
  ArrayList arra;
  int i;
  arraylist_init(&arra);
  int clock1,clock2;
  clock1 = clock();
  for(i=0;i<10000000;i++){
    arraylist_push(&arra, 0);
  }
  clock2=clock();
  printf("%d ms", (clock2-clock1));
  return 0;
}
The result ranged from 550-640ms.
Question 2
For question two I changed the growth factor to a variety of numbers.
'''OUTPUT''' *3 Growth Factor - The for loop of 10 million loops took 594 ms. *9^99999 GF - The for loop of 10 million loops took 531 ms. *1 - Error - /usr/bin/bash: line 1: 5576 Segmentation fault (core dumped) ./arraylist2.exe. *1.1 - The for loop of 10 million loops took 1204 ms. *1.2 - The for loop of 10 million loops took 890 ms. *1.3 - The for loop of 10 million loops took 750 ms. *1.4 - The for loop of 10 million loops took 672 ms.
Question 3
For this question the starting allocation for the array needed to be changed to various numbers.
'''OUTPUT''' ''Original minimum allocation = 16'' Minimum Allocation of 1 - The for loop of 10 million loops took 562 ms. Minimum Allocation of 100 - The for loop of 10 million loops took 594 ms. Minimum Allocation of 99999 - The for loop of 10 million loops took 531 ms. Minimum Allocation of 0.01 - /usr/bin/bash: line 1: 5576 Segmentation fault (core dumped) ./arraylist3.exe.
The results suggest that the starting allocation does not affect the time it takes to do the loop 10 million times.
Question 4
Experiment 1 was repeated but with the added code of using the function "ensure_capacity" to allocate memory (initially) according to the number of loops in the for loop (10 million).
Partial Code ensure_capacity(&arra,10000000);
The output was faster than normal.
'''OUTPUT''' The for loop of 10 million loops took 437 ms.