0

我的申请中有以下顺序。

  1. 使用蓝牙的 PBAP 从手机下载联系人。

  2. 将这些联系人写入使用 SQLite 创建的自定义数据库。我使用 Zero-malloc 选项配置 SQLite,并给定 1MB 缓冲区用作堆,并使用其他优化,如单个事务中的所有行插入PRAGMA journal_mode = MEMORYPRAGMA synchronous = OFFPRAGMA count_changes = OFF.

  3. 写入数据库后,我正在从数据库中读取联系人并为所有联系人姓名创建语音发音。这种语音发音算法使用动态内存分配太多了。

现在,如果我重复上述 3 个步骤,在单次执行中按顺序重复 3 次,我将得到以下结果。

第一次:联系人在 5 秒内下载,数据库在 10 秒内创建。

第二次:联系人在 5 秒内下载,数据库在 60 秒内创建。

第三次:联系人在 5 秒内下载,数据库在 500 秒内创建。

现在我从我的应用程序中删除了语音发音创建并再次重复了 3 次。现在结果是

第一次:联系人在 5 秒内下载,数据库在 10 秒内创建。

第二次:联系人在 5 秒内下载,数据库在 10 秒内创建。

第三次:联系人在 5 秒内下载,数据库在 10 秒内创建。

我发现了发音创建的问题,即在创建发音时内存变得碎片化,它影响了 SQLite下一次的性能。

但是,我为 SQLite 配置了 Heap 并启用了 MEMSYS5,甚至影响了碎片。

请提出解决此问题的建议。

4

0 回答 0