]> Cypherpunks repositories - keks.git/commitdiff
Do not construct constant objects every time function is called
authorSergey Matveev <stargrave@stargrave.org>
Wed, 20 Nov 2024 12:37:42 +0000 (15:37 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 20 Nov 2024 12:55:10 +0000 (15:55 +0300)
pyac/pyac.py
spec/encoding/tai64.texi

index d713d841d8799ba26e56aea991e361907be2905dedcd3a0e0733eaff34411d2a..257a89880a6c264336cfe56635993289ac4a8cd4710d562d2f2758883aee6ce1 100755 (executable)
@@ -229,6 +229,8 @@ def _int(v):
 
 
 _EOC = object()
+_floats = {TagFloat16: 2, TagFloat32: 4, TagFloat64: 8, TagFloat128: 16, TagFloat256: 32}
+_tais = {TagTAI64: 8, TagTAI64N: 12, TagTAI64NA: 16}
 
 
 def loads(v, sets=False):
@@ -246,15 +248,13 @@ def loads(v, sets=False):
         if len(v) < 1+16:
             raise NotEnoughData(1+16)
         return UUID(bytes=v[1:1+16]), v[1+16:]
-    floats = {TagFloat16: 2, TagFloat32: 4, TagFloat64: 8, TagFloat128: 16, TagFloat256: 32}
-    if v[0] in floats:
-        l = floats[v[0]]
+    if v[0] in _floats:
+        l = _floats[v[0]]
         if len(v) < 1+l:
             raise NotEnoughData(1+l)
         return Raw(v[0], v[1:1+l]), v[1+l:]
-    tais = {TagTAI64: 8, TagTAI64N: 12, TagTAI64NA: 16}
-    if v[0] in tais:
-        l = tais[v[0]]
+    if v[0] in _tais:
+        l = _tais[v[0]]
         if len(v) < 1+l:
             raise NotEnoughData(1+l)
         secs = int.from_bytes(v[1:1+8], "big")
index 7566c98044b89a263236c8178de934fef717b389806868d4a1dbc0f03f805238..5619c81acb5d9a427ea053a6141ac6290f92bda692e52e8ef10eb56d835003c9 100644 (file)
@@ -23,12 +23,13 @@ Example representations:
 
 @multitable @columnfractions .5 .5
 
-@item 1970-01-01 TAI @tab @code{18 4000000000000000}
-@item 1970-01-01 UTC @tab @code{18 400000000000000A}
+@item 1970-01-01 00:00:00 TAI @tab @code{18 4000000000000000}
+@item 1970-01-01 00:00:00 UTC @tab @code{18 400000000000000A}
 @item 1969-12-31 23:59:59 TAI @tab @code{18 3FFFFFFFFFFFFFFF}
+@item 1992-06-02 08:07:09 TAI @tab @code{18 400000002A2B2C2D}
+@item 1992-06-02 08:06:43 UTC @tab @code{18 400000002A2B2C2D}
 @item 1997-10-03 18:15:19 TAI @tab @code{18 4000000034353637}
 @item 1997-10-03 18:14:48 UTC @tab @code{18 4000000034353637}
-@item 2024-10-01 12:39:07 UTC @tab @code{18 4000000066FC17C0}
-@item 2024-10-01 12:39:07 UTC 123456 μs @tab @code{19 4000000066FC17C0075BCA00}
+@item 2024-11-20 12:19:08 921772500ns UTC @tab @code{19 40000000673DD3E136F121D4}
 
 @end multitable