That does sound rather strange. Can you also reproduce if you remove `-sMAIN_MODULE=1` and `-sALLOW_MEMORY_GROWTH`?
Is the IDBFS storage growing on each iteration? Can you tell where the slowdown is happening exactly? I can't see how it would be related to ASYNCIFY. Can you also try wth `-sJSPI` instead of `-sASYNCIFY`? cheers, sam On Tue, Feb 10, 2026 at 8:05 AM 'leopatras' via emscripten-discuss < [email protected]> wrote: > Hi folks, we ran into an issue that so far all of our SQL tests with > sqlite are running slower and slower over time in our ASYNCIFY'd > environment on a IDBFS mount...only in Chrome. > FF and Safari are performing with roughly the same times each loop. > Even deleting the DB file in the IDBFS doesn't help, I can revert to the > initial loop time only when deleting the indexed DB content. > Running on MEMFS I can't observe this behaviour. Also running without > ASYNCIFY I can't observe this behavior..(unfortunately we need both IDBFS > and ASYNCIFY) > Is this a known issue ? > Thanks in advance, > Leo > > Env : latest sqlite amalgation 3.51.2, latest emscripten 5.0.0,latest > Chrome 144.0.7559.133. > > emcc flags: > > emcc \ > > -s MAIN_MODULE=1 \ > > -O2 \ > > -s EXPORT_ALL=1 \ > > -s EXIT_RUNTIME=1 \ > > -s ASSERTIONS=1 \ > > -s FORCE_FILESYSTEM=1 \ > > -s ALLOW_MEMORY_GROWTH=1 \ > > -s ASYNCIFY \ > > -lidbfs.js \ > > -o main.html $(OBJS) > little sqlite demo creating a table, insert 100 rows, delete, drop and > remove in each loop. > (complete code at https://github.com/leopatras/em_slow_sqlite_chrome) > > #include <stdio.h> > > #include <stdlib.h> > > #include <sys/time.h> > > #include <emscripten.h> > > #include "sqlite3.h" > > > EM_JS(char*,addPersistentDirsInt,(),{ > > const dirname="/persist"; > > try { > > FS.mkdir(dirname); > > } catch(err) { > > console.error("mkdir %o failed:%o",dirname,err); > > return; > > } > > try { > > FS.mount(IDBFS, { autoPersist: true }, dirname); > > console.log("did mount IDBFS to "+dirname); > > } catch (err) { > > console.error("mount(IDBFS,{ autoPersist: true },%o) > error:%o",dirname,err); > > } > > }); > > > > static int callback(void *NotUsed, int argc, char **argv, char **azColName) > > { > > NotUsed = 0; > > /* > > int i; > > for (i = 0; i < argc; i++) { > > printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); > > } > > printf("\n"); > > */ > > return 0; > > } > > > int main(int argc, char **argv) > > { > > sqlite3 *db; > > char *err = 0; > > int rc,i,loop; > > struct timeval stop, start; > > addPersistentDirsInt(); > > for (loop = 1; loop <= 20; loop++) { > > gettimeofday(&start, NULL); > > remove("/persist/test.db"); > > rc = sqlite3_open("/persist/test.db", &db); > > if (rc == SQLITE_OK) { > > rc = sqlite3_exec(db, > > "CREATE TABLE test (id INTEGER NOT NULL, > text VARCHAR(100))", > > callback, 0, &err); > > if (rc != SQLITE_OK) { > > fprintf(stderr, "SQL error CREATE: %s\n", err); > > } > > for (i = 1; i < 100; i++) { > > char buf[500]; > > sprintf(buf, "INSERT INTO test VALUES (%d, 'text%d')", i, > > i); > > rc = sqlite3_exec(db, buf, callback, 0, &err); > > if (rc != SQLITE_OK) { > > fprintf(stderr, "SQL error INSERT: %s\n", err); > > } > > } > > rc = sqlite3_exec(db, "SELECT * FROM test", callback, 0, &err); > > if (rc != SQLITE_OK) { > > fprintf(stderr, "SQL error SELECT: %s\n", err); > > } > > rc = sqlite3_exec(db, "DELETE FROM test", callback, 0, &err); > > if (rc != SQLITE_OK) { > > fprintf(stderr, "SQL error DELETE: %s\n", err); > > } > > rc = sqlite3_exec(db, "DROP TABLE test", callback, 0, &err); > > if (rc != SQLITE_OK) { > > fprintf(stderr, "SQL error DROP: %s\n", err); > > } > > sqlite3_close(db); > > gettimeofday(&stop, NULL); > > printf("loop:%d db ops took %lld msec\n",loop, > > (stop.tv_sec - start.tv_sec) * 1000000 + stop.tv_usec - > > start.tv_usec); > > } else { > > fprintf(stderr, "Can't open database: %s\n", > > sqlite3_errmsg(db)); > > sqlite3_close(db); > > return 1; > > } > > } > > return 0; > > } > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/d/msgid/emscripten-discuss/fb7330e6-399c-4db6-ad83-bbaeafe13c51n%40googlegroups.com > <https://groups.google.com/d/msgid/emscripten-discuss/fb7330e6-399c-4db6-ad83-bbaeafe13c51n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/emscripten-discuss/CAL_va2_GN--vB0V_zXMQ62gLtoh3qBzz8xNRMdieCaqDQ%3DY8KQ%40mail.gmail.com.
