From 878c370e5b608f3034e62ceb5bd80d1f623ac658e9222d32c8d4b41ec23e5797 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 20 Nov 2024 15:37:42 +0300 Subject: [PATCH] Do not construct constant objects every time function is called --- pyac/pyac.py | 12 ++++++------ spec/encoding/tai64.texi | 9 +++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/pyac/pyac.py b/pyac/pyac.py index d713d84..257a898 100755 --- a/pyac/pyac.py +++ b/pyac/pyac.py @@ -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") diff --git a/spec/encoding/tai64.texi b/spec/encoding/tai64.texi index 7566c98..5619c81 100644 --- a/spec/encoding/tai64.texi +++ b/spec/encoding/tai64.texi @@ -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 -- 2.50.0