diff options
Diffstat (limited to 'ACE/performance-tests/RPC/client.cpp')
-rw-r--r-- | ACE/performance-tests/RPC/client.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/ACE/performance-tests/RPC/client.cpp b/ACE/performance-tests/RPC/client.cpp new file mode 100644 index 00000000000..b0f4a476600 --- /dev/null +++ b/ACE/performance-tests/RPC/client.cpp @@ -0,0 +1,72 @@ +/* + * $Id$ + */ +#include "ace/Stats.h" +#include "ace/High_Res_Timer.h" +#include "ace/Get_Opt.h" + +#include "ping.h" + +int main (int argc, char* argv[]) +{ + const char* host = 0; + int nsamples = 10000; + int c; + + ACE_Get_Opt getopt (argc, argv, "h:i:"); + + while ((c = getopt ()) != -1) + { + switch ((char) c) + { + case 'h': + host = getopt.opt_arg (); + break; + + case 'i': + nsamples = ACE_OS::atoi (getopt.opt_arg ()); + break; + } + } + + if (host == 0) + { + ACE_DEBUG ((LM_DEBUG, "Usage: client -h host -i iterations\n")); + return 1; + } + + CLIENT *cl = + clnt_create (host, PINGPROG, PINGVERS, "tcp"); + + if (cl == 0) + { + ACE_DEBUG ((LM_DEBUG, "Cannot create client handle\n")); + return 1; + } + + ACE_Throughput_Stats throughput; + + ACE_hrtime_t test_start = ACE_OS::gethrtime (); + for (int i = 0; i != nsamples; ++i) + { + ACE_hrtime_t start = ACE_OS::gethrtime (); + + int p = 0; + (void) ping_1 (&p, cl); + + ACE_hrtime_t end = ACE_OS::gethrtime (); + + throughput.sample (end - test_start, + end - start); + + } + + ACE_DEBUG ((LM_DEBUG, "Calibrating high resolution timer . . .")); + ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); + ACE_DEBUG ((LM_DEBUG, " done\n")); + + throughput.dump_results ("Client", gsf); + + + return 0; +} |