关于sqlite执行时间的疑问?该怎么处理
关于sqlite执行时间的疑问?
数据库中有一个users表。
create table users(name text, number text);
循环插入一百条,不使用事务的话,在我的机器上需要6s。
而在我朋友的机器上这样的操作花费不到1s。
可能是哪方面的原因导致这样的差异?
系统的不同,sqlite版本的不同或是编译器的不同?
------解决方案--------------------
你机器的硬盘速度。
------解决方案--------------------
配置一样的话,应该跟操作系统以及编译器的版本有关系。100条数据,应该相当快的
------解决方案--------------------
如果机器软硬配置完全相同,则需要用系统监控工具来检查,看是在哪一段开销比较大了。
------解决方案--------------------
用性能分析工具(比如oprofile)比较两边运行的结果,否则都是瞎猜。
数据库中有一个users表。
create table users(name text, number text);
循环插入一百条,不使用事务的话,在我的机器上需要6s。
而在我朋友的机器上这样的操作花费不到1s。
可能是哪方面的原因导致这样的差异?
系统的不同,sqlite版本的不同或是编译器的不同?
- C/C++ code
sqlite3* pHandle = 0; int nOpenRet = sqlite3_open("/home/test.db", &pHandle); //ouput_time(); int i = 0; char sExec[256] = {0}; snprintf(sExec, 255, "insert into users values('user', '1');"); char* pErrMsg=0; for (; i < 100; i++) { if (sqlite3_exec(pHandle,sExec, 0, 0, &pErrMsg)!= 0) { printf("sqlite execute fail, i=%d\n", i); return 0; } }
------解决方案--------------------
你机器的硬盘速度。
------解决方案--------------------
配置一样的话,应该跟操作系统以及编译器的版本有关系。100条数据,应该相当快的
------解决方案--------------------
如果机器软硬配置完全相同,则需要用系统监控工具来检查,看是在哪一段开销比较大了。
------解决方案--------------------
用性能分析工具(比如oprofile)比较两边运行的结果,否则都是瞎猜。