mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Add performance tests to the test suite. (CVS 3516)
FossilOrigin-Name: 270c745dffad7aa24f8707720b3d68ad7a6b2749
This commit is contained in:
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
|||||||
C Fix\sthe\s".dump"\scommand\sin\sthe\sshell.\s\sTicket\s#2072.\s\sAlso\sticket\s#2065.\s(CVS\s3515)
|
C Add\sperformance\stests\sto\sthe\stest\ssuite.\s(CVS\s3516)
|
||||||
D 2006-11-20T16:21:10
|
D 2006-11-23T09:39:16
|
||||||
F Makefile.in 8e14898d41a53033ecb687d93c9cd5d109fb9ae3
|
F Makefile.in 8e14898d41a53033ecb687d93c9cd5d109fb9ae3
|
||||||
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
|
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
|
||||||
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
||||||
@ -100,7 +100,7 @@ F src/sqlite3ext.h 2c2156cc32a158e2b7bd9042d42accf94bff2e40
|
|||||||
F src/sqliteInt.h f6bac44ee7b8ee2614b046974551c22999ec674f
|
F src/sqliteInt.h f6bac44ee7b8ee2614b046974551c22999ec674f
|
||||||
F src/table.c 6d0da66dde26ee75614ed8f584a1996467088d06
|
F src/table.c 6d0da66dde26ee75614ed8f584a1996467088d06
|
||||||
F src/tclsqlite.c e029f739bed90071789fe81a226d53e97a80a4d8
|
F src/tclsqlite.c e029f739bed90071789fe81a226d53e97a80a4d8
|
||||||
F src/test1.c 3d0cb8837eb13e6cd5fe2b76a37ba8d9c0ad77fc
|
F src/test1.c 19786ff3274635b6eac27a89f842416f388f3654
|
||||||
F src/test2.c ca74a1d8aeb7d9606e8f6b762c5daf85c1a3f92b
|
F src/test2.c ca74a1d8aeb7d9606e8f6b762c5daf85c1a3f92b
|
||||||
F src/test3.c 85135c09560c48bdb0a23c9b890ab405486b8ec9
|
F src/test3.c 85135c09560c48bdb0a23c9b890ab405486b8ec9
|
||||||
F src/test4.c 8b784cd82de158a2317cb4ac4bc86f91ad315e25
|
F src/test4.c 8b784cd82de158a2317cb4ac4bc86f91ad315e25
|
||||||
@ -282,7 +282,7 @@ F test/select2.test f3c2678c3a9f3cf08ec4988a3845bda64be6d9e3
|
|||||||
F test/select3.test 33c78663e6b1b41220dcec4eb6affb1a05001ffe
|
F test/select3.test 33c78663e6b1b41220dcec4eb6affb1a05001ffe
|
||||||
F test/select4.test 305ba0a6e97efc5544def5e5cb49b54e1bf87fd9
|
F test/select4.test 305ba0a6e97efc5544def5e5cb49b54e1bf87fd9
|
||||||
F test/select5.test 0b47058d3e916c1fc9fe81f44b438e02bade21ce
|
F test/select5.test 0b47058d3e916c1fc9fe81f44b438e02bade21ce
|
||||||
F test/select6.test a4e97b713b096f17414f50d078ec4efe7dc43253
|
F test/select6.test 3607be760b1d4bfd337f43c13b5f3532ca5f09d9
|
||||||
F test/select7.test 95697d8e8355ef7538e2fe768da16838bbd0fcde
|
F test/select7.test 95697d8e8355ef7538e2fe768da16838bbd0fcde
|
||||||
F test/server1.test e328b8e641ba8fe9273132cfef497383185dc1f5
|
F test/server1.test e328b8e641ba8fe9273132cfef497383185dc1f5
|
||||||
F test/shared.test 0ed247941236788c255b3b29b5a82d5ca71b6432
|
F test/shared.test 0ed247941236788c255b3b29b5a82d5ca71b6432
|
||||||
@ -297,7 +297,7 @@ F test/table.test feea6a3eb08cf166f570255eea5447e42ef82498
|
|||||||
F test/tableapi.test a1982276274d292110d549206bc365b2da43e2ee
|
F test/tableapi.test a1982276274d292110d549206bc365b2da43e2ee
|
||||||
F test/tclsqlite.test 51334389283c74bcbe28645a73159b17e239e9f3
|
F test/tclsqlite.test 51334389283c74bcbe28645a73159b17e239e9f3
|
||||||
F test/temptable.test c36f3e5a94507abb64f7ba23deeb4e1a8a8c3821
|
F test/temptable.test c36f3e5a94507abb64f7ba23deeb4e1a8a8c3821
|
||||||
F test/tester.tcl 2c2683d3bd51dac27750af89ff3d0f339823b603
|
F test/tester.tcl a1940002407a4797c7748d633b92c58bfaa211cf
|
||||||
F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35
|
F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35
|
||||||
F test/thread2.test 6d7b30102d600f51b4055ee3a5a19228799049fb
|
F test/thread2.test 6d7b30102d600f51b4055ee3a5a19228799049fb
|
||||||
F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b
|
F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b
|
||||||
@ -421,7 +421,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
|
|||||||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||||
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
||||||
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
||||||
P 2fdc147d0059dcdfff2da33bd9fedb0bee057aa1
|
P 9fdc249609a4745715a2bf49bbf1376ea243a20a
|
||||||
R 794dc2fbb3e0e83e5207db81c11bb327
|
R efe8add04260169c1047f36db8e1352f
|
||||||
U drh
|
U drh
|
||||||
Z 79a147f5026204797ae394029f543a2e
|
Z 86f3e2483d981df2a6b869d1c8f0b98e
|
||||||
|
@ -1 +1 @@
|
|||||||
9fdc249609a4745715a2bf49bbf1376ea243a20a
|
270c745dffad7aa24f8707720b3d68ad7a6b2749
|
87
src/test1.c
87
src/test1.c
@ -13,7 +13,7 @@
|
|||||||
** is not included in the SQLite library. It is used for automated
|
** is not included in the SQLite library. It is used for automated
|
||||||
** testing of the SQLite library.
|
** testing of the SQLite library.
|
||||||
**
|
**
|
||||||
** $Id: test1.c,v 1.224 2006/11/09 00:24:54 drh Exp $
|
** $Id: test1.c,v 1.225 2006/11/23 09:39:16 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include "tcl.h"
|
#include "tcl.h"
|
||||||
@ -63,6 +63,22 @@ static int get_sqlite_pointer(
|
|||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Decode a pointer to an sqlite3 object.
|
||||||
|
*/
|
||||||
|
static int getDbPointer(Tcl_Interp *interp, const char *zA, sqlite3 **ppDb){
|
||||||
|
struct SqliteDb *p;
|
||||||
|
Tcl_CmdInfo cmdInfo;
|
||||||
|
if( Tcl_GetCommandInfo(interp, zA, &cmdInfo) ){
|
||||||
|
p = (struct SqliteDb*)cmdInfo.objClientData;
|
||||||
|
*ppDb = p->db;
|
||||||
|
}else{
|
||||||
|
*ppDb = (sqlite3*)sqlite3TextToPtr(zA);
|
||||||
|
}
|
||||||
|
return TCL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const char *sqlite3TestErrorName(int rc){
|
const char *sqlite3TestErrorName(int rc){
|
||||||
const char *zName = 0;
|
const char *zName = 0;
|
||||||
switch( rc & 0xff ){
|
switch( rc & 0xff ){
|
||||||
@ -121,14 +137,6 @@ int sqlite3TestErrCode(Tcl_Interp *interp, sqlite3 *db, int rc){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
** Decode a pointer to an sqlite3 object.
|
|
||||||
*/
|
|
||||||
static int getDbPointer(Tcl_Interp *interp, const char *zA, sqlite3 **ppDb){
|
|
||||||
*ppDb = (sqlite3*)sqlite3TextToPtr(zA);
|
|
||||||
return TCL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Decode a pointer to an sqlite3_stmt object.
|
** Decode a pointer to an sqlite3_stmt object.
|
||||||
*/
|
*/
|
||||||
@ -227,6 +235,65 @@ static int test_exec_printf(
|
|||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Usage: sqlite3_exec DB SQL
|
||||||
|
**
|
||||||
|
** Invoke the sqlite3_exec interface using the open database DB
|
||||||
|
*/
|
||||||
|
static int test_exec(
|
||||||
|
void *NotUsed,
|
||||||
|
Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
|
||||||
|
int argc, /* Number of arguments */
|
||||||
|
char **argv /* Text of each argument */
|
||||||
|
){
|
||||||
|
sqlite3 *db;
|
||||||
|
Tcl_DString str;
|
||||||
|
int rc;
|
||||||
|
char *zErr = 0;
|
||||||
|
char zBuf[30];
|
||||||
|
if( argc!=3 ){
|
||||||
|
Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
|
||||||
|
" DB SQL", 0);
|
||||||
|
return TCL_ERROR;
|
||||||
|
}
|
||||||
|
if( getDbPointer(interp, argv[1], &db) ) return TCL_ERROR;
|
||||||
|
Tcl_DStringInit(&str);
|
||||||
|
rc = sqlite3_exec(db, argv[2], exec_printf_cb, &str, &zErr);
|
||||||
|
sprintf(zBuf, "%d", rc);
|
||||||
|
Tcl_AppendElement(interp, zBuf);
|
||||||
|
Tcl_AppendElement(interp, rc==SQLITE_OK ? Tcl_DStringValue(&str) : zErr);
|
||||||
|
Tcl_DStringFree(&str);
|
||||||
|
if( zErr ) sqlite3_free(zErr);
|
||||||
|
if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR;
|
||||||
|
return TCL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Usage: sqlite3_exec_nr DB SQL
|
||||||
|
**
|
||||||
|
** Invoke the sqlite3_exec interface using the open database DB. Discard
|
||||||
|
** all results
|
||||||
|
*/
|
||||||
|
static int test_exec_nr(
|
||||||
|
void *NotUsed,
|
||||||
|
Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
|
||||||
|
int argc, /* Number of arguments */
|
||||||
|
char **argv /* Text of each argument */
|
||||||
|
){
|
||||||
|
sqlite3 *db;
|
||||||
|
int rc;
|
||||||
|
char *zErr = 0;
|
||||||
|
if( argc!=3 ){
|
||||||
|
Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
|
||||||
|
" DB SQL", 0);
|
||||||
|
return TCL_ERROR;
|
||||||
|
}
|
||||||
|
if( getDbPointer(interp, argv[1], &db) ) return TCL_ERROR;
|
||||||
|
rc = sqlite3_exec(db, argv[2], 0, 0, &zErr);
|
||||||
|
if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR;
|
||||||
|
return TCL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Usage: sqlite3_mprintf_z_test SEPARATOR ARG0 ARG1 ...
|
** Usage: sqlite3_mprintf_z_test SEPARATOR ARG0 ARG1 ...
|
||||||
**
|
**
|
||||||
@ -3945,6 +4012,8 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
|
|||||||
{ "sqlite3_mprintf_n_test", (Tcl_CmdProc*)test_mprintf_n },
|
{ "sqlite3_mprintf_n_test", (Tcl_CmdProc*)test_mprintf_n },
|
||||||
{ "sqlite3_last_insert_rowid", (Tcl_CmdProc*)test_last_rowid },
|
{ "sqlite3_last_insert_rowid", (Tcl_CmdProc*)test_last_rowid },
|
||||||
{ "sqlite3_exec_printf", (Tcl_CmdProc*)test_exec_printf },
|
{ "sqlite3_exec_printf", (Tcl_CmdProc*)test_exec_printf },
|
||||||
|
{ "sqlite3_exec", (Tcl_CmdProc*)test_exec },
|
||||||
|
{ "sqlite3_exec_nr", (Tcl_CmdProc*)test_exec_nr },
|
||||||
{ "sqlite3_get_table_printf", (Tcl_CmdProc*)test_get_table_printf },
|
{ "sqlite3_get_table_printf", (Tcl_CmdProc*)test_get_table_printf },
|
||||||
{ "sqlite3_close", (Tcl_CmdProc*)sqlite_test_close },
|
{ "sqlite3_close", (Tcl_CmdProc*)sqlite_test_close },
|
||||||
{ "sqlite3_create_function", (Tcl_CmdProc*)test_create_function },
|
{ "sqlite3_create_function", (Tcl_CmdProc*)test_create_function },
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
# focus of this file is testing SELECT statements that contain
|
# focus of this file is testing SELECT statements that contain
|
||||||
# subqueries in their FROM clause.
|
# subqueries in their FROM clause.
|
||||||
#
|
#
|
||||||
# $Id: select6.test,v 1.24 2006/06/11 23:41:56 drh Exp $
|
# $Id: select6.test,v 1.25 2006/11/23 09:39:16 drh Exp $
|
||||||
|
|
||||||
set testdir [file dirname $argv0]
|
set testdir [file dirname $argv0]
|
||||||
source $testdir/tester.tcl
|
source $testdir/tester.tcl
|
||||||
@ -101,7 +101,7 @@ do_test select6-1.9 {
|
|||||||
}
|
}
|
||||||
} {1 1 1 2 2 2 3 4 3 4 7 7 4 8 15 12 5 5 20 21}
|
} {1 1 1 2 2 2 3 4 3 4 7 7 4 8 15 12 5 5 20 21}
|
||||||
|
|
||||||
do_test select6-2.0 {
|
do_speed_test select6-2.0 {
|
||||||
execsql {
|
execsql {
|
||||||
CREATE TABLE t2(a INTEGER PRIMARY KEY, b);
|
CREATE TABLE t2(a INTEGER PRIMARY KEY, b);
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
# This file implements some common TCL routines used for regression
|
# This file implements some common TCL routines used for regression
|
||||||
# testing the SQLite library
|
# testing the SQLite library
|
||||||
#
|
#
|
||||||
# $Id: tester.tcl,v 1.69 2006/10/04 11:55:50 drh Exp $
|
# $Id: tester.tcl,v 1.70 2006/11/23 09:39:16 drh Exp $
|
||||||
|
|
||||||
# Make sure tclsqlite3 was compiled correctly. Abort now with an
|
# Make sure tclsqlite3 was compiled correctly. Abort now with an
|
||||||
# error message if not.
|
# error message if not.
|
||||||
@ -78,6 +78,9 @@ set nTest 0
|
|||||||
set skip_test 0
|
set skip_test 0
|
||||||
set failList {}
|
set failList {}
|
||||||
set maxErr 1000
|
set maxErr 1000
|
||||||
|
if {![info exists speedTest]} {
|
||||||
|
set speedTest 0
|
||||||
|
}
|
||||||
|
|
||||||
# Invoke the do_test procedure to run a single test
|
# Invoke the do_test procedure to run a single test
|
||||||
#
|
#
|
||||||
@ -118,6 +121,19 @@ proc do_test {name cmd expected} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run an SQL script.
|
||||||
|
# Return the number of microseconds per statement.
|
||||||
|
#
|
||||||
|
proc speed_trial {name numstmt sql} {
|
||||||
|
puts -nonewline [format {%-20.20s } $name...]
|
||||||
|
flush stdout
|
||||||
|
set speed [time {sqlite3_exec_nr db $sql}]
|
||||||
|
set tm [lindex $speed 0]
|
||||||
|
set per [expr {$tm/(1.0*$numstmt)}]
|
||||||
|
set rate [expr {1000000.0*$numstmt/$tm}]
|
||||||
|
puts [format {%20.1f us/stmt %20.5f stmt/s} $per $rate]
|
||||||
|
}
|
||||||
|
|
||||||
# The procedure uses the special "sqlite_malloc_stat" command
|
# The procedure uses the special "sqlite_malloc_stat" command
|
||||||
# (which is only available if SQLite is compiled with -DSQLITE_DEBUG=1)
|
# (which is only available if SQLite is compiled with -DSQLITE_DEBUG=1)
|
||||||
# to see how many malloc()s have not been free()ed. The number
|
# to see how many malloc()s have not been free()ed. The number
|
||||||
|
Reference in New Issue
Block a user