Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
node-sqlite3
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
俞永鹏
node-sqlite3
Commits
4d274ee1
Commit
4d274ee1
authored
Mar 17, 2010
by
Orlando Vazquez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
get rid of the speed test for the old sync driver and drop in the simple speedtest for this one
parent
55cbdc10
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
219 deletions
+39
-219
speedtest.js
speedtest.js
+39
-165
test3.js
test3.js
+0
-54
No files found.
speedtest.js
View file @
4d274ee1
// Speed test for SQL. Based on http://www.sqlite.org/speed.html
var
fs
=
require
(
"fs"
);
var
sys
=
require
(
"sys"
);
process
.
mixin
(
GLOBAL
,
require
(
"assert"
));
var
posix
=
require
(
"posix"
);
process
.
mixin
(
GLOBAL
,
require
(
"sys"
));
var
sqlite
=
require
(
"./sqlite"
);
try
{
var
db
=
new
sqlite
.
Database
();
posix
.
unlink
(
"speedtest.db"
).
wait
();
}
catch
(
e
)
{
function
readTest
(
db
,
callback
)
{
// Not there? That's okay.
var
t0
=
new
Date
;
}
var
rows
=
0
;
db
.
query
(
"SELECT * FROM t1"
,
function
(
row
)
{
if
(
!
row
)
{
var
d
=
((
new
Date
)
-
t0
)
/
1000
;
puts
(
"**** "
+
rows
+
" rows in "
+
d
+
"s ("
+
(
rows
/
d
)
+
"/s)"
);
function
connect
()
{
if
(
callback
)
callback
(
db
);
if
(
true
)
{
// node-sqlite
var
sqlite
=
require
(
"./sqlite"
);
var
db
=
sqlite
.
openDatabaseSync
(
"speedtest.db"
);
}
else
{
// node-persistence
// TODO: this doesn't work yet
var
sqlite
=
require
(
"../../lib/node-persistence/lib/persistence/sqlite"
);
var
db
=
sqlite
.
new_connection
(
"speedtest.db"
);
db
.
executeSql
=
db
.
query
;
db
.
transaction
=
function
(
callback
)
{
this
.
query
(
"BEGIN TRANSACTION;"
);
callback
(
this
);
this
.
query
(
"COMMIT"
);
}
}
else
{
rows
++
;
}
}
return
db
;
})
;
}
}
function
_rome
(
dn
,
ds
)
{
function
writeTest
(
db
,
callback
)
{
if
(
n
<
dn
)
return
false
;
var
t0
=
new
Date
;
n
-=
dn
;
var
count
=
i
=
100000
;
s
+=
ds
;
return
true
;
}
function
toRoman
(
n
)
{
if
(
isNaN
(
n
))
return
n
;
if
(
n
<=
0
)
return
"N"
;
s
=
""
;
while
(
_rome
(
1000
,
"M"
))
{}
_rome
(
900
,
"CM"
);
_rome
(
500
,
"D"
);
_rome
(
400
,
"CD"
);
while
(
_rome
(
100
,
"C"
))
{}
_rome
(
90
,
"XC"
);
_rome
(
50
,
"L"
);
_rome
(
40
,
"XL"
);
while
(
_rome
(
10
,
"X"
))
{}
_rome
(
9
,
"IX"
);
_rome
(
5
,
"V"
);
_rome
(
4
,
"IV"
);
while
(
_rome
(
1
,
"I"
))
{}
return
s
;
}
var
db
;
function
innerFunction
()
{
db
.
query
(
"INSERT INTO t1 VALUES (1)"
,
function
(
row
)
{
if
(
!
i
--
)
{
// end of results
var
dt
=
((
new
Date
)
-
t0
)
/
1000
;
puts
(
"**** "
+
count
+
" insertions in "
+
dt
+
"s ("
+
(
count
/
dt
)
+
"/s)"
);
var
SECTION
;
if
(
callback
)
callback
(
db
);
var
LASTTIME
;
function
time
(
section
)
{
if
(
db
)
db
.
close
();
db
=
connect
();
var
now
=
(
new
Date
()).
getTime
();
if
(
SECTION
)
{
var
elapsed
=
((
now
-
LASTTIME
)
/
1000.0
).
toFixed
(
3
);
sys
.
puts
(
elapsed
+
' '
+
SECTION
);
}
}
SECTION
=
section
;
else
{
LASTTIME
=
now
;
innerFunction
();
}
time
(
"Test 1: 1000 INSERTs"
);
db
.
query
(
"CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));"
);
for
(
var
i
=
0
;
i
<
1000
;
++
i
)
{
var
n
=
Math
.
floor
(
Math
.
random
()
*
99999
);
db
.
query
(
"INSERT INTO t1 VALUES(?,?,?);"
,
[
i
,
n
,
toRoman
(
n
)]);
}
time
(
"Test 2: 25000 INSERTs in a transaction"
);
db
.
transaction
(
function
(
tx
)
{
tx
.
executeSql
(
"CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));"
);
for
(
var
i
=
0
;
i
<
25000
;
++
i
)
{
var
n
=
Math
.
floor
(
Math
.
random
()
*
99999
);
db
.
query
(
"INSERT INTO t2 VALUES(?,?,?);"
,
[
i
,
n
,
toRoman
(
n
)]);
}
}
});
});
time
(
"Test 3: 25000 INSERTs into an indexed table"
);
db
.
transaction
(
function
(
tx
)
{
tx
.
executeSql
(
"CREATE TABLE t3(a INTEGER, b INTEGER, c VARCHAR(100));"
);
tx
.
executeSql
(
"CREATE INDEX i3 ON t3(c);"
);
for
(
var
i
=
0
;
i
<
25000
;
++
i
)
{
var
n
=
Math
.
floor
(
Math
.
random
()
*
99999
);
db
.
query
(
"INSERT INTO t3 VALUES(?,?,?);"
,
[
i
,
n
,
toRoman
(
n
)]);
}
}
});
innerFunction
();
}
time
(
"Test 4: 100 SELECTs without an index"
);
db
.
transaction
(
function
(
tx
)
{
for
(
var
i
=
0
;
i
<
100
;
++
i
)
{
db
.
query
(
"SELECT count(*), avg(b) FROM t2 WHERE b>=? AND b<?;"
,
[
i
*
100
,
i
*
100
+
1000
]);
}
});
time
(
"Test 5: 100 SELECTs on a string comparison"
);
db
.
transaction
(
function
(
tx
)
{
for
(
var
i
=
0
;
i
<
100
;
++
i
)
{
db
.
query
(
"SELECT count(*), avg(b) FROM t2 WHERE c LIKE ?;"
,
[
'%'
+
toRoman
(
i
)
+
'%'
]);
}
});
time
(
"Test 6: Creating an index"
);
db
.
query
(
"CREATE INDEX i2a ON t2(a);"
);
db
.
query
(
"CREATE INDEX i2b ON t2(b);"
);
time
(
"Test 7: 5000 SELECTs with an index"
);
for
(
var
i
=
0
;
i
<
5000
;
++
i
)
db
.
query
(
"SELECT count(*), avg(b) FROM t2 WHERE b>=? AND b<?;"
,
[
i
*
100
,
(
i
+
1
)
*
100
]);
time
(
"Test 8: 1000 UPDATEs without an index"
);
db
.
transaction
(
function
(
tx
)
{
for
(
var
i
=
0
;
i
<
1000
;
++
i
)
tx
.
executeSql
(
"UPDATE t1 SET b=b*2 WHERE a>=? AND a<?"
,
[
i
*
10
,
(
i
+
1
)
*
10
]);
});
time
(
"Test 9: 25000 UPDATEs with an index"
);
db
.
transaction
(
function
(
tx
)
{
for
(
var
i
=
0
;
i
<
25000
;
++
i
)
{
var
n
=
Math
.
floor
(
Math
.
random
()
*
1000000
);
tx
.
executeSql
(
"UPDATE t2 SET b=? WHERE a=?"
,
[
n
,
i
]);
}
});
time
(
"Test 10: 25000 text UPDATEs with an index"
);
db
.
transaction
(
function
(
tx
)
{
for
(
var
i
=
0
;
i
<
25000
;
++
i
)
{
var
n
=
Math
.
floor
(
Math
.
random
()
*
1000000
);
tx
.
executeSql
(
"UPDATE t2 SET c=? WHERE a=?"
,
[
toRoman
(
n
),
i
]);
}
});
time
(
"Test 11: INSERTs from a SELECT"
);
db
.
transaction
(
function
(
tx
)
{
tx
.
executeSql
(
"INSERT INTO t1 SELECT b,a,c FROM t2;"
);
tx
.
executeSql
(
"INSERT INTO t2 SELECT b,a,c FROM t1;"
);
});
time
(
"Test 12: DELETE without an index"
);
db
.
query
(
"DELETE FROM t2 WHERE c LIKE '%fifty%';"
);
time
(
"Test 13: DELETE with an index"
);
db
.
query
(
"DELETE FROM t2 WHERE a>10 AND a<20000;"
);
time
(
"Test 14: A big INSERT after a big DELETE"
);
db
.
open
(
":memory:"
,
function
()
{
db
.
query
(
"INSERT INTO t2 SELECT * FROM t1;"
);
puts
(
inspect
(
arguments
));
puts
(
"open cb"
);
time
(
"Test 15: A big DELETE followed by 12000 small INSERTs"
);
db
.
query
(
"CREATE TABLE t1 (alpha INTEGER)"
,
function
()
{
db
.
transaction
(
function
(
tx
)
{
puts
(
"create table callback"
+
inspect
(
arguments
));
tx
.
executeSql
(
"DELETE FROM t1;"
);
writeTest
(
db
,
readTest
);
for
(
var
i
=
0
;
i
<
12000
;
++
i
)
{
});
var
n
=
Math
.
floor
(
Math
.
random
()
*
100000
);
tx
.
executeSql
(
"INSERT INTO t1 VALUES(?,?,?);"
,
[
i
,
n
,
toRoman
(
n
)]);
}
});
});
time
(
"Test 16: DROP TABLE"
);
db
.
query
(
"DROP TABLE t1;"
);
db
.
query
(
"DROP TABLE t2;"
);
db
.
query
(
"DROP TABLE t3;"
);
time
();
\ No newline at end of file
test3.js
deleted
100644 → 0
View file @
55cbdc10
var
fs
=
require
(
"fs"
);
process
.
mixin
(
GLOBAL
,
require
(
"assert"
));
process
.
mixin
(
GLOBAL
,
require
(
"sys"
));
var
sqlite
=
require
(
"./sqlite"
);
var
db
=
new
sqlite
.
Database
();
function
readTest
(
db
,
callback
)
{
var
t0
=
new
Date
;
var
rows
=
0
;
db
.
query
(
"SELECT * FROM t1"
,
function
(
row
)
{
if
(
!
row
)
{
var
d
=
((
new
Date
)
-
t0
)
/
1000
;
puts
(
"**** "
+
rows
+
" rows in "
+
d
+
"s ("
+
(
rows
/
d
)
+
"/s)"
);
if
(
callback
)
callback
(
db
);
}
else
{
rows
++
;
}
});
}
function
writeTest
(
db
,
callback
)
{
var
t0
=
new
Date
;
var
count
=
i
=
100000
;
function
innerFunction
()
{
db
.
query
(
"INSERT INTO t1 VALUES (1)"
,
function
(
row
)
{
if
(
!
i
--
)
{
// end of results
var
dt
=
((
new
Date
)
-
t0
)
/
1000
;
puts
(
"**** "
+
count
+
" insertions in "
+
dt
+
"s ("
+
(
count
/
dt
)
+
"/s)"
);
if
(
callback
)
callback
(
db
);
}
else
{
innerFunction
();
}
});
}
innerFunction
();
}
db
.
open
(
":memory:"
,
function
()
{
puts
(
inspect
(
arguments
));
puts
(
"open cb"
);
db
.
query
(
"CREATE TABLE t1 (alpha INTEGER)"
,
function
()
{
puts
(
"create table callback"
+
inspect
(
arguments
));
writeTest
(
db
,
readTest
);
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment