From a69e23fb5266dd942d125239e7dcbe8a7c8ab956 Mon Sep 17 00:00:00 2001 From: cirakg Date: Wed, 21 Oct 2026 03:55:01 +0200 Subject: perf(import): keep parsed items packed and the pasted text once A parsed import item with its Entry took about 760 bytes as objects on the Forerunner 255S; packed into one Codec ByteArray it takes about 110, and the importer unpacks one item per store step (wiping the packed secret). Aegis group names are resolved when unpacking, so no step repacks all items. The JSON is parsed from the untrimmed text's bytes and the string is dropped; an incomplete part is saved from those bytes. The form hash is computed before the importer copies the text. The peak of a 100-entry import on the 255S falls from 56 % to 45 %. Co-Authored-By: Claude Opus 5.5 --- test/import/AegisTest.mc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'test/import/AegisTest.mc') diff --git a/test/import/AegisTest.mc b/test/import/AegisTest.mc index eaad039..1644e5d 100644 --- a/test/import/AegisTest.mc +++ b/test/import/AegisTest.mc @@ -30,7 +30,7 @@ function aegisReadsDatabaseVersion3(logger as Test.Logger) as Boolean { logger.error("error " + reader.error + ", items " + reader.items.size()); return false; } - var it = reader.items; + var it = AegisFixtures.items(reader); var github = it[0].entry; var bank = it[1].entry; var vpn = it[2].entry; @@ -69,7 +69,7 @@ function aegisReadsOlderDatabaseVersions(logger as Test.Logger) as Boolean { for (var v = 1; v <= 2; v++) { var reader = AegisFixtures.read(AegisFixtures.export(v, [AegisFixtures.entry("totp", "Mail", "ann", AegisFixtures.SECRET_1, "SHA1", 6, 30, "\"group\": \"Private\", ")], "")); - var e = reader.items.size() == 1 ? reader.items[0].entry : null; + var e = reader.items.size() == 1 ? reader.item(0).entry : null; if (e == null || !e.group.equals("Private")) { logger.error("database version " + v + " failed: " + reader.error); return false; @@ -98,7 +98,7 @@ function aegisReportsBadEntriesAndDocuments(logger as Test.Logger) as Boolean { "{\"type\": \"totp\", \"name\": \"z\", \"info\": {\"secret\": \"" + AegisFixtures.SECRET_1 + "\", \"digits\": 6.5}}" ]; var reader = AegisFixtures.read(AegisFixtures.export(3, entries, "")); - var it = reader.items; + var it = AegisFixtures.items(reader); if (reader.error != null || it.size() != 4) { logger.error("error " + reader.error); return false; -- cgit v1.2.3