diff --git a/main.c b/main.c index e264d449d55ceb5d8792b9497ff2b3a5d72645ff..798506ee1b08c09d8e00d132a85202f79b316e47 100644 --- a/main.c +++ b/main.c @@ -27,6 +27,7 @@ TOID(struct my_root) root; struct array{ char *buffer; + char *buffer_copy; }; static bool file_exists(char *path){ @@ -82,6 +83,7 @@ int main(int argc, char **argv) { //Initialise array on the heap: struct array *ap = malloc(sizeof (struct array)); ap->buffer = malloc(sizeof (char)*buffer_size); + ap->buffer_copy = malloc(sizeof (char)*buffer_size); printf("DRAM results: \n"); printf("Sequential time: "); execute(ap->buffer, iterate_write, iterate_read); @@ -93,7 +95,7 @@ int main(int argc, char **argv) { if (file_exists(path) == false) { if ((pop = pmemobj_create(path, POBJ_LAYOUT_NAME(list), - sizeof(char)*buffer_size*2, 0666)) == NULL) { + sizeof(char)*buffer_size*3, 0666)) == NULL) { perror("failed to create pool\n"); return -1; } @@ -120,5 +122,31 @@ int main(int argc, char **argv) { printf("Random time: "); execute(rp->buffer, iterate_write_rand, iterate_read_rand); } TX_END + + + time_t start = clock(); + memcpy(ap->buffer_copy, ap->buffer, sizeof(char)*buffer_size); + time_t finish = clock(); + double memcpy_time = (double)(finish - start) / CLOCKS_PER_SEC; + printf("MEMCPY took: %f \n", memcpy_time); + + start = clock(); + pmemobj_memcpy_persist(pop, rp->buffer_copy, rp->buffer, sizeof(char)*buffer_size); + finish = clock(); + double pmemcpy_time = (double)(finish - start) / CLOCKS_PER_SEC; + printf("PMEMCPY took: %f \n", pmemcpy_time); + + start = clock(); + pmemobj_persist(pop, rp->buffer_copy, sizeof(char)*buffer_size); + finish = clock(); + double pmem_persist_time = (double)(finish - start) / CLOCKS_PER_SEC; + printf("PMEM persist took: %f \n", pmem_persist_time); + + start = clock(); + pmemobj_memcpy_persist(pop, rp->buffer_copy, rp->buffer, sizeof(char)*buffer_size); + finish = clock(); + double pmemcpy_persist_time = (double)(finish - start) / CLOCKS_PER_SEC; + printf("PMEMCPY persist took: %f \n", pmemcpy_persist_time); + return 0; }