SVN: ZODB/trunk/src/ZEO/zrpc/smac.py Inlining a common case gives another 1% improvement in load CPU. Not

Jim Fulton <[email protected]> Tue, 5 Apr 2011 18:09:02 -0400 (EDT)
Newsgroups gmane.comp.python.zope.zodb.cvs
Message-ID <20110405220902.3B0BA709F33__31511.9928367951$1302041350$gmane$org@cvs.zope.org>
Log message for revision 121290:
  Inlining a common case gives another 1% improvement in load CPU. Not
  much, but I'll take it. :)
  

Changed:
  U   ZODB/trunk/src/ZEO/zrpc/smac.py

-=-
Modified: ZODB/trunk/src/ZEO/zrpc/smac.py
===================================================================
--- ZODB/trunk/src/ZEO/zrpc/smac.py	2011-04-05 20:57:16 UTC (rev 121289)
+++ ZODB/trunk/src/ZEO/zrpc/smac.py	2011-04-05 22:09:01 UTC (rev 121290)
@@ -266,7 +266,15 @@
             while (size <= SEND_SIZE) and messages:
                 message = messages[0]
                 if message.__class__ is str:
-                    size += self.__message_output(messages.pop(0), output)
+                    if self.__hmac_send:
+                        size += self.__message_output(messages.pop(0), output)
+                    else:
+                        # inline common case
+                        lmessage = len(message)
+                        output.append(struct.pack(">I", lmessage))
+                        output.append(messages.pop())
+                        size += 4 + lmessage
+
                 elif message is _close_marker:
                     del messages[:]
                     del output[:]