内存碎片会影响sqlite3的性能

时间:2013-05-15 09:47:35

标签: memory memory-management sqlite

我的申请中有以下顺序。

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

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

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

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

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

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

    第3次: 5秒后下载的联系人,500秒内创建的数据库

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

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

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

    第3次: 5秒后下载的联系人,10秒内创建的数据库

    我发现发音创建的问题,内存在创建发音时碎片化,并且它影响了SQLite 的性能,以供下次使用。

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

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

0 个答案:

没有答案
相关问题