数据库中有一个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;
}
}
谢谢你的回复。
我朋友的机器同我的配置都一模一样,所以可以排除这类问题。
我在其他两台机器上运行过,一台系统和我的一样都是ubuntu.不过编译器用的不同,
他是使用emacs.
只是觉得编译器造成这样的差异是不是有些夸张?
找到原因了,和系统的文件系统格式差异有关.
在ext3 和ext4上的不同.
谢谢各位回帖
小弟 弄点东西可是调用 sqlite3_prepare 这个函数 select 就好使 只要 改变数据库 的就不行 比如insert 之类的 谁来帮个忙啊 请问这是什么原因 啊 用 c 去实现的
你用的什么工具啊?
把你自己的代码发 ......