Ubuntu 7.10, SQLite 3.5.9 (debugging turned on), Intel Pentium E2140 (1.60GHz) Dual Core, 2Gb RAM, 7200RPM Drive
Bunch of crud to stdout followed by: 0|performance.txt,v 1.2|1.0|0|0.0K Rows/Second 1|Trivial Inserts|21.52|10077696|468.0K Rows/Second 2|Trivial Selects|1.43|10077696|7046.0K Rows/Second 3|Trivial Updates|114.01|10077696|88.0K Rows/Second 4|Trivial Deletes|32.91|10077696|306.0K Rows/Second 5|Insert with calculations|40.94|10077696|246.0K Rows/Second 6|Updates with calculations and longer rows|89.98|10077696|112.0K Rows/Second Noah Hart wrote: > Good Point Ken, > > Here is version 1.2 with the missing CREATE TABLE statement and some new > PRAGMA settings. > > Any suggestions for the CACHE_SIZE setting? > > Also -- I can see how to modify an existing Wiki page, but does anyone > know how to create a new Wiki page, so I can put this script there > rather than repeating it in email? > > Noah > SQLite 3.6.1 running under "Vista 32 bit, QuadCore 2.4GHz, 3G ram, > 5000rpmDisk" > > 0|performance.txt,v 1.2|1.0|0|0.0K Rows/Second > 1|Trivial Inserts|16.31|10077696|618.0K Rows/Second > 2|Trivial Selects|0.85|10077696|11898.0K Rows/Second > 3|Trivial Updates|82.41|10077696|122.0K Rows/Second > 4|Trivial Deletes|23.32|10077696|432.0K Rows/Second > 5|Insert with calculations|29.02|10077696|347.0K Rows/Second > 6|Updates with calculations and longer rows|54.52|10077696|185.0K > Rows/Second > > -- > -- The author disclaims copyright to this source code. In place of > -- a legal notice, here is a blessing: > -- > -- May you do good and not evil. > -- May you find forgiveness for yourself and forgive others. > -- May you share freely, never taking more than you give. > -- > --********************************************************************** > * > -- This file contains code used to implement the performance scripts > -- > -- $Id: performance.txt,v 1.2 2008/08/15 14:15:00 nbh Exp $ > > > ------------------------------------------ > -- LEVEL THE PLAYING FIELD WITH PRAGMAs > ------------------------------------------ > > PRAGMA auto_vacuum = NONE; > PRAGMA cache_size = 20000; > PRAGMA count_changes = 1; > PRAGMA encoding = "UTF-8"; > PRAGMA fullfsync = 0; > PRAGMA journal_mode = DELETE; > PRAGMA locking_mode = EXCLUSIVE; > PRAGMA page_size = 1024; > PRAGMA synchronous = OFF; > PRAGMA temp_store = MEMORY; > ------------------------------------------ > -- A LITTLE SETUP BEFORE WE BEGIN > ------------------------------------------ > > CREATE TABLE TIMER(TestNumber INTEGER, Description TEXT, StartTime > REAL, EndTime REAL DEFAULT NULL, Rows INTEGER DEFAULT NULL); > INSERT INTO TIMER VALUES(0, 'performance.txt,v 1.2', 0, 1, 0); > CREATE TABLE TEST1 (I INTEGER, T TEXT); > CREATE TABLE N_1(i INTEGER, t TEXT); > INSERT INTO N_1 VALUES(1, 't1_'); > INSERT INTO N_1 VALUES(2, 't_22_'); > INSERT INTO N_1 VALUES(3, 'tx_3_3_3_'); > INSERT INTO N_1 VALUES(4, 'txt_4_4_4_4_'); > INSERT INTO N_1 VALUES(5, 'text_55555555555_'); > INSERT INTO N_1 VALUES(6, ' '); > CREATE TABLE N_2(i INTEGER, t TEXT); > INSERT INTO N_2 SELECT N1.I+N2.I*7, N1.T||N2.T FROM N_1 N1 CROSS > JOIN N_1 N2 CROSS JOIN N_1 N3; > > -------------------------------------------------------- > -- TEST 1 > -- TRIVIAL INSERTS -- KEEP THE NUMBER AND TEXT SMALL > -------------------------------------------------------- > BEGIN; > INSERT INTO TIMER (TestNumber, Description, StartTime) SELECT > 1+MAX(TESTNUMBER), 'Trivial Inserts', (julianday('now') - > 2440587.5)*86400 FROM TIMER; > INSERT INTO TEST1 SELECT 1,'T' FROM N_2 N1 CROSS JOIN N_2 N2 CROSS > JOIN N_2 N3; > COMMIT; > > UPDATE TIMER SET EndTime = (julianday('now') - > 2440587.5)*86400.0, Rows = changes() > WHERE TestNumber = (SELECT MAX(TESTNUMBER) FROM TIMER); > > -------------------------------------------------------- > -- TEST 2 > -- TRIVIAL SELECTS > -------------------------------------------------------- > INSERT INTO TIMER (TestNumber, Description, StartTime) SELECT > 1+MAX(TESTNUMBER), 'Trivial Selects', (julianday('now') - > 2440587.5)*86400 FROM TIMER; > UPDATE TIMER SET Rows = (SELECT COUNT(*) FROM TEST1 where rowid >> 0) > WHERE TestNumber = (SELECT MAX(TESTNUMBER) FROM TIMER); > UPDATE TIMER SET EndTime = (julianday('now') - > 2440587.5)*86400.0 > WHERE TestNumber = (SELECT MAX(TESTNUMBER) FROM TIMER); > > -------------------------------------------------------- > -- TEST 3 > -- TRIVIAL UPDATES -- THE NUMBERS AND ROW SIZE ARE SMALL > -------------------------------------------------------- > BEGIN; > INSERT INTO TIMER (TestNumber, Description, StartTime) SELECT > 1+MAX(TESTNUMBER), 'Trivial Updates', (julianday('now') - > 2440587.5)*86400 FROM TIMER; > UPDATE TEST1 SET I=I; > COMMIT; > UPDATE TIMER SET EndTime = (julianday('now') - > 2440587.5)*86400.0, Rows = changes() > WHERE TestNumber = (SELECT MAX(TESTNUMBER) FROM TIMER); > > -------------------------------------------------------- > -- TEST 4 > -- TRIVIAL DELETES > -------------------------------------------------------- > BEGIN; > INSERT INTO TIMER (TestNumber, Description, StartTime) SELECT > 1+MAX(TESTNUMBER), 'Trivial Deletes', (julianday('now') - > 2440587.5)*86400 FROM TIMER; > DELETE FROM TEST1 WHERE I >0; > COMMIT; > UPDATE TIMER SET EndTime = (julianday('now') - > 2440587.5)*86400.0, Rows = changes() > WHERE TestNumber = (SELECT MAX(TESTNUMBER) FROM TIMER); > > ------------------------------------------ > -- A LITTLE CLEANUP BEFORE WE CONTINUE > ------------------------------------------ > > DROP TABLE TEST1; > CREATE TABLE TEST1 (I INTEGER, T TEXT); > PRAGMA page_count; > VACUUM; > PRAGMA page_count; > > -------------------------------------------------------- > -- TEST 5 > -- INSERTS WITH CALCULATIONS -- SHOULD BE SLOWER THAN 1 > -------------------------------------------------------- > BEGIN; > INSERT INTO TIMER (TestNumber, Description, StartTime) SELECT > 1+MAX(TESTNUMBER), 'Insert with calculations', (julianday('now') - > 2440587.5)*86400 FROM TIMER; > INSERT INTO TEST1 SELECT N1.I*N2.I+N3.I, N1.T||N2.T||N3.T FROM N_2 > N1 CROSS JOIN N_2 N2 CROSS JOIN N_2 N3; > COMMIT; > UPDATE TIMER SET EndTime = (julianday('now') - > 2440587.5)*86400.0, Rows = changes() > WHERE TestNumber = (SELECT MAX(TESTNUMBER) FROM TIMER); > > -------------------------------------------------------- > -- TEST 6 > -- UPDATES WITH CALCULATIONS -- SHOULD BE SLOWER THAN 2 > -------------------------------------------------------- > BEGIN; > INSERT INTO TIMER (TestNumber, Description, StartTime) SELECT > 1+MAX(TESTNUMBER), 'Updates with calculations and longer rows', > (julianday('now') - 2440587.5)*86400 FROM TIMER; > UPDATE TEST1 SET I=I*1+2-3; > COMMIT; > UPDATE TIMER SET EndTime = (julianday('now') - > 2440587.5)*86400.0, Rows = changes() > WHERE TestNumber = (SELECT MAX(TESTNUMBER) FROM TIMER); > > ----------------------------------------------- > -- REPORT THE RESULTS > -------------------------------------------------------- > Select TestNumber, Description, ROUND(EndTime- StartTime,2), > Rows, Round(Rows/(EndTime-StartTime)/1000)||'K Rows/Second' from TIMER; > > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Kees Nuyt > Sent: Friday, August 15, 2008 2:03 PM > To: General Discussion of SQLite Database > Subject: Re: [sqlite] Generic speed testing > > On Thu, 14 Aug 2008 13:25:56 -0700, you wrote: > >> I'm not sure if this will even be a valid comparison, so your feedback >> and initial numbers are appreciated. >> >> Please reply with your data as follows > > (v1.1 without the DROP TABLE TEST1 statement): > > sqlite 3.6.0 running on Acer Aspire 9423 under "MS Windows > Vista 32bit on Intel Core 2 Duo T5500 1.66GHz, 667 MHz FSB, > 2GB DDR2 RAM, Hitachi HTS541616J9SA00 SATA 5400RPM with 8MB > buffer, write caching enabled" > > 0|performance.txt,v 1.1|1.0|0|0.0K Rows/Second > 1|Trivial Inserts|31.41|10077696|321.0K Rows/Second > 2|Trivial Selects|2.06|10077696|4887.0K Rows/Second > 3|Trivial Updates|142.87|10077696|71.0K Rows/Second > 4|Trivial Deletes|41.39|10077696|243.0K Rows/Second > 5|Insert with calculations|61.81|10077696|163.0K Rows/Second > 6|Updates with calculations and longer > rows|383.63|10077696|26.0K Rows/Second > > I might be able to squeeze more performance out of this box. > > Hint: > For a genuinely level playing field you'd have to use more > PRAGMAs, like page size and cache size. Defaults might be > different in different environments. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users