SE250:lab-3:mabd065
|
Lab 3
Task 1
running the following code multiple times:
int main () { double start,end,diff; int i; ArrayList myarr; arraylist_init(&myarr); start = clock(); for (i = 0; i < 10000000; i++) { arraylist_push(&myarr, 5); } end = clock(); diff = end - start; printf("It took %.f ticks / %d s.\n", diff , CLOCKS_PER_SEC ); }
Gives the following values:
It took 562 ticks / 1000 s. It took 579 ticks / 1000 s. It took 547 ticks / 1000 s.
Average: 563 ticks / 1000 s.
Task 2
CODE:
int main () { double start,end,diff; int i; ArrayList myarr; arraylist_init(&myarr); start = clock(); for (i = 0; i < 1000000000; i++) { arraylist_push(&myarr, 5); } end = clock(); diff = end - start; printf("It took %.f ticks / %d s.\n", diff , CLOCKS_PER_SEC ); }
Results:
Put = 6.0 || It took 5031 ticks / 1000 s || 100 000 000 loops Put = 5.0 || It took 5078 ticks / 1000 s || 100 000 000 loops Put = 4.0 || ERROR || 100 000 000 loops || assertion "alist->arr != (element_t*)0" failed: file "arraylist.c", line 40 Put = 3.0 || ERROR || 100 000 000 loops || assertion "alist->arr != (element_t*)0" failed: file "arraylist.c", line 40 Put = 2.0 || It took 6093 ticks / 1000 s || 100 000 000 loops Put = 1.5 || It took 6875 ticks / 1000 s || 100 000 000 loops Put = 1.1 || It took 13796 ticks / 1000 s || 100 000 000 loops
Put = 1.001 || ERROR || 1 000 000 000 loops || 49 [main] lab3 2588 _cygtls::handle_exceptions: Exception: STATUS_ACCESS_VIOLATION 13051 [main] lab3 2588 open_stackdumpfile: Dumping stack trace to lab3.exe.stackdump
As the factor increases, the number of reallocations decreases, hence the faster it takes to executs.
Task 3
CODE:
int main () { double start,end,diff; int i; ArrayList myarr; arraylist_init(&myarr); start = clock(); for (i = 0; i < 1000000000; i++) { arraylist_push(&myarr, 5); } end = clock(); diff = end - start; printf("It took %.f ticks / %d s.\n", diff , CLOCKS_PER_SEC ); }
Results:
MIN Allocation = 16 || It took 6734 ticks / 1000 s || 100 000 000 loops MIN Allocation = 20 || ERROR || 100 000 000 loops MIN Allocation = 20 || It took 562 ticks / 1000 s || 1 0 000 000 loops MIN Allocation = 30 || It took 609 ticks / 1000 s || 1 0 000 000 loops MIN Allocation = 32 || It took 625 ticks / 1000 s || 1 0 000 000 loops MIN Allocation = 40 || It took 703 ticks / 1000 s || 1 0 000 000 loops
When MIN Allocation = 100 000 000: I get : assertion "alist->arr != (element_t*)0" failed: file "arraylist.c", line 40
because the MIN value is greater than the number of loops (10 000 000).
Task 4
CODE:
int main () { double start,end,diff; int i, number = 10000000; ArrayList myarr; arraylist_init(&myarr); start = clock(); ensure_capacity(&myarr, number); for (i = 0; i < number; i++) { arraylist_push(&myarr, 5); } end = clock(); diff = end - start; printf("It took %.f ticks / %d s.\n", diff , CLOCKS_PER_SEC ); }
Results:
It took 485 ticks / 1000 s. It took 500 ticks / 1000 s. It took 484 ticks / 1000 s.
Average: 490 ticks / 1000 s.
This code runs faster (490) compared to the one in task 1 (563).
Task 5
CODE:
int main () { long start,end,diff; int i; ArrayList myarr; arraylist_init(&myarr); start = clock(); for (i = 0; i < 100000; i++) { arraylist_push(&myarr, 5); } end = clock(); diff = end - start; printf("It took %ld ticks / %d s.\n", diff , CLOCKS_PER_SEC ); }
Results:
Loops = 100 000 || It took 0 ticks / 1000 s Loops = 100 000 || It took 15 ticks / 1000 s Loops = 100 000 || It took 15 ticks / 1000 s
Task 6
CODE :
int main () { long start,end,diff; int i; ArrayList myarr; arraylist_init(&myarr); start = clock(); for (i = 0; i < 10000; i++) { arraylist_put(&myarr, 5, 0); } end = clock(); diff = end - start; printf("It took %ld ticks / %d s.\n", diff , CLOCKS_PER_SEC ); }
Results:
Loops = 1 000 || It took 0 ticks / 1000 s Loops = 1 0 000 || It took 47 ticks / 1000 s Loops = 100 000 || It took 4625 ticks / 1000 s