diff options
-rw-r--r-- | Makefile.am | 4 | ||||
-rw-r--r-- | configure.in | 3 | ||||
-rw-r--r-- | include/zmq.h | 24 | ||||
-rw-r--r-- | perf/Makefile.am | 2 | ||||
-rw-r--r-- | perf/c/Makefile.am | 20 | ||||
-rw-r--r-- | perf/c/local_lat.c | 2 | ||||
-rw-r--r-- | perf/c/local_thr.c | 19 | ||||
-rw-r--r-- | perf/c/remote_lat.c | 7 | ||||
-rw-r--r-- | perf/c/remote_thr.c | 4 | ||||
-rw-r--r-- | perf/cpp/Makefile.am | 20 | ||||
-rw-r--r-- | perf/cpp/local_lat.cpp | 3 | ||||
-rw-r--r-- | perf/cpp/local_thr.cpp | 10 | ||||
-rw-r--r-- | perf/cpp/remote_lat.cpp | 3 | ||||
-rw-r--r-- | perf/cpp/remote_thr.cpp | 3 |
14 files changed, 86 insertions, 38 deletions
diff --git a/Makefile.am b/Makefile.am index d0bee3b..15424ff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -8,5 +8,5 @@ if BUILD_RUBY DIR_R = ruby endif -SUBDIRS = src $(DIR_P) $(DIR_R) -DIST_SUBDIRS = src $(DIR_P) $(DIR_R) +SUBDIRS = src perf $(DIR_P) $(DIR_R) +DIST_SUBDIRS = src perf $(DIR_P) $(DIR_R) diff --git a/configure.in b/configure.in index 20beb1c..d4e60c5 100644 --- a/configure.in +++ b/configure.in @@ -275,7 +275,8 @@ AC_FUNC_MALLOC AC_TYPE_SIGNAL AC_CHECK_FUNCS(perror gettimeofday memset socket getifaddrs freeifaddrs) -AC_OUTPUT(Makefile src/Makefile python/Makefile python/setup.py ruby/Makefile) +AC_OUTPUT(Makefile src/Makefile python/Makefile python/setup.py ruby/Makefile \ + perf/Makefile perf/c/Makefile perf/cpp/Makefile) AC_MSG_RESULT([]) AC_MSG_RESULT([ ******************************************************** ]) diff --git a/include/zmq.h b/include/zmq.h index fad51ca..2b6f996 100644 --- a/include/zmq.h +++ b/include/zmq.h @@ -103,41 +103,41 @@ struct zmq_msg_t }; // Initialise an empty message (zero bytes long). -ZMQ_EXPORT int zmq_msg_init (zmq_msg_t *msg); +ZMQ_EXPORT int zmq_msg_init (struct zmq_msg_t *msg); // Initialise a message 'size' bytes long. // // Errors: ENOMEM - the size is too large to allocate. -ZMQ_EXPORT int zmq_msg_init_size (zmq_msg_t *msg, size_t size); +ZMQ_EXPORT int zmq_msg_init_size (struct zmq_msg_t *msg, size_t size); // Initialise a message from an existing buffer. Message isn't copied, // instead 0SOCKETS infrastructure take ownership of the buffer and call // deallocation functio (ffn) once it's not needed anymore. -ZMQ_EXPORT int zmq_msg_init_data (zmq_msg_t *msg, void *data, size_t size, - zmq_free_fn *ffn); +ZMQ_EXPORT int zmq_msg_init_data (struct zmq_msg_t *msg, void *data, + size_t size, zmq_free_fn *ffn); // Deallocate the message. -ZMQ_EXPORT int zmq_msg_close (zmq_msg_t *msg); +ZMQ_EXPORT int zmq_msg_close (struct zmq_msg_t *msg); // Move the content of the message from 'src' to 'dest'. The content isn't // copied, just moved. 'src' is an empty message after the call. Original // content of 'dest' message is deallocated. -ZMQ_EXPORT int zmq_msg_move (zmq_msg_t *dest, zmq_msg_t *src); +ZMQ_EXPORT int zmq_msg_move (struct zmq_msg_t *dest, struct zmq_msg_t *src); // Copy the 'src' message to 'dest'. The content isn't copied, instead // reference count is increased. Don't modify the message data after the // call as they are shared between two messages. Original content of 'dest' // message is deallocated. -ZMQ_EXPORT int zmq_msg_copy (zmq_msg_t *dest, zmq_msg_t *src); +ZMQ_EXPORT int zmq_msg_copy (struct zmq_msg_t *dest, struct zmq_msg_t *src); // Returns pointer to message data. -ZMQ_EXPORT void *zmq_msg_data (zmq_msg_t *msg); +ZMQ_EXPORT void *zmq_msg_data (struct zmq_msg_t *msg); // Return size of message data (in bytes). -ZMQ_EXPORT size_t zmq_msg_size (zmq_msg_t *msg); +ZMQ_EXPORT size_t zmq_msg_size (struct zmq_msg_t *msg); // Returns type of the message. -ZMQ_EXPORT int zmq_msg_type (zmq_msg_t *msg); +ZMQ_EXPORT int zmq_msg_type (struct zmq_msg_t *msg); // Initialise 0SOCKETS context. 'app_threads' specifies maximal number // of application threads that can have open sockets at the same time. @@ -182,7 +182,7 @@ ZMQ_EXPORT int zmq_connect (void *s, const char *addr); // Errors: EAGAIN - message cannot be sent at the moment (applies only to // non-blocking send). // ENOTSUP - function isn't supported by particular socket type. -ZMQ_EXPORT int zmq_send (void *s, zmq_msg_t *msg, int flags); +ZMQ_EXPORT int zmq_send (void *s, struct zmq_msg_t *msg, int flags); // Flush the messages that were send using ZMQ_NOFLUSH flag down the stream. // @@ -196,7 +196,7 @@ ZMQ_EXPORT int zmq_flush (void *s); // Errors: EAGAIN - message cannot be received at the moment (applies only to // non-blocking receive). // ENOTSUP - function isn't supported by particular socket type. -ZMQ_EXPORT int zmq_recv (void *s, zmq_msg_t *msg, int flags); +ZMQ_EXPORT int zmq_recv (void *s, struct zmq_msg_t *msg, int flags); #ifdef __cplusplus } diff --git a/perf/Makefile.am b/perf/Makefile.am new file mode 100644 index 0000000..7e87d68 --- /dev/null +++ b/perf/Makefile.am @@ -0,0 +1,2 @@ +SUBDIRS = c cpp +DIST_SUBDIRS = c cpp diff --git a/perf/c/Makefile.am b/perf/c/Makefile.am new file mode 100644 index 0000000..6762e66 --- /dev/null +++ b/perf/c/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = -I$(top_builddir)/include + +bin_PROGRAMS = local_lat remote_lat local_thr remote_thr + +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 + diff --git a/perf/c/local_lat.c b/perf/c/local_lat.c index 707d498..c65d4b3 100644 --- a/perf/c/local_lat.c +++ b/perf/c/local_lat.c @@ -32,7 +32,7 @@ int main (int argc, char *argv []) void *s; int rc; int i; - zmq_msg_t msg; + struct zmq_msg_t msg; if (argc != 4) { printf ("usage: local_lat <bind-to> <roundtrip-count> " diff --git a/perf/c/local_thr.c b/perf/c/local_thr.c index c961410..87c3220 100644 --- a/perf/c/local_thr.c +++ b/perf/c/local_thr.c @@ -17,10 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include <zmq.hpp> +#include <zmq.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> +#include <stdint.h> #include <sys/time.h> int main (int argc, char *argv []) @@ -32,9 +33,11 @@ int main (int argc, char *argv []) void *s; int rc; int i; - zmq_msg_t msg; - long long elapsed; - long long throughput; + struct zmq_msg_t msg; + struct timeval start; + struct timeval end; + uint64_t elapsed; + uint64_t throughput; if (argc != 4) { printf ("usage: local_thr <bind-to> <message-count> " @@ -61,7 +64,6 @@ int main (int argc, char *argv []) assert (rc == 0); assert (zmq_msg_size (&msg) == message_size); - timeval start; rc = gettimeofday (&start, NULL); assert (rc == 0); @@ -71,17 +73,16 @@ int main (int argc, char *argv []) assert (zmq_msg_size (&msg) == message_size); } - timeval end; rc = gettimeofday (&end, NULL); assert (rc == 0); end.tv_sec -= start.tv_sec; start.tv_sec = 0; - elapsed = (end.tv_sec * 1000000 + end.tv_usec) - - (start.tv_sec * 1000000 + start.tv_usec); + elapsed = ((uint64_t) end.tv_sec * 1000000 + end.tv_usec) - + ((uint64_t) start.tv_sec * 1000000 + start.tv_usec); - throughput = (long long) message_count * 1000000 / elapsed; + throughput = (uint64_t) message_count * 1000000 / elapsed; printf ("message size: %d [B]\n", (int) message_size); printf ("message count: %d\n", (int) message_count); diff --git a/perf/c/remote_lat.c b/perf/c/remote_lat.c index 025c57d..e99da2e 100644 --- a/perf/c/remote_lat.c +++ b/perf/c/remote_lat.c @@ -32,7 +32,9 @@ int main (int argc, char *argv []) void *s; int rc; int i; - zmq_msg_t msg; + struct zmq_msg_t msg; + struct timeval start; + struct timeval end; double elapsed; double latency; @@ -54,7 +56,6 @@ int main (int argc, char *argv []) rc = zmq_connect (s, connect_to); assert (rc == 0); - timeval start; rc = gettimeofday (&start, NULL); assert (rc == 0); @@ -70,8 +71,6 @@ int main (int argc, char *argv []) assert (rc == 0); } - - timeval end; rc = gettimeofday (&end, NULL); assert (rc == 0); diff --git a/perf/c/remote_thr.c b/perf/c/remote_thr.c index a30c6f2..d542b1e 100644 --- a/perf/c/remote_thr.c +++ b/perf/c/remote_thr.c @@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include <zmq.hpp> +#include <zmq.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> @@ -32,7 +32,7 @@ int main (int argc, char *argv []) void *s; int rc; int i; - zmq_msg_t msg; + struct zmq_msg_t msg; if (argc != 4) { printf ("usage: remote_thr <connect-to> <message-count> " diff --git a/perf/cpp/Makefile.am b/perf/cpp/Makefile.am new file mode 100644 index 0000000..7870943 --- /dev/null +++ b/perf/cpp/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = -I$(top_builddir)/include + +bin_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 index 3a9afcb..9260f0a 100644 --- a/perf/cpp/local_lat.cpp +++ b/perf/cpp/local_lat.cpp @@ -22,6 +22,7 @@ #include <stdlib.h> #include <unistd.h> #include <assert.h> +#include <stddef.h> int main (int argc, char *argv []) { @@ -32,7 +33,7 @@ int main (int argc, char *argv []) } const char *bind_to = argv [1]; int roundtrip_count = atoi (argv [2]); - int message_size = atoi (argv [3]); + size_t message_size = (size_t) atoi (argv [3]); zmq::context_t ctx (1, 1); diff --git a/perf/cpp/local_thr.cpp b/perf/cpp/local_thr.cpp index 576ac42..fdcbc8d 100644 --- a/perf/cpp/local_thr.cpp +++ b/perf/cpp/local_thr.cpp @@ -21,6 +21,8 @@ #include <stdio.h> #include <stdlib.h> #include <assert.h> +#include <stddef.h> +#include <stdint.h> #include <sys/time.h> int main (int argc, char *argv []) @@ -32,7 +34,7 @@ int main (int argc, char *argv []) } const char *bind_to = argv [1]; int message_count = atoi (argv [2]); - int message_size = atoi (argv [3]); + size_t message_size = (size_t) atoi (argv [3]); zmq::context_t ctx (1, 1); @@ -59,10 +61,10 @@ int main (int argc, char *argv []) end.tv_sec -= start.tv_sec; start.tv_sec = 0; - long long elapsed = (end.tv_sec * 1000000 + end.tv_usec) - - (start.tv_sec * 1000000 + start.tv_usec); + uint64_t elapsed = ((uint64_t) end.tv_sec * 1000000 + end.tv_usec) - + ((uint64_t) start.tv_sec * 1000000 + start.tv_usec); - long long throughput = (long long) message_count * 1000000 / elapsed; + uint64_t throughput = (uint64_t) message_count * 1000000 / elapsed; printf ("message size: %d [B]\n", (int) message_size); printf ("message count: %d\n", (int) message_count); diff --git a/perf/cpp/remote_lat.cpp b/perf/cpp/remote_lat.cpp index 9ac758b..3472fd8 100644 --- a/perf/cpp/remote_lat.cpp +++ b/perf/cpp/remote_lat.cpp @@ -21,6 +21,7 @@ #include <stdio.h> #include <stdlib.h> #include <assert.h> +#include <stddef.h> #include <sys/time.h> int main (int argc, char *argv []) @@ -32,7 +33,7 @@ int main (int argc, char *argv []) } const char *connect_to = argv [1]; int roundtrip_count = atoi (argv [2]); - int message_size = atoi (argv [3]); + size_t message_size = (size_t) atoi (argv [3]); zmq::context_t ctx (1, 1); diff --git a/perf/cpp/remote_thr.cpp b/perf/cpp/remote_thr.cpp index 54536fd..06946f5 100644 --- a/perf/cpp/remote_thr.cpp +++ b/perf/cpp/remote_thr.cpp @@ -22,6 +22,7 @@ #include <stdlib.h> #include <unistd.h> #include <assert.h> +#include <stddef.h> int main (int argc, char *argv []) { @@ -32,7 +33,7 @@ int main (int argc, char *argv []) } const char *connect_to = argv [1]; int message_count = atoi (argv [2]); - int message_size = atoi (argv [3]); + size_t message_size = (size_t) atoi (argv [3]); zmq::context_t ctx (1, 1); |