Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- /* funzione per inizializzare gli array */
- void init(int * restrict v1, int * restrict v2, int numels)
- {
- for (int i = 0; i < numels; ++i) {
- v1[i] = i;
- v2[i] = numels - i;
- }
- }
- /* funzione per fare la somma degli array */
- void somma(int * restrict somma, const int * restrict v1, const int * restrict v2, int numels)
- {
- for (int i = 0; i < numels; ++i) {
- somma[i] = v1[i] + v2[i];
- }
- }
- int main(int argc, char *argv[]) {
- int *v1, *v2, *vs;
- int numels;
- clock_t start, end;
- double runtime_ms;
- if (argc != 2) {
- fputs("Specificare uno ed un solo parametro\n", stderr);
- exit(128);
- }
- numels = atoi(argv[1]);
- size_t memsize = numels * sizeof(*v1);
- v1 = malloc(memsize);
- v2 = malloc(memsize);
- vs = malloc(memsize);
- if (!v1 | !v2 | !vs) {
- fputs("Allocazione fallita\n", stderr);
- exit(17);
- }
- start = clock();
- init(v1, v2, numels);
- end = clock();
- runtime_ms = (end -start) *1000.0/CLOCKS_PER_SEC;
- printf("init: %gms\n", runtime_ms);
- start = clock();
- somma(vs, v1, v2, numels);
- end = clock();
- runtime_ms = (end -start) *1000.0/CLOCKS_PER_SEC;
- printf("somma: %gms\n", runtime_ms);
- for (int i = 0; i < numels; ++i) {
- // printf("%d\t+\t%d\t=\t%d\n", v1[i], v2[i], vs[i]);
- if (vs[i] != numels) {
- fprintf(stderr, "%zu : %d != %d\n", i, vs[i], numels);
- exit(1);
- }
- }
- free(v1); v1 = NULL;
- free(v2); v2 = NULL;
- free(vs); vs = NULL;
- puts("Tutto ok");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement