📄 performance_test_options.cpp
字号:
// Performance_Test_Options.cpp,v 1.8 2004/01/10 23:38:28 bala Exp
#define ACE_BUILD_SVC_DLL
#include "Performance_Test_Options.h"
#include "ace/OS_NS_strings.h"
ACE_RCSID(Synch_Benchmarks, Performance_Test_Options, "Performance_Test_Options.cpp,v 1.8 2004/01/10 23:38:28 bala Exp")
#if defined (ACE_HAS_THREADS)
// Manages the options.
Performance_Test_Options performance_test_options;
size_t
Performance_Test_Options::count (void)
{
size_t total = 0;
if (performance_test_options.verbose ())
ACE_DEBUG ((LM_DEBUG, "Thread work count size = %d\n", performance_test_options.thr_wc_size));
for (int i = 0; i < performance_test_options.thr_wc_size; i++)
{
if (performance_test_options.thr_work_count[i] != 0)
{
// if (performance_test_options.verbose ())
ACE_DEBUG ((LM_DEBUG, "count[%d] = %d\n", i, performance_test_options.thr_work_count[i]));
total += performance_test_options.thr_work_count[i];
}
}
return total;
}
void
Performance_Test_Options::init (void)
{
for (int i = 0; i < this->thr_wc_size; i++)
this->thr_work_count[i] = 0;
}
Performance_Test_Options::Performance_Test_Options (void)
: thr_wc_size (10000),
_service_entry (0),
_mapped_file (0),
_pipe_addr (ACE_const_cast (char *, ACE_DEFAULT_RENDEZVOUS)),
_sleep_time (100),
_n_lwps (0),
_thr_count (4),
_t_flags (0),
_high_water_mark (8 * 1024),
_low_water_mark (1024),
_msg_size (128),
_initial_queue_length (0),
_logical_connections (1),
_physical_connections (1),
_iterations (100000),
_generate (0),
_udp (0),
_debugging (0),
_verbosity (0),
_ack (1),
_checksum (1),
_xdr (1),
_free_memory (1),
_zero_copy (0),
_print_summary (0),
_consecutive_ports (1),
_eager_exit (0)
{
this->thr_work_count = new int[this->thr_wc_size];
this->init ();
}
void
Performance_Test_Options::parse_args (int argc, char *argv[])
{
ACE_Get_Opt get_opt (argc, argv, "a:A:bBc:C:dDe:F:g:H:i:L:l:M:m:n:Np:P:s:S:t:T:uvX:Z:", 0);
int c;
while ((c = get_opt ()) != -1)
switch (c)
{
case 'a': // Not used. (do_ack ???)
this->_ack = ACE_OS::strcasecmp (get_opt.opt_arg (), "ON") == 0;
break;
case 'A': // Not used. (set rendezvous point.)
this->pipe_addr (get_opt.opt_arg ());
break;
case 'B': // Create thread with THR_BOUND.
this->t_flags (THR_BOUND);
break;
case 'c': // Not used. (# of connections.)
{
long connections = ACE_OS::atoi (get_opt.opt_arg ());
if (connections < 0)
this->physical_connections (size_t (-connections));
else if (connections > 0)
this->logical_connections (size_t (connections));
else
ACE_DEBUG ((LM_WARNING, "warning, 0 connections!\n"));
break;
}
case 'C': // Not used. (Toggle calculate checksum.)
this->_checksum = ACE_OS::strcasecmp (get_opt.opt_arg (), "ON") == 0;
break;
case 'd': // Not used. (Enable debugging.)
this->_debugging = 1;
break;
case 'D': // Create thread with THR_DETACHED.
this->t_flags (THR_DETACHED);
break;
case 'e': // Perform eager exit (without cleaning up.)
this->_eager_exit = ACE_OS::strcasecmp (get_opt.opt_arg (), "ON") == 0;
break;
case 'F': // Not used.
this->_free_memory = ACE_OS::strcasecmp (get_opt.opt_arg (), "ON") == 0;
break;
case 'g': // Not used. (generate data ??)
this->_generate = ACE_OS::strcasecmp (get_opt.opt_arg (), "ON") == 0;
break;
case 'H': // Not used. (set high water mark)
this->high_water_mark (ACE_OS::atoi (get_opt.opt_arg ()));
break;
case 'i': // Not used. (# of iterations)
this->iterations (ACE_OS::atoi (get_opt.opt_arg ()));
break;
case 'L': // Not used. (set low water mark)
this->low_water_mark (ACE_OS::atoi (get_opt.opt_arg ()));
break;
case 'l': // Not used. (set initial queue length)
this->initial_queue_length (ACE_OS::atoi (get_opt.opt_arg ()));
break;
case 'M': // Set message size in pipe_[proc|thr]_test.
this->msg_size (ACE_OS::atoi (get_opt.opt_arg ()));
break;
case 'm': // Not used. (set mapped file name)
this->mapped_file (get_opt.opt_arg ());
break;
case 'N': // Create thread with flag THR_NEW_LWP.
this->t_flags (THR_NEW_LWP);
break;
case 'n': // Set # of lwp's
this->n_lwps (ACE_OS::atoi (get_opt.opt_arg ()));
break;
case 'p': // Toggle whether summary is printed.
this->_print_summary = ACE_OS::strcasecmp (get_opt.opt_arg (), "ON") == 0;
break;
case 'P': // Not used.
this->consecutive_ports (ACE_OS::atoi (get_opt.opt_arg ()));
break;
case 'S': // Not used (set service_entry ???)
this->service_entry (get_opt.opt_arg ());
break;
case 's': // Set testing duration.
this->sleep_time (ACE_OS::atoi (get_opt.opt_arg ()));
break;
case 'T': // Enable/disable tracing.
#if defined (ACE_HAS_TRACE)
if (ACE_OS::strcasecmp (get_opt.opt_arg (), "ON") == 0)
ACE_Trace::start_tracing ();
else if (ACE_OS::strcasecmp (get_opt.opt_arg (), "OFF") == 0)
ACE_Trace::stop_tracing ();
#endif /* ACE_HAS_TRACE */
break;
case 't': // Set # of threads contending the lock.
this->thr_count (ACE_OS::atoi (get_opt.opt_arg ()));
break;
case 'u': // Not used. (use udp.)
this->_udp = 1;
break;
case 'v': // Not used. (set display verbosely)
this->_verbosity = 1;
break;
case 'X': // Not used. (Use xdr conversion.)
this->_xdr = ACE_OS::strcasecmp (get_opt.opt_arg (), "ON") == 0;
break;
case 'Z': // Not used. (Do zero copy.)
this->_zero_copy = ACE_OS::strcasecmp (get_opt.opt_arg (), "ON") == 0;
break;
default:
ACE_DEBUG ((LM_INFO,
"%s\n"
"\t[-a] (send acknowledgement)\n"
"\t[-A] address of pipe [%s]\n"
"\t[-B] (THR_BOUND)\n"
"\t[-c] + number of logical connections\n"
"\t[-c] - number of physical connections\n"
"\t[-C] (enable checksumming)\n"
"\t[-d] (enable debugging)\n"
"\t[-D] (THR_DETACHED)\n"
"\t[-e] (eager exit)\n"
"\t[-F] (free memory)\n"
"\t[-g] (generate data)\n"
"\t[-H] high water mark\n"
"\t[-i] number of test iterations [%d]\n"
"\t[-L] low water mark\n"
"\t[-m] mapped file\n"
"\t[-M] message size\n"
"\t[-n] number of LWPs\n"
"\t[-N] (THR_NEW_LWP)\n"
"\t[-p] (print benchmark summary)\n"
"\t[-P] number of consecutive ports\n"
"\t[-s] sleep time\n"
"\t[-S] service entry\n"
"\t[-t] number of threads [%d]\n"
"\t[-T] (enable tracing)\n"
"\t[-u] (UDP) \n"
"\t[-v] (verbose) \n"
"\t[-X] (enable xdr conversion)\n"
"\t[-Z] (enable zero-copy driver)\n%a",
argv[0],
this->pipe_addr (),
this->iterations (),
this->thr_count (),
1));
/* NOTREACHED */
break;
}
if (this->do_print_summary ())
ACE_DEBUG ((LM_INFO,
"%8d = total iterations\n"
"%8d = logical connections\n"
"%8d = physical connections\n"
"%8d = message_size\n"
"%8d = calculated checksum\n"
"%8d = perform xdr conversion\n"
"%8d = number of LWPs requested\n"
"%8d = number of LWPs used\n",
this->iterations (),
this->logical_connections (),
this->physical_connections (),
this->msg_size (),
this->do_checksum () != 0,
this->do_xdr() != 0,
this->n_lwps (),
ACE_Thread::getconcurrency ()));
else if (this->verbose ())
ACE_DEBUG ((LM_INFO,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -