Hi

This patchset takes the low-hanging fruit. It inlines all small functions, that 
are called too often (more than twice per request) and so have relatively high 
function call overhead.

- Lauri
>From 2e8a27946c2af4660f2d99e1abce3d963ce280fb Mon Sep 17 00:00:00 2001
From: Lauri Kasanen <[email protected]>
Date: Wed, 8 Aug 2012 17:03:44 +0300
Subject: [PATCH 1/5] iov: Make iov_add_entry inline


Signed-off-by: Lauri Kasanen <[email protected]>
---
 src/include/mk_iov.h |   44 +++++++++++++++++++++++++++++++++++++++++---
 src/mk_iov.c         |   39 ---------------------------------------
 2 files changed, 41 insertions(+), 42 deletions(-)

diff --git a/src/include/mk_iov.h b/src/include/mk_iov.h
index 1139723..1c4cdab 100644
--- a/src/include/mk_iov.h
+++ b/src/include/mk_iov.h
@@ -23,6 +23,7 @@
 #define MK_IOV_H
 
 #include <sys/uio.h>
+#include "mk_utils.h"
 
 #define MK_IOV_FREE_BUF 1
 #define MK_IOV_NOT_FREE_BUF 0
@@ -60,9 +61,6 @@ struct mk_iov
 struct mk_iov *mk_iov_create(int n, int offset);
 int mk_iov_realloc(struct mk_iov *mk_io, int new_size);
 
-extern inline int mk_iov_add_entry(struct mk_iov *mk_io, char *buf,
-                                   int len, mk_pointer sep, int free);
-
 int mk_iov_add_separator(struct mk_iov *mk_io, mk_pointer sep);
 
 ssize_t mk_iov_send(int fd, struct mk_iov *mk_io);
@@ -79,4 +77,44 @@ void mk_iov_separators_init(void);
 void mk_iov_free_marked(struct mk_iov *mk_io);
 void mk_iov_print(struct mk_iov *mk_io);
 
+static inline void _mk_iov_set_free(struct mk_iov *mk_io, char *buf)
+{
+    mk_io->buf_to_free[mk_io->buf_idx] = (char *) buf;
+    mk_io->buf_idx++;
+}
+
+static inline int mk_iov_add_entry(struct mk_iov *mk_io, char *buf, int len,
+                                   mk_pointer sep, int free)
+{
+    mk_io->io[mk_io->iov_idx].iov_base = (unsigned char *) buf;
+    mk_io->io[mk_io->iov_idx].iov_len = len;
+    mk_io->iov_idx++;
+    mk_io->total_len += len;
+
+#ifdef DEBUG_IOV
+    if (mk_io->iov_idx > mk_io->size) {
+        printf("\nDEBUG IOV :: ERROR, Broken array size in:");
+        printf("\n          '''%s'''", buf);
+        fflush(stdout);
+    }
+#endif
+
+    /* Add separator */
+    if (sep.len > 0) {
+        mk_io->io[mk_io->iov_idx].iov_base = sep.data;
+        mk_io->io[mk_io->iov_idx].iov_len = sep.len;
+        mk_io->iov_idx++;
+        mk_io->total_len += sep.len;
+    }
+
+    if (free == MK_IOV_FREE_BUF) {
+        _mk_iov_set_free(mk_io, buf);
+    }
+
+    mk_bug(mk_io->iov_idx > mk_io->size);
+
+    return mk_io->iov_idx;
+}
+
+
 #endif
diff --git a/src/mk_iov.c b/src/mk_iov.c
index ccec079..8b8f5cc 100644
--- a/src/mk_iov.c
+++ b/src/mk_iov.c
@@ -42,45 +42,6 @@ const mk_pointer mk_iov_slash = 
mk_pointer_init(MK_IOV_SLASH);
 const mk_pointer mk_iov_none = mk_pointer_init(MK_IOV_NONE);
 const mk_pointer mk_iov_equal = mk_pointer_init(MK_IOV_EQUAL);
 
-static void _mk_iov_set_free(struct mk_iov *mk_io, char *buf)
-{
-    mk_io->buf_to_free[mk_io->buf_idx] = (char *) buf;
-    mk_io->buf_idx++;
-}
-
-int mk_iov_add_entry(struct mk_iov *mk_io, char *buf, int len,
-                            mk_pointer sep, int free)
-{
-    mk_io->io[mk_io->iov_idx].iov_base = (unsigned char *) buf;
-    mk_io->io[mk_io->iov_idx].iov_len = len;
-    mk_io->iov_idx++;
-    mk_io->total_len += len;
-
-#ifdef DEBUG_IOV
-    if (mk_io->iov_idx > mk_io->size) {
-        printf("\nDEBUG IOV :: ERROR, Broken array size in:");
-        printf("\n          '''%s'''", buf);
-        fflush(stdout);
-    }
-#endif
-
-    /* Add separator */
-    if (sep.len > 0) {
-        mk_io->io[mk_io->iov_idx].iov_base = sep.data;
-        mk_io->io[mk_io->iov_idx].iov_len = sep.len;
-        mk_io->iov_idx++;
-        mk_io->total_len += sep.len;
-    }
-
-    if (free == MK_IOV_FREE_BUF) {
-        _mk_iov_set_free(mk_io, buf);
-    }
-
-    mk_bug(mk_io->iov_idx > mk_io->size);
-
-    return mk_io->iov_idx;
-}
-
 struct mk_iov *mk_iov_create(int n, int offset)
 {
     int i;
-- 
1.7.2.1

_______________________________________________
Monkey mailing list
[email protected]
http://lists.monkey-project.com/listinfo/monkey

Reply via email to