[Zodb-checkins] CVS: StandaloneZODB/ZODB - utils.py:1.7

Jeremy Hylton jeremy@zope.com
Fri, 5 Oct 2001 17:14:06 -0400


Update of /cvs-repository/StandaloneZODB/ZODB
In directory cvs.zope.org:/tmp/cvs-serv9754

Modified Files:
	utils.py 
Log Message:
Take two: Speed up p64(), u64(), and U64().

Also, reformat code using guidlines from the Friends of Whitespace.

Fix newTimeStamp() so that it always returns a timestamp.
XXX still not sure that it works.





=== StandaloneZODB/ZODB/utils.py 1.6 => 1.7 ===
 def p64(v, pack=struct.pack):
     """Pack an integer or long into a 8-byte string"""
-    if v < t32: h=0
+    if v < t32:
+        h = 0
     else:
-        h=v/t32
-        v=v%t32
+        h, v = divmod(v, t32)
     return pack(">II", h, v)
 
 def u64(v, unpack=struct.unpack):
     """Unpack an 8-byte string into a 64-bit (or long) integer"""
     h, v = unpack(">ii", v)
-    if v < 0: v=t32+v
+    if v < 0:
+        v = t32 + v
     if h:
-        if h < 0: h=t32+h
-        v=h*t32+v
+        if h < 0:
+            h= t32 + h
+        v = (long(h) << 32) + v
     return v
 
 def U64(v, unpack=struct.unpack):
     """Same as u64 but always returns a long."""
     h, v = unpack(">II", v)
     if h:
-        v=h*t32+v
+        v = (long(h) << 32) + v
     return v
 
 def cp(f1, f2, l):
-    read=f1.read
-    write=f2.write
-    n=8192
+    read = f1.read
+    write = f2.write
+    n =8192
     
     while l > 0:
-        if n > l: n=l
-        d=read(n)
-        if not d: break
+        if n > l:
+            n = l
+        d = read(n)
+        if not d:
+            break
         write(d)
         l = l - len(d)
 
@@ -127,8 +131,8 @@
 def newTimeStamp(old=None,
                  TimeStamp=TimeStamp.TimeStamp,
                  time=time.time, gmtime=time.gmtime):
-    t=time()
-    ts=TimeStamp(gmtime(t)[:5]+(t%60,))
-    if old is not None: return ts.laterThan(than)
-    
-    
+    t = time()
+    ts = TimeStamp(gmtime(t)[:5]+(t%60,))
+    if old is not None:
+        return ts.laterThan(old)
+    return ts