diff mbox series

bitbake: cooker: Fix performance issue in EventWriter() class

Message ID 20250125115640.1302-1-egyszeregy@freemail.hu
State New
Headers show
Series bitbake: cooker: Fix performance issue in EventWriter() class | expand

Commit Message

Livius Jan. 25, 2025, 11:56 a.m. UTC
s=20181004; d=freemail.hu;

	h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding;

	l=1953; bh=okk/tT651LeBSVyAf2AOO0WIVGpcyHb/Ga2ccGkHU9E=;

	b=S9N2GI11WOVw6Ge94jecTFV3BpsBGQ7dU9J+f2Y3CH+6mdFJWGi6NuINxYrhITr9

	cE8aBvQJDvG/be3N4DUVYgDrTqCKVXWbxVdVg6T8d8GZ9/78Y08Fe1vRwrMdqVuxsls

	nkMCbJVyiKaBQ1LDNejdFlf2QCTnyOhDfn0OdMczjim3vKvlAr9+1KsjFkcvYe3V+zx

	P8acFvSFYrUa3JM4KYLojfteH/W4jQe0w7F6aT2OedmhJznAcSDwd9XgUV+8DnW12pD

	FTYx9ZYLbq8GccVmjPvKpSfkpz8wV7DMTr7jAJKk12BWf4MBIxFROAavavVyklVurHG

	VBvokIZ0+A==
Content-Transfer-Encoding: quoted-printable

From: Benjamin Sz=C5=91ke <egyszeregy@freemail.hu>

Reopen eventfile is a very time consuming call in every send() calling. I=
t was
fixed by -> open its file descriptor in __init__() and close it in __del_=
_().
Remove unused self.event_queue =3D [].

Signed-off-by: Benjamin Sz=C5=91ke <egyszeregy@freemail.hu>
---
 lib/bb/cooker.py | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

+        except Exception as err:
+            import traceback
+            print(err, traceback.format_exc())
=20
=20
 #=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D#
--=20
2.47.1.windows.2
diff mbox series

Patch

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 5b885cddd..485c3d3ad 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -100,24 +100,26 @@  class CookerFeatures(object):
=20
=20
 class EventWriter:
+    # 2 MBytes buffer for eventfile
+    _BUFFER_SIZE =3D 2 * 1024 * 1024
+
     def __init__(self, cooker, eventfile):
         self.cooker =3D cooker
-        self.eventfile =3D eventfile
-        self.event_queue =3D []
+        self._f =3D open(eventfile, "a", buffering=3Dself._BUFFER_SIZE)
+
+    def __del__(self):
+        self._f.close()
=20
     def write_variables(self):
-        with open(self.eventfile, "a") as f:
-            f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.g=
etAllKeysWithFlags(["doc", "func"])}))
+        self._f.write("%s\n" % json.dumps({ "allvariables" : self.cooker=
.getAllKeysWithFlags(["doc", "func"])}))
=20
     def send(self, event):
-        with open(self.eventfile, "a") as f:
-            try:
-                str_event =3D codecs.encode(pickle.dumps(event), 'base64=
').decode('utf-8')
-                f.write("%s\n" % json.dumps({"class": event.__module__ +=
 "." + event.__class__.__name__,
-                                             "vars": str_event}))
-            except Exception as err:
-                import traceback
-                print(err, traceback.format_exc())
+        try:
+            str_event =3D codecs.encode(pickle.dumps(event), 'base64').d=
ecode('utf-8')
+            self._f.write("%s\n" % json.dumps({"class": event.__module__=
 + "." + event.__class__.__name__, "vars": str_event}))