void bench_overhead(void) { ctx_t *ctx = core_get(); int a[BENCH + 1]; int *tmpa; do { ctx->over = 0; for (int l = 0; l < BENCH; l++) { ctx->total = 0; /* Measure the cost of (n^2 + over). */ bench_before(); for (int i = 0; i < BENCH; i++) { tmpa = a; for (int j = 0; j < BENCH; j++) { empty(tmpa++); } } bench_after(); /* Add the cost of (n^2 + over). */ ctx->over += ctx->total; } /* Overhead stores the cost of n*(n^2 + over) = n^3 + n*over. */ ctx->total = 0; /* Measure the cost of (n^3 + over). */ bench_before(); for (int i = 0; i < BENCH; i++) { for (int k = 0; k < BENCH; k++) { tmpa = a; for (int j = 0; j < BENCH; j++) { empty(tmpa++); } } } bench_after(); /* Subtract the cost of (n^3 + over). */ ctx->over -= ctx->total; /* Now overhead stores (n - 1)*over, so take the average to obtain the * overhead to execute BENCH operations inside a benchmark. */ ctx->over /= (BENCH - 1); /* Divide to obtain the overhead of one operation pair. */ ctx->over /= BENCH; } while (ctx->over < 0); ctx->total = ctx->over; bench_print(); }
int bench_cipher(akmos_algo_id algo, akmos_mode_id mode, struct opt_bench_s *opt) { const akmos_cipher_xdesc_t *cd; pthread_t thread; size_t i; uint8_t key[BENCH_MAXKEYLEN]; int err; opt->algo = algo; opt->mode = mode; cd = akmos_cipher_desc(algo); if(!cd) return EXIT_FAILURE; for(i = 0; i < sizeof(key); i++) key[i] = i % UINT8_MAX; opt->key = key; for(i = cd->keymin; i <= cd->keymax; i += cd->keystep) { opt->cnt = 0; opt->keylen = i; err = pthread_create(&thread, NULL, &cipher, opt); if(err) { fprintf(stderr, "%s\n", strerror(errno)); return err; } sleep(opt->time); pthread_cancel(thread); pthread_join(thread, NULL); if(opt->err) { akmos_perror(opt->err); return EXIT_FAILURE; } bench_print(opt); } return EXIT_SUCCESS; }
void TeXmacs_main (int argc, char** argv) { int i; bool flag= true; string the_default_font; for (i=1; i<argc; i++) if (argv[i][0] == '\0') argc= i; else if (((argv[i][0] == '-') || (argv[i][0] == '+')) && (argv[i][1] != '\0')) { string s= argv[i]; if ((N(s)>=2) && (s(0,2)=="--")) s= s (1, N(s)); if ((s == "-s") || (s == "-silent")) flag= false; else if ((s == "-V") || (s == "-verbose")) debug (DEBUG_FLAG_VERBOSE, true); else if ((s == "-d") || (s == "-debug")) debug (DEBUG_FLAG_STD, true); else if (s == "-debug-events") debug (DEBUG_FLAG_EVENTS, true); else if (s == "-debug-io") debug (DEBUG_FLAG_IO, true); else if (s == "-debug-bench") debug (DEBUG_FLAG_BENCH, true); else if (s == "-debug-history") debug (DEBUG_FLAG_HISTORY, true); else if (s == "-debug-qt") debug (DEBUG_FLAG_QT, true); else if (s == "-debug-qt-widgets") debug (DEBUG_FLAG_QT_WIDGETS, true); else if (s == "-debug-keyboard") debug (DEBUG_FLAG_KEYBOARD, true); else if (s == "-debug-packrat") debug (DEBUG_FLAG_PACKRAT, true); else if (s == "-debug-flatten") debug (DEBUG_FLAG_FLATTEN, true); else if (s == "-debug-correct") debug (DEBUG_FLAG_CORRECT, true); else if (s == "-debug-convert") debug (DEBUG_FLAG_CONVERT, true); else if (s == "-debug-all") { debug (DEBUG_FLAG_EVENTS, true); debug (DEBUG_FLAG_STD, true); debug (DEBUG_FLAG_IO, true); debug (DEBUG_FLAG_HISTORY, true); debug (DEBUG_FLAG_BENCH, true); debug (DEBUG_FLAG_QT, true); debug (DEBUG_FLAG_QT_WIDGETS, true); } else if (s == "-disable-error-recovery") disable_error_recovery= true; else if ((s == "-fn") || (s == "-font")) { i++; if (i<argc) the_default_font= argv[i]; } else if ((s == "-g") || (s == "-geometry")) { i++; if (i<argc) { string g= argv[i]; int j=0, j1, j2, j3; for (j=0; j<N(g); j++) if (g[j] == 'x') break; j1=j; if (j<N(g)) j++; for (; j<N(g); j++) if ((g[j] == '+') || (g[j] == '-')) break; j2=j; if (j<N(g)) j++; for (; j<N(g); j++) if ((g[j] == '+') || (g[j] == '-')) break; j3=j; if (j1<N(g)) { geometry_w= max (as_int (g (0, j1)), 320); geometry_h= max (as_int (g (j1+1, j2)), 200); } if (j3<N(g)) { if (g[j2] == '-') geometry_x= as_int (g (j2, j3)) - 1; else geometry_x= as_int (g (j2+1, j3)); if (g[j3] == '-') geometry_y= as_int (g (j3, N(g))) - 1; else geometry_y= as_int (g (j3+1, N(g))); } } } else if ((s == "-b") || (s == "-initialize-buffer")) { i++; if (i<argc) tm_init_buffer_file= url_system (argv[i]); } else if ((s == "-i") || (s == "-initialize")) { i++; if (i<argc) tm_init_file= url_system (argv[i]); } else if ((s == "-v") || (s == "-version")) { cout << "\n"; cout << "TeXmacs version " << TEXMACS_VERSION << "\n"; cout << TEXMACS_COPYRIGHT << "\n"; cout << "\n"; exit (0); } else if ((s == "-p") || (s == "-path")) { cout << get_env ("TEXMACS_PATH") << "\n"; exit (0); } else if ((s == "-bp") || (s == "-binpath")) { cout << get_env ("TEXMACS_BIN_PATH") << "\n"; exit (0); } else if ((s == "-q") || (s == "-quit")) my_init_cmds= my_init_cmds * " (quit-TeXmacs)"; else if ((s == "-r") || (s == "-reverse")) set_reverse_colors (true); else if (s == "-no-retina") { retina_manual= true; retina_factor= 1; retina_icons = 1; retina_scale = 1.0; } else if ((s == "-R") || (s == "-retina")) { retina_manual= true; retina_factor= 2; retina_icons = 2; retina_scale = 1.4; } else if (s == "-no-retina-icons") { retina_iman = true; retina_icons = 1; } else if (s == "-retina-icons") { retina_iman = true; retina_icons = 2; } else if ((s == "-c") || (s == "-convert")) { i+=2; if (i<argc) { url in ("$PWD", argv[i-1]); url out ("$PWD", argv[ i ]); my_init_cmds= my_init_cmds * " " * "(load-buffer " * scm_quote (as_string (in)) * " :strict) " * "(export-buffer " * scm_quote (as_string (out)) * ")"; } } else if ((s == "-x") || (s == "-execute")) { i++; if (i<argc) my_init_cmds= (my_init_cmds * " ") * argv[i]; } else if (s == "-server") start_server_flag= true; else if (s == "-log-file") i++; else if ((s == "-Oc") || (s == "-no-char-clipping")) char_clip= false; else if ((s == "+Oc") || (s == "-char-clipping")) char_clip= true; else if ((s == "-S") || (s == "-setup") || (s == "-delete-cache") || (s == "-delete-font-cache") || (s == "-delete-style-cache") || (s == "-delete-file-cache") || (s == "-delete-doc-cache") || (s == "-delete-plugin-cache") || (s == "-delete-server-data") || (s == "-delete-databases")); else if (starts (s, "-psn")); else { cout << "\n"; cout << "Options for TeXmacs:\n\n"; cout << " -b [file] Specify scheme buffers initialization file\n"; cout << " -c [i] [o] Convert file 'i' into file 'o'\n"; cout << " -d For debugging purposes\n"; cout << " -fn [font] Set the default TeX font\n"; cout << " -g [geom] Set geometry of window in pixels\n"; cout << " -h Display this help message\n"; cout << " -i [file] Specify scheme initialization file\n"; cout << " -p Get the TeXmacs path\n"; cout << " -q Shortcut for -x \"(quit-TeXmacs)\"\n"; cout << " -r Reverse video mode\n"; cout << " -s Suppress information messages\n"; cout << " -S Rerun TeXmacs setup program before starting\n"; cout << " -v Display current TeXmacs version\n"; cout << " -V Show some informative messages\n"; cout << " -x [cmd] Execute scheme command\n"; cout << " -Oc TeX characters bitmap clipping off\n"; cout << " +Oc TeX characters bitmap clipping on (default)\n"; cout << "\nPlease report bugs to <*****@*****.**>\n"; cout << "\n"; exit (0); } } if (flag) debug (DEBUG_FLAG_AUTO, true); // Further options via environment variables if (get_env ("TEXMACS_RETINA") == "off") { retina_manual= true; retina_factor= 1; retina_icons = 1; retina_scale = 1.0; } if (get_env ("TEXMACS_RETINA") == "on") { retina_manual= true; retina_factor= 2; retina_icons = 2; retina_scale = 1.4; } if (get_env ("TEXMACS_RETINA_ICONS") == "off") { retina_iman = true; retina_icons = 1; } if (get_env ("TEXMACS_RETINA_ICONS") == "on") { retina_iman = true; retina_icons = 2; } // End options via environment variables if (DEBUG_STD) debug_boot << "Installing internal plug-ins...\n"; bench_start ("initialize plugins"); init_plugins (); bench_cumul ("initialize plugins"); if (DEBUG_STD) debug_boot << "Opening display...\n"; #if defined(X11TEXMACS) && defined(MACOSX_EXTENSIONS) init_mac_application (); #endif gui_open (argc, argv); set_default_font (the_default_font); if (DEBUG_STD) debug_boot << "Starting server...\n"; { // opening scope for server sv server sv; // HACK: // Qt and Guile want to change the locale. // We need to force it to C to parse correctly the configuration files // (see as_double() in string.cpp) setlocale(LC_NUMERIC, "C"); string where= ""; for (i=1; i<argc; i++) { if (argv[i] == NULL) break; string s= argv[i]; if ((N(s)>=2) && (s(0,2)=="--")) s= s (1, N(s)); if ((s[0] != '-') && (s[0] != '+')) { if (DEBUG_STD) debug_boot << "Loading " << s << "...\n"; url u= url_system (s); if (!is_rooted (u)) u= resolve (url_pwd (), "") * u; string b= scm_quote (as_string (u)); string cmd= "(load-buffer " * b * " " * where * ")"; where= " :new-window"; exec_delayed (scheme_cmd (cmd)); } if ((s == "-c") || (s == "-convert")) i+=2; else if ((s == "-b") || (s == "-initialize-buffer") || (s == "-fn") || (s == "-font") || (s == "-i") || (s == "-initialize") || (s == "-g") || (s == "-geometry") || (s == "-x") || (s == "-execute") || (s == "-log-file")) i++; } if (install_status == 1) { if (DEBUG_STD) debug_boot << "Loading welcome message...\n"; url u= "tmfs://help/plain/tm/doc/about/welcome/first.en.tm"; string b= scm_quote (as_string (u)); string cmd= "(load-buffer " * b * " " * where * ")"; where= " :new-window"; exec_delayed (scheme_cmd (cmd)); } else if (install_status == 2) { if (DEBUG_STD) debug_boot << "Loading upgrade message...\n"; url u= "tmfs://help/plain/tm/doc/about/changes/changes-recent.en.tm"; string b= scm_quote (as_string (u)); string cmd= "(load-buffer " * b * " " * where * ")"; where= " :new-window"; exec_delayed (scheme_cmd (cmd)); } if (number_buffers () == 0) { if (DEBUG_STD) debug_boot << "Creating 'no name' buffer...\n"; open_window (); } bench_print (); bench_reset ("initialize texmacs"); bench_reset ("initialize plugins"); bench_reset ("initialize scheme"); if (DEBUG_STD) debug_boot << "Starting event loop...\n"; texmacs_started= true; if (!disable_error_recovery) signal (SIGSEGV, clean_exit_on_segfault); if (start_server_flag) server_start (); gui_start_loop (); if (DEBUG_STD) debug_boot << "Stopping server...\n"; } // ending scope for server sv if (DEBUG_STD) debug_boot << "Closing display...\n"; gui_close (); #if defined(X11TEXMACS) && defined(MACOSX_EXTENSIONS) finalize_mac_application (); #endif if (DEBUG_STD) debug_boot << "Good bye...\n"; }