From c08a7f8896e8fdae8379d2fce552b360daaeadc8 Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Fri, 12 Mar 2010 20:02:19 +0100 Subject: C perf tests are built non-optionally; C++ perf tests removed --- perf/Makefile.am | 131 +++++++++++++++++++++++++++++++++++++++++++++- perf/c/Makefile.am | 129 --------------------------------------------- perf/c/local_lat.c | 106 ------------------------------------- perf/c/local_thr.c | 136 ------------------------------------------------ perf/c/remote_lat.c | 119 ------------------------------------------ perf/c/remote_thr.c | 98 ---------------------------------- perf/cpp/Makefile.am | 20 ------- perf/cpp/local_lat.cpp | 52 ------------------ perf/cpp/local_thr.cpp | 71 ------------------------- perf/cpp/remote_lat.cpp | 63 ---------------------- perf/cpp/remote_thr.cpp | 54 ------------------- perf/local_lat.c | 106 +++++++++++++++++++++++++++++++++++++ perf/local_thr.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++ perf/remote_lat.c | 119 ++++++++++++++++++++++++++++++++++++++++++ perf/remote_thr.c | 98 ++++++++++++++++++++++++++++++++++ 15 files changed, 588 insertions(+), 850 deletions(-) delete mode 100644 perf/c/Makefile.am delete mode 100644 perf/c/local_lat.c delete mode 100644 perf/c/local_thr.c delete mode 100644 perf/c/remote_lat.c delete mode 100644 perf/c/remote_thr.c delete mode 100644 perf/cpp/Makefile.am delete mode 100644 perf/cpp/local_lat.cpp delete mode 100644 perf/cpp/local_thr.cpp delete mode 100644 perf/cpp/remote_lat.cpp delete mode 100644 perf/cpp/remote_thr.cpp create mode 100644 perf/local_lat.c create mode 100644 perf/local_thr.c create mode 100644 perf/remote_lat.c create mode 100644 perf/remote_thr.c (limited to 'perf') diff --git a/perf/Makefile.am b/perf/Makefile.am index 7e87d68..d48dcee 100644 --- a/perf/Makefile.am +++ b/perf/Makefile.am @@ -1,2 +1,129 @@ -SUBDIRS = c cpp -DIST_SUBDIRS = c cpp +INCLUDES = -I$(top_builddir)/include + +if BUILD_PGM_EXAMPLES +PGM_EXAMPLES_BINS = pgmsend pgmrecv +endif + +noinst_PROGRAMS = local_lat remote_lat local_thr remote_thr $(PGM_EXAMPLES_BINS) + +local_lat_LDADD = $(top_builddir)/src/libzmq.la +local_lat_SOURCES = local_lat.c +local_lat_CXXFLAGS = -Wall -pedantic -Werror + +remote_lat_LDADD = $(top_builddir)/src/libzmq.la +remote_lat_SOURCES = remote_lat.c +remote_lat_CXXFLAGS = -Wall -pedantic -Werror + +local_thr_LDADD = $(top_builddir)/src/libzmq.la +local_thr_SOURCES = local_thr.c +local_thr_CXXFLAGS = -Wall -pedantic -Werror + +remote_thr_LDADD = $(top_builddir)/src/libzmq.la +remote_thr_SOURCES = remote_thr.c +remote_thr_CXXFLAGS = -Wall -pedantic -Werror + +if BUILD_PGM_EXAMPLES + +if ON_MINGW +pgmexamples_diff_flags = \ + -D_WIN32_WINNT=0x0501 \ + -DCONFIG_HAVE_IFR_NETMASK \ + -DCONFIG_BIND_INADDR_ANY \ + -DCONFIG_GALOIS_MUL_LUT \ + -DIF_NAMESIZE=256 \ + -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \ + -DCONFIG_HAVE_WSACMSGHDR \ + -DGETTEXT_PACKAGE='"pgm"' \ + -DG_LOG_DOMAIN='"Pgm"' + +else +pgmexamples_diff_flags = \ + -D__need_IOV_MAX \ + -DCONFIG_HAVE_PSELECT \ + -DCONFIG_HAVE_POLL \ + -DCONFIG_HAVE_PPOLL \ + -DCONFIG_HAVE_EPOLL \ + -DCONFIG_HAVE_CLOCK_GETTIME \ + -DCONFIG_HAVE_CLOCK_NANOSLEEP \ + -DCONFIG_HAVE_NANOSLEEP \ + -DCONFIG_HAVE_USLEEP \ + -DCONFIG_HAVE_RTC \ + -DCONFIG_HAVE_TSC \ + -DCONFIG_HAVE_IFR_NETMASK \ + -DCONFIG_HAVE_GETIFADDRS \ + -DCONFIG_HAVE_GETHOSTBYNAME2 \ + -DCONFIG_HAVE_GETPROTOBYNAME_R \ + -DCONFIG_BIND_INADDR_ANY \ + -DCONFIG_GALOIS_MUL_LUT \ + -DCONFIG_HAVE_MCAST_JOIN \ + -DCONFIG_HAVE_IP_MREQN \ + -DCONFIG_HAVE_SPRINTF_GROUPING \ + -DCONFIG_HAVE_HPET \ + -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \ + -DGETTEXT_PACKAGE='"pgm"' \ + -DG_LOG_DOMAIN='"Pgm"' +endif + +nodist_pgmsend_SOURCES = ../../foreign/openpgm/@pgm_basename@/openpgm/pgm/examples/pgmsend.c +pgmsend_LDADD = $(top_builddir)/src/libzmq.la +pgmsend_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ -Wall @LIBZMQ_EXTRA_CXXFLAGS@ \ + -pipe \ + -Wall \ + -Wextra \ + -Wfloat-equal \ + -Wshadow \ + -Wunsafe-loop-optimizations \ + -Wpointer-arith \ + -Wbad-function-cast \ + -Wcast-qual \ + -Wcast-align \ + -Wwrite-strings \ + -Waggregate-return \ + -Wstrict-prototypes \ + -Wold-style-definition \ + -Wmissing-prototypes \ + -Wmissing-declarations \ + -Wmissing-noreturn \ + -Wmissing-format-attribute \ + -Wredundant-decls \ + -Wnested-externs \ + -Winline \ + -pedantic \ + -std=gnu99 \ + --param max-inline-insns-single=600 \ + -D_REENTRANT \ + -D_GNU_SOURCE \ + ${pgmexamples_diff_flags} + +nodist_pgmrecv_SOURCES = ../../foreign/openpgm/@pgm_basename@/openpgm/pgm/examples/pgmrecv.c +pgmrecv_LDADD = $(top_builddir)/src/libzmq.la +pgmrecv_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ -Wall @LIBZMQ_EXTRA_CXXFLAGS@ \ + -pipe \ + -Wall \ + -Wextra \ + -Wfloat-equal \ + -Wshadow \ + -Wunsafe-loop-optimizations \ + -Wpointer-arith \ + -Wbad-function-cast \ + -Wcast-qual \ + -Wcast-align \ + -Wwrite-strings \ + -Waggregate-return \ + -Wstrict-prototypes \ + -Wold-style-definition \ + -Wmissing-prototypes \ + -Wmissing-declarations \ + -Wmissing-noreturn \ + -Wmissing-format-attribute \ + -Wredundant-decls \ + -Wnested-externs \ + -Winline \ + -pedantic \ + -std=gnu99 \ + --param max-inline-insns-single=600 \ + -D_REENTRANT \ + -D_GNU_SOURCE \ + ${pgmexamples_diff_flags} + +endif diff --git a/perf/c/Makefile.am b/perf/c/Makefile.am deleted file mode 100644 index d48dcee..0000000 --- a/perf/c/Makefile.am +++ /dev/null @@ -1,129 +0,0 @@ -INCLUDES = -I$(top_builddir)/include - -if BUILD_PGM_EXAMPLES -PGM_EXAMPLES_BINS = pgmsend pgmrecv -endif - -noinst_PROGRAMS = local_lat remote_lat local_thr remote_thr $(PGM_EXAMPLES_BINS) - -local_lat_LDADD = $(top_builddir)/src/libzmq.la -local_lat_SOURCES = local_lat.c -local_lat_CXXFLAGS = -Wall -pedantic -Werror - -remote_lat_LDADD = $(top_builddir)/src/libzmq.la -remote_lat_SOURCES = remote_lat.c -remote_lat_CXXFLAGS = -Wall -pedantic -Werror - -local_thr_LDADD = $(top_builddir)/src/libzmq.la -local_thr_SOURCES = local_thr.c -local_thr_CXXFLAGS = -Wall -pedantic -Werror - -remote_thr_LDADD = $(top_builddir)/src/libzmq.la -remote_thr_SOURCES = remote_thr.c -remote_thr_CXXFLAGS = -Wall -pedantic -Werror - -if BUILD_PGM_EXAMPLES - -if ON_MINGW -pgmexamples_diff_flags = \ - -D_WIN32_WINNT=0x0501 \ - -DCONFIG_HAVE_IFR_NETMASK \ - -DCONFIG_BIND_INADDR_ANY \ - -DCONFIG_GALOIS_MUL_LUT \ - -DIF_NAMESIZE=256 \ - -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \ - -DCONFIG_HAVE_WSACMSGHDR \ - -DGETTEXT_PACKAGE='"pgm"' \ - -DG_LOG_DOMAIN='"Pgm"' - -else -pgmexamples_diff_flags = \ - -D__need_IOV_MAX \ - -DCONFIG_HAVE_PSELECT \ - -DCONFIG_HAVE_POLL \ - -DCONFIG_HAVE_PPOLL \ - -DCONFIG_HAVE_EPOLL \ - -DCONFIG_HAVE_CLOCK_GETTIME \ - -DCONFIG_HAVE_CLOCK_NANOSLEEP \ - -DCONFIG_HAVE_NANOSLEEP \ - -DCONFIG_HAVE_USLEEP \ - -DCONFIG_HAVE_RTC \ - -DCONFIG_HAVE_TSC \ - -DCONFIG_HAVE_IFR_NETMASK \ - -DCONFIG_HAVE_GETIFADDRS \ - -DCONFIG_HAVE_GETHOSTBYNAME2 \ - -DCONFIG_HAVE_GETPROTOBYNAME_R \ - -DCONFIG_BIND_INADDR_ANY \ - -DCONFIG_GALOIS_MUL_LUT \ - -DCONFIG_HAVE_MCAST_JOIN \ - -DCONFIG_HAVE_IP_MREQN \ - -DCONFIG_HAVE_SPRINTF_GROUPING \ - -DCONFIG_HAVE_HPET \ - -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \ - -DGETTEXT_PACKAGE='"pgm"' \ - -DG_LOG_DOMAIN='"Pgm"' -endif - -nodist_pgmsend_SOURCES = ../../foreign/openpgm/@pgm_basename@/openpgm/pgm/examples/pgmsend.c -pgmsend_LDADD = $(top_builddir)/src/libzmq.la -pgmsend_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ -Wall @LIBZMQ_EXTRA_CXXFLAGS@ \ - -pipe \ - -Wall \ - -Wextra \ - -Wfloat-equal \ - -Wshadow \ - -Wunsafe-loop-optimizations \ - -Wpointer-arith \ - -Wbad-function-cast \ - -Wcast-qual \ - -Wcast-align \ - -Wwrite-strings \ - -Waggregate-return \ - -Wstrict-prototypes \ - -Wold-style-definition \ - -Wmissing-prototypes \ - -Wmissing-declarations \ - -Wmissing-noreturn \ - -Wmissing-format-attribute \ - -Wredundant-decls \ - -Wnested-externs \ - -Winline \ - -pedantic \ - -std=gnu99 \ - --param max-inline-insns-single=600 \ - -D_REENTRANT \ - -D_GNU_SOURCE \ - ${pgmexamples_diff_flags} - -nodist_pgmrecv_SOURCES = ../../foreign/openpgm/@pgm_basename@/openpgm/pgm/examples/pgmrecv.c -pgmrecv_LDADD = $(top_builddir)/src/libzmq.la -pgmrecv_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ -Wall @LIBZMQ_EXTRA_CXXFLAGS@ \ - -pipe \ - -Wall \ - -Wextra \ - -Wfloat-equal \ - -Wshadow \ - -Wunsafe-loop-optimizations \ - -Wpointer-arith \ - -Wbad-function-cast \ - -Wcast-qual \ - -Wcast-align \ - -Wwrite-strings \ - -Waggregate-return \ - -Wstrict-prototypes \ - -Wold-style-definition \ - -Wmissing-prototypes \ - -Wmissing-declarations \ - -Wmissing-noreturn \ - -Wmissing-format-attribute \ - -Wredundant-decls \ - -Wnested-externs \ - -Winline \ - -pedantic \ - -std=gnu99 \ - --param max-inline-insns-single=600 \ - -D_REENTRANT \ - -D_GNU_SOURCE \ - ${pgmexamples_diff_flags} - -endif diff --git a/perf/c/local_lat.c b/perf/c/local_lat.c deleted file mode 100644 index bd71f82..0000000 --- a/perf/c/local_lat.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - Copyright (c) 2007-2010 iMatix Corporation - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the Lesser GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - Lesser GNU General Public License for more details. - - You should have received a copy of the Lesser GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include - -int main (int argc, char *argv []) -{ - const char *bind_to; - int roundtrip_count; - int message_size; - void *ctx; - void *s; - int rc; - int i; - zmq_msg_t msg; - - if (argc != 4) { - printf ("usage: local_lat " - "\n"); - return 1; - } - bind_to = argv [1]; - message_size = atoi (argv [2]); - roundtrip_count = atoi (argv [3]); - - ctx = zmq_init (1, 1, 0); - if (!ctx) { - printf ("error in zmq_init: %s\n", zmq_strerror (errno)); - return -1; - } - - s = zmq_socket (ctx, ZMQ_REP); - if (!s) { - printf ("error in zmq_socket: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_bind (s, bind_to); - if (rc != 0) { - printf ("error in zmq_bind: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_msg_init (&msg); - if (rc != 0) { - printf ("error in zmq_msg_init: %s\n", zmq_strerror (errno)); - return -1; - } - - for (i = 0; i != roundtrip_count; i++) { - rc = zmq_recv (s, &msg, 0); - if (rc != 0) { - printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); - return -1; - } - if (zmq_msg_size (&msg) != message_size) { - printf ("message of incorrect size received\n"); - return -1; - } - rc = zmq_send (s, &msg, 0); - if (rc != 0) { - printf ("error in zmq_send: %s\n", zmq_strerror (errno)); - return -1; - } - } - - rc = zmq_msg_close (&msg); - if (rc != 0) { - printf ("error in zmq_msg_close: %s\n", zmq_strerror (errno)); - return -1; - } - - zmq_sleep (1); - - rc = zmq_close (s); - if (rc != 0) { - printf ("error in zmq_close: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_term (ctx); - if (rc != 0) { - printf ("error in zmq_term: %s\n", zmq_strerror (errno)); - return -1; - } - - return 0; -} diff --git a/perf/c/local_thr.c b/perf/c/local_thr.c deleted file mode 100644 index cfebd2d..0000000 --- a/perf/c/local_thr.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - Copyright (c) 2007-2010 iMatix Corporation - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the Lesser GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - Lesser GNU General Public License for more details. - - You should have received a copy of the Lesser GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include - -int main (int argc, char *argv []) -{ - const char *bind_to; - int message_count; - int message_size; - void *ctx; - void *s; - int rc; - int i; - zmq_msg_t msg; - void *watch; - unsigned long elapsed; - unsigned long throughput; - double megabits; - - if (argc != 4) { - printf ("usage: local_thr \n"); - return 1; - } - bind_to = argv [1]; - message_size = atoi (argv [2]); - message_count = atoi (argv [3]); - - ctx = zmq_init (1, 1, 0); - if (!ctx) { - printf ("error in zmq_send: %s\n", zmq_strerror (errno)); - return -1; - } - - s = zmq_socket (ctx, ZMQ_SUB); - if (!s) { - printf ("error in zmq_socket: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_setsockopt (s, ZMQ_SUBSCRIBE , "", 0); - if (rc != 0) { - printf ("error in zmq_setsockopt: %s\n", zmq_strerror (errno)); - return -1; - } - - // Add your socket options here. - // For example ZMQ_RATE, ZMQ_RECOVERY_IVL and ZMQ_MCAST_LOOP for PGM. - - rc = zmq_bind (s, bind_to); - if (rc != 0) { - printf ("error in zmq_bind: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_msg_init (&msg); - if (rc != 0) { - printf ("error in zmq_msg_init: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_recv (s, &msg, 0); - if (rc != 0) { - printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); - return -1; - } - if (zmq_msg_size (&msg) != message_size) { - printf ("message of incorrect size received\n"); - return -1; - } - - watch = zmq_stopwatch_start (); - - for (i = 0; i != message_count - 1; i++) { - rc = zmq_recv (s, &msg, 0); - if (rc != 0) { - printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); - return -1; - } - if (zmq_msg_size (&msg) != message_size) { - printf ("message of incorrect size received\n"); - return -1; - } - } - - elapsed = zmq_stopwatch_stop (watch); - if (elapsed == 0) - elapsed = 1; - - rc = zmq_msg_close (&msg); - if (rc != 0) { - printf ("error in zmq_msg_close: %s\n", zmq_strerror (errno)); - return -1; - } - - throughput = (unsigned long) - ((double) message_count / (double) elapsed * 1000000); - megabits = (double) (throughput * message_size * 8) / 1000000; - - printf ("message size: %d [B]\n", (int) message_size); - printf ("message count: %d\n", (int) message_count); - printf ("mean throughput: %d [msg/s]\n", (int) throughput); - printf ("mean throughput: %.3f [Mb/s]\n", (double) megabits); - - rc = zmq_close (s); - if (rc != 0) { - printf ("error in zmq_close: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_term (ctx); - if (rc != 0) { - printf ("error in zmq_term: %s\n", zmq_strerror (errno)); - return -1; - } - - return 0; -} diff --git a/perf/c/remote_lat.c b/perf/c/remote_lat.c deleted file mode 100644 index 901afd5..0000000 --- a/perf/c/remote_lat.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - Copyright (c) 2007-2010 iMatix Corporation - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the Lesser GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - Lesser GNU General Public License for more details. - - You should have received a copy of the Lesser GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include -#include - -int main (int argc, char *argv []) -{ - const char *connect_to; - int roundtrip_count; - int message_size; - void *ctx; - void *s; - int rc; - int i; - zmq_msg_t msg; - void *watch; - unsigned long elapsed; - double latency; - - if (argc != 4) { - printf ("usage: remote_lat " - "\n"); - return 1; - } - connect_to = argv [1]; - message_size = atoi (argv [2]); - roundtrip_count = atoi (argv [3]); - - ctx = zmq_init (1, 1, 0); - if (!ctx) { - printf ("error in zmq_init: %s\n", zmq_strerror (errno)); - return -1; - } - - s = zmq_socket (ctx, ZMQ_REQ); - if (!s) { - printf ("error in zmq_socket: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_connect (s, connect_to); - if (rc != 0) { - printf ("error in zmq_connect: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_msg_init_size (&msg, message_size); - if (rc != 0) { - printf ("error in zmq_msg_init_size: %s\n", zmq_strerror (errno)); - return -1; - } - memset (zmq_msg_data (&msg), 0, message_size); - - watch = zmq_stopwatch_start (); - - for (i = 0; i != roundtrip_count; i++) { - rc = zmq_send (s, &msg, 0); - if (rc != 0) { - printf ("error in zmq_send: %s\n", zmq_strerror (errno)); - return -1; - } - rc = zmq_recv (s, &msg, 0); - if (rc != 0) { - printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); - return -1; - } - if (zmq_msg_size (&msg) != message_size) { - printf ("message of incorrect size received\n"); - return -1; - } - } - - elapsed = zmq_stopwatch_stop (watch); - - rc = zmq_msg_close (&msg); - if (rc != 0) { - printf ("error in zmq_msg_close: %s\n", zmq_strerror (errno)); - return -1; - } - - latency = (double) elapsed / (roundtrip_count * 2); - - printf ("message size: %d [B]\n", (int) message_size); - printf ("roundtrip count: %d\n", (int) roundtrip_count); - printf ("average latency: %.3f [us]\n", (double) latency); - - rc = zmq_close (s); - if (rc != 0) { - printf ("error in zmq_close: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_term (ctx); - if (rc != 0) { - printf ("error in zmq_term: %s\n", zmq_strerror (errno)); - return -1; - } - - return 0; -} diff --git a/perf/c/remote_thr.c b/perf/c/remote_thr.c deleted file mode 100644 index 43956e6..0000000 --- a/perf/c/remote_thr.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - Copyright (c) 2007-2010 iMatix Corporation - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the Lesser GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - Lesser GNU General Public License for more details. - - You should have received a copy of the Lesser GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include - -int main (int argc, char *argv []) -{ - const char *connect_to; - int message_count; - int message_size; - void *ctx; - void *s; - int rc; - int i; - zmq_msg_t msg; - - if (argc != 4) { - printf ("usage: remote_thr " - "\n"); - return 1; - } - connect_to = argv [1]; - message_size = atoi (argv [2]); - message_count = atoi (argv [3]); - - ctx = zmq_init (1, 1, 0); - if (!ctx) { - printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); - return -1; - } - - s = zmq_socket (ctx, ZMQ_PUB); - if (!s) { - printf ("error in zmq_socket: %s\n", zmq_strerror (errno)); - return -1; - } - - // Add your socket options here. - // For example ZMQ_RATE, ZMQ_RECOVERY_IVL and ZMQ_MCAST_LOOP for PGM. - - rc = zmq_connect (s, connect_to); - if (rc != 0) { - printf ("error in zmq_connect: %s\n", zmq_strerror (errno)); - return -1; - } - - for (i = 0; i != message_count; i++) { - rc = zmq_msg_init_size (&msg, message_size); - if (rc != 0) { - printf ("error in zmq_msg_init_size: %s\n", zmq_strerror (errno)); - return -1; - } - rc = zmq_send (s, &msg, 0); - if (rc != 0) { - printf ("error in zmq_send: %s\n", zmq_strerror (errno)); - return -1; - } - rc = zmq_msg_close (&msg); - if (rc != 0) { - printf ("error in zmq_msg_close: %s\n", zmq_strerror (errno)); - return -1; - } - } - - zmq_sleep (10); - - rc = zmq_close (s); - if (rc != 0) { - printf ("error in zmq_close: %s\n", zmq_strerror (errno)); - return -1; - } - - rc = zmq_term (ctx); - if (rc != 0) { - printf ("error in zmq_term: %s\n", zmq_strerror (errno)); - return -1; - } - - return 0; -} diff --git a/perf/cpp/Makefile.am b/perf/cpp/Makefile.am deleted file mode 100644 index 37b970c..0000000 --- a/perf/cpp/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -INCLUDES = -I$(top_srcdir)/include - -noinst_PROGRAMS = local_lat remote_lat local_thr remote_thr - -local_lat_LDADD = $(top_builddir)/src/libzmq.la -local_lat_SOURCES = local_lat.cpp -local_lat_CXXFLAGS = -Wall -pedantic -Werror - -remote_lat_LDADD = $(top_builddir)/src/libzmq.la -remote_lat_SOURCES = remote_lat.cpp -remote_lat_CXXFLAGS = -Wall -pedantic -Werror - -local_thr_LDADD = $(top_builddir)/src/libzmq.la -local_thr_SOURCES = local_thr.cpp -local_thr_CXXFLAGS = -Wall -pedantic -Werror - -remote_thr_LDADD = $(top_builddir)/src/libzmq.la -remote_thr_SOURCES = remote_thr.cpp -remote_thr_CXXFLAGS = -Wall -pedantic -Werror - diff --git a/perf/cpp/local_lat.cpp b/perf/cpp/local_lat.cpp deleted file mode 100644 index 6b7cb1a..0000000 --- a/perf/cpp/local_lat.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright (c) 2007-2010 iMatix Corporation - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the Lesser GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - Lesser GNU General Public License for more details. - - You should have received a copy of the Lesser GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include -#include -#include - -int main (int argc, char *argv []) -{ - if (argc != 4) { - printf ("usage: local_lat " - "\n"); - return 1; - } - const char *bind_to = argv [1]; - size_t message_size = (size_t) atoi (argv [2]); - int roundtrip_count = atoi (argv [3]); - - zmq::context_t ctx (1, 1); - - zmq::socket_t s (ctx, ZMQ_REP); - s.bind (bind_to); - - for (int i = 0; i != roundtrip_count; i++) { - zmq::message_t msg; - s.recv (&msg); - assert (msg.size () == message_size); - s.send (msg); - } - - zmq_sleep (1); - - return 0; -} diff --git a/perf/cpp/local_thr.cpp b/perf/cpp/local_thr.cpp deleted file mode 100644 index acfc02d..0000000 --- a/perf/cpp/local_thr.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* - Copyright (c) 2007-2010 iMatix Corporation - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the Lesser GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - Lesser GNU General Public License for more details. - - You should have received a copy of the Lesser GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include -#include -#include - -int main (int argc, char *argv []) -{ - if (argc != 4) { - printf ("usage: local_thr " - "\n"); - return 1; - } - const char *bind_to = argv [1]; - size_t message_size = (size_t) atoi (argv [2]); - int message_count = atoi (argv [3]); - - zmq::context_t ctx (1, 1); - - zmq::socket_t s (ctx, ZMQ_SUB); - - s.setsockopt (ZMQ_SUBSCRIBE , "", 0); - - // Add your socket options here. - // For example ZMQ_RATE, ZMQ_RECOVERY_IVL and ZMQ_MCAST_LOOP for PGM. - - s.bind (bind_to); - - zmq::message_t msg; - s.recv (&msg); - assert (msg.size () == message_size); - - void *watch = zmq_stopwatch_start (); - - for (int i = 1; i != message_count; i++) { - s.recv (&msg); - assert (msg.size () == message_size); - } - - unsigned long elapsed = zmq_stopwatch_stop (watch); - - unsigned long throughput = (unsigned long) - ((double) message_count / (double) elapsed * 1000000); - double megabits = (double) (throughput * message_size * 8) / 1000000; - - printf ("message size: %d [B]\n", (int) message_size); - printf ("message count: %d\n", (int) message_count); - printf ("mean throughput: %d [msg/s]\n", (int) throughput); - printf ("mean throughput: %.3f [Mb/s]\n", (double) megabits); - - return 0; -} diff --git a/perf/cpp/remote_lat.cpp b/perf/cpp/remote_lat.cpp deleted file mode 100644 index 0d75c82..0000000 --- a/perf/cpp/remote_lat.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - Copyright (c) 2007-2010 iMatix Corporation - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the Lesser GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - Lesser GNU General Public License for more details. - - You should have received a copy of the Lesser GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include -#include -#include -#include - -int main (int argc, char *argv []) -{ - if (argc != 4) { - printf ("usage: remote_lat " - "\n"); - return 1; - } - const char *connect_to = argv [1]; - size_t message_size = (size_t) atoi (argv [2]); - int roundtrip_count = atoi (argv [3]); - - zmq::context_t ctx (1, 1); - - zmq::socket_t s (ctx, ZMQ_REQ); - s.connect (connect_to); - - zmq::message_t msg (message_size); - memset (msg.data (), 0, message_size); - - void *watch = zmq_stopwatch_start (); - - for (int i = 0; i != roundtrip_count; i++) { - s.send (msg); - s.recv (&msg); - assert (msg.size () == message_size); - } - - unsigned long elapsed = zmq_stopwatch_stop (watch); - - double latency = (double) elapsed / (roundtrip_count * 2); - - printf ("message size: %d [B]\n", (int) message_size); - printf ("roundtrip count: %d\n", (int) roundtrip_count); - printf ("mean latency: %.3f [us]\n", (double) latency); - - return 0; -} diff --git a/perf/cpp/remote_thr.cpp b/perf/cpp/remote_thr.cpp deleted file mode 100644 index 4985416..0000000 --- a/perf/cpp/remote_thr.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - Copyright (c) 2007-2010 iMatix Corporation - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the Lesser GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - Lesser GNU General Public License for more details. - - You should have received a copy of the Lesser GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include -#include -#include - -int main (int argc, char *argv []) -{ - if (argc != 4) { - printf ("usage: remote_thr " - "\n"); - return 1; - } - const char *connect_to = argv [1]; - size_t message_size = (size_t) atoi (argv [2]); - int message_count = atoi (argv [3]); - - zmq::context_t ctx (1, 1); - - zmq::socket_t s (ctx, ZMQ_PUB); - - // Add your socket options here. - // For example ZMQ_RATE, ZMQ_RECOVERY_IVL and ZMQ_MCAST_LOOP for PGM. - - s.connect (connect_to); - - for (int i = 0; i != message_count; i++) { - zmq::message_t msg (message_size); - s.send (msg); - } - - zmq_sleep (10); - - return 0; -} diff --git a/perf/local_lat.c b/perf/local_lat.c new file mode 100644 index 0000000..bd71f82 --- /dev/null +++ b/perf/local_lat.c @@ -0,0 +1,106 @@ +/* + Copyright (c) 2007-2010 iMatix Corporation + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the Lesser GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + Lesser GNU General Public License for more details. + + You should have received a copy of the Lesser GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include + +int main (int argc, char *argv []) +{ + const char *bind_to; + int roundtrip_count; + int message_size; + void *ctx; + void *s; + int rc; + int i; + zmq_msg_t msg; + + if (argc != 4) { + printf ("usage: local_lat " + "\n"); + return 1; + } + bind_to = argv [1]; + message_size = atoi (argv [2]); + roundtrip_count = atoi (argv [3]); + + ctx = zmq_init (1, 1, 0); + if (!ctx) { + printf ("error in zmq_init: %s\n", zmq_strerror (errno)); + return -1; + } + + s = zmq_socket (ctx, ZMQ_REP); + if (!s) { + printf ("error in zmq_socket: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_bind (s, bind_to); + if (rc != 0) { + printf ("error in zmq_bind: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_msg_init (&msg); + if (rc != 0) { + printf ("error in zmq_msg_init: %s\n", zmq_strerror (errno)); + return -1; + } + + for (i = 0; i != roundtrip_count; i++) { + rc = zmq_recv (s, &msg, 0); + if (rc != 0) { + printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); + return -1; + } + if (zmq_msg_size (&msg) != message_size) { + printf ("message of incorrect size received\n"); + return -1; + } + rc = zmq_send (s, &msg, 0); + if (rc != 0) { + printf ("error in zmq_send: %s\n", zmq_strerror (errno)); + return -1; + } + } + + rc = zmq_msg_close (&msg); + if (rc != 0) { + printf ("error in zmq_msg_close: %s\n", zmq_strerror (errno)); + return -1; + } + + zmq_sleep (1); + + rc = zmq_close (s); + if (rc != 0) { + printf ("error in zmq_close: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_term (ctx); + if (rc != 0) { + printf ("error in zmq_term: %s\n", zmq_strerror (errno)); + return -1; + } + + return 0; +} diff --git a/perf/local_thr.c b/perf/local_thr.c new file mode 100644 index 0000000..cfebd2d --- /dev/null +++ b/perf/local_thr.c @@ -0,0 +1,136 @@ +/* + Copyright (c) 2007-2010 iMatix Corporation + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the Lesser GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + Lesser GNU General Public License for more details. + + You should have received a copy of the Lesser GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include + +int main (int argc, char *argv []) +{ + const char *bind_to; + int message_count; + int message_size; + void *ctx; + void *s; + int rc; + int i; + zmq_msg_t msg; + void *watch; + unsigned long elapsed; + unsigned long throughput; + double megabits; + + if (argc != 4) { + printf ("usage: local_thr \n"); + return 1; + } + bind_to = argv [1]; + message_size = atoi (argv [2]); + message_count = atoi (argv [3]); + + ctx = zmq_init (1, 1, 0); + if (!ctx) { + printf ("error in zmq_send: %s\n", zmq_strerror (errno)); + return -1; + } + + s = zmq_socket (ctx, ZMQ_SUB); + if (!s) { + printf ("error in zmq_socket: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_setsockopt (s, ZMQ_SUBSCRIBE , "", 0); + if (rc != 0) { + printf ("error in zmq_setsockopt: %s\n", zmq_strerror (errno)); + return -1; + } + + // Add your socket options here. + // For example ZMQ_RATE, ZMQ_RECOVERY_IVL and ZMQ_MCAST_LOOP for PGM. + + rc = zmq_bind (s, bind_to); + if (rc != 0) { + printf ("error in zmq_bind: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_msg_init (&msg); + if (rc != 0) { + printf ("error in zmq_msg_init: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_recv (s, &msg, 0); + if (rc != 0) { + printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); + return -1; + } + if (zmq_msg_size (&msg) != message_size) { + printf ("message of incorrect size received\n"); + return -1; + } + + watch = zmq_stopwatch_start (); + + for (i = 0; i != message_count - 1; i++) { + rc = zmq_recv (s, &msg, 0); + if (rc != 0) { + printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); + return -1; + } + if (zmq_msg_size (&msg) != message_size) { + printf ("message of incorrect size received\n"); + return -1; + } + } + + elapsed = zmq_stopwatch_stop (watch); + if (elapsed == 0) + elapsed = 1; + + rc = zmq_msg_close (&msg); + if (rc != 0) { + printf ("error in zmq_msg_close: %s\n", zmq_strerror (errno)); + return -1; + } + + throughput = (unsigned long) + ((double) message_count / (double) elapsed * 1000000); + megabits = (double) (throughput * message_size * 8) / 1000000; + + printf ("message size: %d [B]\n", (int) message_size); + printf ("message count: %d\n", (int) message_count); + printf ("mean throughput: %d [msg/s]\n", (int) throughput); + printf ("mean throughput: %.3f [Mb/s]\n", (double) megabits); + + rc = zmq_close (s); + if (rc != 0) { + printf ("error in zmq_close: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_term (ctx); + if (rc != 0) { + printf ("error in zmq_term: %s\n", zmq_strerror (errno)); + return -1; + } + + return 0; +} diff --git a/perf/remote_lat.c b/perf/remote_lat.c new file mode 100644 index 0000000..901afd5 --- /dev/null +++ b/perf/remote_lat.c @@ -0,0 +1,119 @@ +/* + Copyright (c) 2007-2010 iMatix Corporation + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the Lesser GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + Lesser GNU General Public License for more details. + + You should have received a copy of the Lesser GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include + +int main (int argc, char *argv []) +{ + const char *connect_to; + int roundtrip_count; + int message_size; + void *ctx; + void *s; + int rc; + int i; + zmq_msg_t msg; + void *watch; + unsigned long elapsed; + double latency; + + if (argc != 4) { + printf ("usage: remote_lat " + "\n"); + return 1; + } + connect_to = argv [1]; + message_size = atoi (argv [2]); + roundtrip_count = atoi (argv [3]); + + ctx = zmq_init (1, 1, 0); + if (!ctx) { + printf ("error in zmq_init: %s\n", zmq_strerror (errno)); + return -1; + } + + s = zmq_socket (ctx, ZMQ_REQ); + if (!s) { + printf ("error in zmq_socket: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_connect (s, connect_to); + if (rc != 0) { + printf ("error in zmq_connect: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_msg_init_size (&msg, message_size); + if (rc != 0) { + printf ("error in zmq_msg_init_size: %s\n", zmq_strerror (errno)); + return -1; + } + memset (zmq_msg_data (&msg), 0, message_size); + + watch = zmq_stopwatch_start (); + + for (i = 0; i != roundtrip_count; i++) { + rc = zmq_send (s, &msg, 0); + if (rc != 0) { + printf ("error in zmq_send: %s\n", zmq_strerror (errno)); + return -1; + } + rc = zmq_recv (s, &msg, 0); + if (rc != 0) { + printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); + return -1; + } + if (zmq_msg_size (&msg) != message_size) { + printf ("message of incorrect size received\n"); + return -1; + } + } + + elapsed = zmq_stopwatch_stop (watch); + + rc = zmq_msg_close (&msg); + if (rc != 0) { + printf ("error in zmq_msg_close: %s\n", zmq_strerror (errno)); + return -1; + } + + latency = (double) elapsed / (roundtrip_count * 2); + + printf ("message size: %d [B]\n", (int) message_size); + printf ("roundtrip count: %d\n", (int) roundtrip_count); + printf ("average latency: %.3f [us]\n", (double) latency); + + rc = zmq_close (s); + if (rc != 0) { + printf ("error in zmq_close: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_term (ctx); + if (rc != 0) { + printf ("error in zmq_term: %s\n", zmq_strerror (errno)); + return -1; + } + + return 0; +} diff --git a/perf/remote_thr.c b/perf/remote_thr.c new file mode 100644 index 0000000..43956e6 --- /dev/null +++ b/perf/remote_thr.c @@ -0,0 +1,98 @@ +/* + Copyright (c) 2007-2010 iMatix Corporation + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the Lesser GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + Lesser GNU General Public License for more details. + + You should have received a copy of the Lesser GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include + +int main (int argc, char *argv []) +{ + const char *connect_to; + int message_count; + int message_size; + void *ctx; + void *s; + int rc; + int i; + zmq_msg_t msg; + + if (argc != 4) { + printf ("usage: remote_thr " + "\n"); + return 1; + } + connect_to = argv [1]; + message_size = atoi (argv [2]); + message_count = atoi (argv [3]); + + ctx = zmq_init (1, 1, 0); + if (!ctx) { + printf ("error in zmq_recv: %s\n", zmq_strerror (errno)); + return -1; + } + + s = zmq_socket (ctx, ZMQ_PUB); + if (!s) { + printf ("error in zmq_socket: %s\n", zmq_strerror (errno)); + return -1; + } + + // Add your socket options here. + // For example ZMQ_RATE, ZMQ_RECOVERY_IVL and ZMQ_MCAST_LOOP for PGM. + + rc = zmq_connect (s, connect_to); + if (rc != 0) { + printf ("error in zmq_connect: %s\n", zmq_strerror (errno)); + return -1; + } + + for (i = 0; i != message_count; i++) { + rc = zmq_msg_init_size (&msg, message_size); + if (rc != 0) { + printf ("error in zmq_msg_init_size: %s\n", zmq_strerror (errno)); + return -1; + } + rc = zmq_send (s, &msg, 0); + if (rc != 0) { + printf ("error in zmq_send: %s\n", zmq_strerror (errno)); + return -1; + } + rc = zmq_msg_close (&msg); + if (rc != 0) { + printf ("error in zmq_msg_close: %s\n", zmq_strerror (errno)); + return -1; + } + } + + zmq_sleep (10); + + rc = zmq_close (s); + if (rc != 0) { + printf ("error in zmq_close: %s\n", zmq_strerror (errno)); + return -1; + } + + rc = zmq_term (ctx); + if (rc != 0) { + printf ("error in zmq_term: %s\n", zmq_strerror (errno)); + return -1; + } + + return 0; +} -- cgit v1.2.3