void test6() { sc_uint32 i, j; sc_addr addr; sc_stream *stream = 0; sc_addr *results = 0; sc_uint32 results_count = 0; printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); timer = g_timer_new(); //g_snprintf(test, 1024, "../CMakeLists.txt"); g_timer_reset(timer); g_timer_start(timer); for (i = 0; i < link_append_count; i++) { //addr = sc_storage_link_new(); printf("Find addrs for content %d\t", i); stream = sc_stream_memory_new((char*)&i, sizeof(i), SC_STREAM_READ, SC_FALSE); if (sc_storage_find_links_with_content(stream, &results, &results_count) == SC_RESULT_OK) { printf("founded: \n"); for (j = 0; j < results_count; j++) printf("seg=%d, offset=%d\n", results[j].seg, results[j].offset); g_free(results); results = 0; }else printf("error\n"); sc_stream_free(stream); } g_timer_stop(timer); printf("Created links: %d\n", link_append_count); printf("Links per second: %f\n", link_append_count / g_timer_elapsed(timer, 0)); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); g_timer_destroy(timer); }
sc_element* get_random_element(sc_type type) { sc_addr id; id.seg = g_random_int() % sc_storage_get_segments_count(); id.offset = g_random_int() % SEGMENT_SIZE; return sc_storage_get_element(id, SC_FALSE); }
sc_addr get_random_addr(sc_type type) { sc_addr addr; addr.seg = g_random_int() % sc_storage_get_segments_count(); addr.offset = 0; addr.offset = g_random_int() % SEGMENT_SIZE; return addr; }
void test7() { sc_uint32 i, j; sc_addr addr, addr1, addr2; sc_addr new_addr; sc_event *event1, *event2, *event3, *event4; printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); timer = g_timer_new(); g_timer_reset(timer); g_timer_start(timer); addr = sc_storage_node_new(0); addr1 = sc_storage_node_new(0); printf("Register events\n"); event1 = sc_event_new(addr, SC_EVENT_ADD_OUTPUT_ARC, 0, &event_callback, 0); event2 = sc_event_new(addr1, SC_EVENT_ADD_INPUT_ARC, 1, &event_callback, 0); event3 = sc_event_new(addr, SC_EVENT_REMOVE_OUTPUT_ARC, 2, &event_callback, 0); event4 = sc_event_new(addr1, SC_EVENT_REMOVE_INPUT_ARC, 3, &event_callback, 0); addr2 = sc_storage_arc_new(0, addr, addr1); sc_storage_element_free(addr2); printf("Unregister events\n"); sc_event_destroy(event1); sc_event_destroy(event2); sc_event_destroy(event3); sc_event_destroy(event4); addr2 = sc_storage_arc_new(0, addr, addr1); sc_storage_element_free(addr2); g_timer_stop(timer); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); g_timer_destroy(timer); }
void test3() { sc_addr node[10], arc[10][10]; sc_uint32 i, j; printf("Create 10 nodes and 100 arcs, that connect nodes each other\n"); for (i = 0; i < 10; i++) node[i] = sc_storage_element_new(sc_type_node); for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) arc[i][j] = sc_storage_arc_new(0, node[i], node[j]); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); printf("Delete 5 nodes\n"); for (i = 0; i < 5; i++) sc_storage_element_free(node[i]); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); }
void test5() { sc_uint32 i; sc_addr addr; sc_stream *stream = 0; printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); timer = g_timer_new(); printf("Create %d links\n", link_append_count); //g_snprintf(test, 1024, "../CMakeLists.txt"); g_timer_reset(timer); g_timer_start(timer); for (i = 0; i < link_append_count; i++) { addr = sc_storage_link_new(); printf("Created sc-link: seg=%d, offset=%d, content=%d\n", addr.seg, addr.offset, i); stream = sc_stream_memory_new((char*)&i, sizeof(i), SC_STREAM_READ, SC_FALSE); sc_storage_set_link_content(addr, stream); sc_stream_free(stream); } g_timer_stop(timer); printf("Created links: %d\n", link_append_count); printf("Links per second: %f\n", link_append_count / g_timer_elapsed(timer, 0)); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); g_timer_destroy(timer); }
void test9() { printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); timer = g_timer_new(); printf("Collect and delete garbage...\n"); g_timer_reset(timer); g_timer_start(timer); sc_storage_update_segments(); g_timer_stop(timer); printf("Elapsed time: %f\n", g_timer_elapsed(timer, 0)); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); g_timer_destroy(timer); }
void test1() { sc_uint idx = 0; sc_addr id, id2; sc_uint32 count = 0; printf("Element size: %d bytes\n", sizeof(sc_element)); printf("Segment size: %d elements\n", SEGMENT_SIZE); timer = g_timer_new(); print_storage_statistics(); printf("--- Node creation ---\n"); g_timer_start(timer); for (idx = 0; idx < nodes_append_count; idx++) { id = sc_storage_element_new(sc_type_node); //g_printf("uri: %d\t%d\n", uri.seg, uri.id); } g_timer_stop(timer); printf("Time: %f s\n", g_timer_elapsed(timer, 0)); printf("Nodes per second: %f\n", (float)nodes_append_count / g_timer_elapsed(timer, 0)); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); g_timer_reset(timer); printf("--- Node segmentation ---\n"); count = 0; printf("Prepare test...\n"); for (idx = 1; idx < nodes_remove_count + 1; idx++) { if (idx % 10 < 5) { id.seg = idx / SEGMENT_SIZE; id.offset = idx % SEGMENT_SIZE; /*do { id = get_random_addr(sc_type_node); } while(!sc_storage_is_element(id) && is_sc_addr_in_segment_node_vector(id));*/ if (sc_storage_is_element(id)) segment_node_del.push_back(id); } } printf("Run test...\n"); g_timer_start(timer); sc_uint32 n = segment_node_del.size(); for (sc_uint32 i = 0; i < n; ++i) sc_storage_element_free(segment_node_del[i]); n = nodes_remove_count - n; for (sc_uint32 i = 0; i < n; i++) sc_storage_node_new(0); g_timer_stop(timer); segment_node_del.clear(); printf("Time: %f s\n", g_timer_elapsed(timer, 0)); printf("Elements per second: %f\n", (float)nodes_remove_count / g_timer_elapsed(timer, 0)); printf("Segments count: %d\n", sc_storage_get_segments_count()); printf("Element free calls: %u\n", segment_node_del.size()); print_storage_statistics(); g_timer_reset(timer); printf("--- Arcs creation ---\n"); count = 0; printf("Prepare...\n"); for (idx = 0; idx < arcs_append_count; idx++) { do { id = get_random_addr(0); }while (!sc_storage_is_element(id)); do { id2 = get_random_addr(0); }while (!sc_storage_is_element(id2)); arc_creation_vector.push_back(id); arc_creation_vector.push_back(id2); } printf("Run...\n"); g_timer_start(timer); n = arc_creation_vector.size() / 2; for (sc_uint32 i = 0; i < n; ++i) { sc_storage_arc_new(sc_type_arc_common, arc_creation_vector[i], arc_creation_vector[i + n]); } g_timer_stop(timer); printf("Timer: %fs\n", g_timer_elapsed(timer, 0)); printf("Arcs per second: %f\n", (float)n / g_timer_elapsed(timer, 0)); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); g_timer_destroy(timer); }
int main(int argc, char *argv[]) { sc_uint item = -1; fflush(stdout); timer = g_timer_new(); g_timer_start(timer); printf("MD5: %d\n", g_checksum_type_get_length(G_CHECKSUM_MD5) ); printf("SHA1: %d\n", g_checksum_type_get_length(G_CHECKSUM_SHA1) ); printf("SHA256: %d\n", g_checksum_type_get_length(G_CHECKSUM_SHA256) ); sc_storage_initialize("repo"); g_timer_stop(timer); printf("Segment loading speed: %f seg/sec\n", sc_storage_get_segments_count() / g_timer_elapsed(timer, 0)); //test5(); //test6(); //test7(); while (item != 0) { printf("Commands:\n" "0 - exit\n" "1 - test allocation\n" "2 - test sc-addr utilities\n" "3 - test arc deletion\n" "4 - test iterators\n" "5 - test contents\n" "6 - test content finding\n" "7 - test events\n" "\nCommand: "); scanf("%d", &item); printf("\n----- Test %d -----\n", item); switch(item) { case 1: test1(); break; case 2: test2(); break; case 3: test3(); break; case 4: test4(); break; case 5: test5(); break; case 6: test6(); break; case 7: test7(); break; }; printf("\n----- Finished -----\n"); } timer = g_timer_new(); item = sc_storage_get_segments_count(); g_timer_reset(timer); // crash when uncomment sc_storage_shutdown(); g_timer_stop(timer); printf("Segments save speed: %f seg/sec\n", item / g_timer_elapsed(timer, 0)); g_timer_destroy(timer); return 0; }
void test8() { sc_addr node[10], arc[10][10], addr_arc; sc_uint32 i, j; sc_iterator3 *it = 0; printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); timer = g_timer_new(); printf("Create 10 nodes and 100 arcs, that connect nodes each other\n"); for (i = 0; i < 10; i++) node[i] = sc_memory_node_new(sc_type_node); for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) arc[i][j] = sc_memory_arc_new(0, node[i], node[j]); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); printf("Delete 5 nodes\n"); for (i = 0; i < 5; i++) sc_memory_element_free(node[i]); // iterate element for check it = sc_iterator3_f_a_a_new(node[9], 0, 0); while (sc_iterator3_next(it) == SC_TRUE) { addr_arc = sc_iterator3_value(it, 1); printf("Arc: %d, %d\n", addr_arc.seg, addr_arc.offset); } sc_iterator3_free(it); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); g_timer_stop(timer); printf("Collect and delete garbage...\n"); g_timer_reset(timer); g_timer_start(timer); sc_storage_update_segments(); g_timer_stop(timer); // iterate element for check it = sc_iterator3_f_a_a_new(node[9], 0, 0); while (sc_iterator3_next(it) == SC_TRUE) { addr_arc = sc_iterator3_value(it, 1); printf("Arc: %d, %d\n", addr_arc.seg, addr_arc.offset); } sc_iterator3_free(it); printf("Elapsed time: %f\n", g_timer_elapsed(timer, 0)); printf("Segments count: %d\n", sc_storage_get_segments_count()); print_storage_statistics(); g_timer_destroy(timer); }