int main(int argc, char *argv[]) { gtk_init(&argc, &argv); win = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(win, "destroy", G_CALLBACK(destroy), NULL); struct table *table = table_new_with_columns(4, "a", G_TYPE_STRING, "A", G_TYPE_STRING, "b", G_TYPE_STRING, "B", G_TYPE_STRING); int i; for (i = 0; i < 10; i++) { table_add_row(table, "text a", "text A", "text b", "text B"); table_add_row(table, "a", "A", "b", "B"); } gtk_container_add(GTK_CONTAINER(win), table->widget); gtk_widget_show(table->widget); gtk_widget_show(win); g_timeout_add_seconds(1, time_out, table); gtk_main(); return 0; }
void table_add_row_from_strlist (Table* t, StrList* list) { wchar_t** row = (wchar_t**)malloc(str_list_length(list) * sizeof(wchar_t**)); int i = 0; while (list) { row[i] = (wchar_t*)list->str; list = list->next; ++i; } table_add_row (t, row); }
void table_add_row_from_strlist (Table* t, StrList* list) { wchar_t** row = xmalloc (str_list_length(list) * sizeof(*row)); int i = 0; while (list) { row[i] = wcsdup (list->str); if (row[i] == NULL) xalloc_die (); list = list->next; ++i; } table_add_row (t, row); }
gboolean time_out(gpointer data) { static unsigned int I = 0; struct table *table = data; g_printf("hello %d\n", I++); /* Test for memory leak */ table_destroy(table); table = table_new_with_columns(4, "string", G_TYPE_STRING, "double", G_TYPE_DOUBLE, "int", G_TYPE_INT, "uint", G_TYPE_UINT); int i; for (i = 0; i < 100; i++) { table_add_row(table, "text a", i + 0.5, -i, i); } gtk_container_add(GTK_CONTAINER(win), table->widget); gtk_widget_show(table->widget); return TRUE; }
int main() { int i; struct timespec start, end, diff[8]; table* t; int widths[] = { 20, 20, 20 }; machine* server; half_long_string hl_str; config_server(); deploy(machines[0], "./rpc_times_server"); deploy(machines[2], "./rpc_times_server"); deploy(machines[3], "./rpc_times_server"); sleep(5); // 1028 bytes arg for (i = 0; i < 1024; i++) { hl_str.str1[i] = 65 + i % 26; hl_str.str2[i] = 65 + i % 26; } { // Local call 4 bytes printf("Calling Local (no RPC): 4 bytes"); fflush(stdout); clock_gettime(CLOCK_REALTIME, &start); local_call_4(1000); clock_gettime(CLOCK_REALTIME, &end); diff[0].tv_nsec = end.tv_nsec - start.tv_nsec; diff[0].tv_sec = end.tv_sec - start.tv_sec; // Local call 2048 bytes printf(", 2048 bytes\t\tOK\n"); clock_gettime(CLOCK_REALTIME, &start); local_call_2048(hl_str); clock_gettime(CLOCK_REALTIME, &end); diff[1].tv_nsec = end.tv_nsec - start.tv_nsec; diff[1].tv_sec = end.tv_sec - start.tv_sec; } { server = machines[4]; // Remote call 4 bytes printf("Calling Local RPC: 4 bytes"); clock_gettime(CLOCK_REALTIME, &start); rpc_call_4(server->ip, 1000); clock_gettime(CLOCK_REALTIME, &end); diff[2].tv_nsec = end.tv_nsec - start.tv_nsec; diff[2].tv_sec = end.tv_sec - start.tv_sec; // Remote call 2048 bytes printf(", 2048 bytes\t\tOK\n"); clock_gettime(CLOCK_REALTIME, &start); rpc_call_2048(server->ip, hl_str); clock_gettime(CLOCK_REALTIME, &end); diff[3].tv_nsec = end.tv_nsec - start.tv_nsec; diff[3].tv_sec = end.tv_sec - start.tv_sec; } { server = machines[2]; // Remote call 4 bytes (Remote: Fedora) printf("Calling Remote Homogeneous: 4 bytes"); clock_gettime(CLOCK_REALTIME, &start); rpc_call_4(server->ip, 1000); clock_gettime(CLOCK_REALTIME, &end); diff[4].tv_nsec = end.tv_nsec - start.tv_nsec; diff[4].tv_sec = end.tv_sec - start.tv_sec; // Remote call 2048 bytes (Remote: Fedora) printf(", 2048 bytes\t\tOK\n"); clock_gettime(CLOCK_REALTIME, &start); rpc_call_2048(server->ip, hl_str); clock_gettime(CLOCK_REALTIME, &end); diff[5].tv_nsec = end.tv_nsec - start.tv_nsec; diff[5].tv_sec = end.tv_sec - start.tv_sec; } { server = machines[2]; // Remote call 4 bytes (Remote: Alpha) printf("Calling Remote heterogeneous: 4 bytes"); clock_gettime(CLOCK_REALTIME, &start); rpc_call_4(server->ip, 1000); clock_gettime(CLOCK_REALTIME, &end); diff[6].tv_nsec = end.tv_nsec - start.tv_nsec; diff[6].tv_sec = end.tv_sec - start.tv_sec; // Remote call 2048 bytes (Remote: Alpha) printf(", 2048 bytes\t\tOK\n"); clock_gettime(CLOCK_REALTIME, &start); rpc_call_2048(server->ip, hl_str); clock_gettime(CLOCK_REALTIME, &end); diff[7].tv_nsec = end.tv_nsec - start.tv_nsec; diff[7].tv_sec = end.tv_sec - start.tv_sec; } printf("\nResultados\n"); printf("==========\n"); // Initialize table t = table_initialize(3, widths); // Write row data table_add_row(t); table_add_data(t, 0, 0, ""); table_add_data(t, 0, 1, "4b in, 4b out"); table_add_data(t, 0, 2, "2x1024 in, 2048 out"); // Write row data table_add_row(t); table_add_data(t, 1, 0, "Local call"); table_add_data(t, 1, 1, "%lis %09li ns", diff[0].tv_sec, diff[0].tv_nsec); table_add_data(t, 1, 2, "%lis %09li ns", diff[1].tv_sec, diff[1].tv_nsec); // Write row data table_add_row(t); table_add_data(t, 2, 0, "RPC (local)"); table_add_data(t, 2, 1, "%lis %09li ns", diff[2].tv_sec, diff[2].tv_nsec); table_add_data(t, 2, 2, "%lis %09li ns", diff[3].tv_sec, diff[3].tv_nsec); // Write row data table_add_row(t); table_add_data(t, 3, 0, "RPC (remota)"); table_add_data(t, 3, 1, "%lis %09li ns", diff[4].tv_sec, diff[4].tv_nsec); table_add_data(t, 3, 2, "%lis %09li ns", diff[5].tv_sec, diff[5].tv_nsec); // Write row data table_add_row(t); table_add_data(t, 4, 0, "RPC (hetero)"); table_add_data(t, 4, 1, "%lis %09li ns", diff[6].tv_sec, diff[6].tv_nsec); table_add_data(t, 4, 2, "%lis %09li ns", diff[7].tv_sec, diff[7].tv_nsec); // Print table table_print(t); return 0; }