Uh oh!
There was an error while loading. Please reload this page.
simplify dist by merging sql-asm-memory-growth.js into sql-asm.js - #431
simplify dist by merging sql-asm-memory-growth.js into sql-asm.js#431kaizhu256 wants to merge 3 commits into
Conversation
Co-authored-by: Yan Li <yanli0303@outlook.com> Co-authored-by: kai zhu <kaizhu256@gmail.com>
lovasoa
commented
Oct 21, 2020
What is the performance impact ? |
good question. the following benchmark indicates asm2 is 1-6% slower running queries on a 60mb database: you can emulate above result in following steps:
copy all tables in 60mb database-- create database-schemaCREATETABLE `employeelist2` (
`eid`integerNOT NULLPRIMARY KEY AUTOINCREMENT
, `firstName`varchar(31) NOT NULL DEFAULT ''
, `lastName`varchar(31) NOT NULL DEFAULT ''
, `Email_id`varchar(31) NOT NULL DEFAULT ''
, `Email2`varchar(31) DEFAULT NULL
, `Email3`varchar(31) DEFAULT NULL
, `EMail4`varchar(31) DEFAULT NULL
, `folder`varchar(31) NOT NULL DEFAULT ''
, `status`varchar(50) DEFAULT NULL
, UNIQUE (`Email_id`)
);
CREATETABLE `message2` (
`mid`integerNOT NULL DEFAULT '0'
, `sender`varchar(127) NOT NULL DEFAULT ''
, `date` datetime DEFAULT NULL
, `message_id`varchar(127) DEFAULT NULL-- , `subject` text-- , `body` text
, `folder`varchar(127) NOT NULL DEFAULT ''
, PRIMARY KEY (`mid`)
);
CREATETABLE `recipientinfo2` (
`rid`integerNOT NULL DEFAULT '0'
, `mid`integerNOT NULL DEFAULT '0'
, `rtype`text DEFAULT NULL
, `rvalue`varchar(127) DEFAULT NULL
, `dater` datetime DEFAULT NULL
, PRIMARY KEY (`rid`)
, FOREIGN KEY (mid) REFERENCES message2(mid)
);
CREATETABLE `referenceinfo2` (
`rfid`integerNOT NULL DEFAULT '0'
, `mid`integerNOT NULL DEFAULT '0'
, `reference`text
, PRIMARY KEY (`rfid`)
, FOREIGN KEY (mid) REFERENCES message2(mid)
);
CREATEINDEX "idx_message_sender2" ON"message2" (`sender`);
CREATE VIRTUAL TABLE messages_ft2 USING fts4(subject, body);
-- insert tables-- employeelist2-- message2-- recipientinfo2-- referenceinfo2-- message_ftSELECT'employeelist', COUNT(*) FROM employeelist;
SELECT'message', COUNT(*) FROM message;
SELECT'recipientinfo', COUNT(*) FROM recipientinfo;
SELECT'referenceinfo', COUNT(*) FROM referenceinfo;
SELECT'messages_ft', COUNT(*) FROM messages_ft;
INSERT INTO message2 SELECT*FROM
(
SELECTmessage.mid,
message.sender,
message.date,
message.message_id,
-- message.subject,-- message.body,message.folderFROM
(
SELECT DISTINCTmessage.midFROM message
INNER JOIN recipientinfo ONrecipientinfo.mid=message.midINNER JOIN referenceinfo ONreferenceinfo.mid=message.mid
) AS tmp1
INNER JOIN message ONmessage.mid=tmp1.midORDER BYtmp1.midLIMIT10000
) AS tmp1;
INSERT INTO employeelist2 SELECT*FROM employeelist;
INSERT INTO recipientinfo2 SELECTtmp1.rid,
tmp1.mid,
tmp1.rtype,
tmp1.rvalue,
tmp1.daterFROM message2
LEFT JOIN recipientinfo AS tmp1 ONtmp1.mid=message2.midORDER BYtmp1.rid;
INSERT INTO referenceinfo2 SELECTtmp1.rfid,
tmp1.mid,
tmp1.referenceFROM message2
LEFT JOIN referenceinfo AS tmp1 ONtmp1.mid=message2.midORDER BYtmp1.rfid;
INSERT INTO messages_ft2 (
rowid, subject, body
)
SELECTtmp1.rowid, tmp1.subject, tmp1.bodyFROM message2
INNER JOIN messages_ft AS tmp1 ONtmp1.rowid=message2.midORDER BYtmp1.rowid;
VACUUM;
SELECT'employeelist2', COUNT(*) FROM employeelist2;
SELECT'message2', COUNT(*) FROM message2;
SELECT'recipientinfo2', COUNT(*) FROM recipientinfo2;
SELECT'referenceinfo2', COUNT(*) FROM referenceinfo2;
SELECT'messages_ft2', COUNT(*) FROM messages_ft2;
--*/fts-query with joinsSELECT*FROM messages_ft2
INNER JOIN recipientinfo2 ONrecipientinfo2.mid=messages_ft2.rowidINNER JOIN referenceinfo2 ONreferenceinfo2.mid=messages_ft2.rowidWHERE body MATCH 'energy NEAR oil'; |
kaizhu256
commented
Oct 22, 2020
also the difference in size is < 1%: |
lovasoa
commented
Oct 26, 2020
If we want to be able to merge this without breaking backwards compatibility, we can first add On the next major version bump, we can delete the memory growth version. |
…includes memory-growth and ie11 support.
kaizhu256
commented
Oct 26, 2020
…ow essentially a copy of sql-asm.js
kaizhu256
commented
Oct 27, 2020
latest-patch removes redundant npm-tests on this simplifies sunsetting --- a/Makefile+++ b/Makefile@@ -101,9 +101,6 @@ dist/sql-wasm.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) $(SOURCE_API_FILES) $
mv $@ out/tmp-raw.js
cat src/shell-pre.js out/tmp-raw.js src/shell-post.js > $@
rm out/tmp-raw.js
- # TODO - remove code below in future releases to sunset sql-asm-memory-growth.js- printf 'console.error(\n "\\n\\nDEPRECATION WARNING.\\n"\n + "sql-asm-memory-growth.js will be removed in future releases.\\n"\n + "Use sql-asm.js instead, which now includes memory-growth support.\\n\\n"\n);\n' > dist/sql-asm-memory-growth.js- cat $@ >> dist/sql-asm-memory-growth.js
# Web worker API
.PHONY: workerif you still want npm-tests on |



Co-authored-by: Yan Li yanli0303@outlook.com
Co-authored-by: kai zhu kaizhu256@gmail.com
this implements suggestion #239 (comment)
removed or edited all references to memory-growth using command
git grep -i 'memory.*growth'