From: Dirk B. <db...@us...> - 2007-05-26 10:06:26
|
Update of /cvsroot/win32forth/win32forth/demos In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv3872/demos Added Files: SQLite Demo.f WinSock Demo.f Log Message: - Tom Dixon's WinSock and SQLite library's added --- NEW FILE: WinSock Demo.f --- \ Server Side needs sock.f create tbuf 256 allot : sdump ( sock -- ) begin dup sock-read? if dup tbuf 256 rot sock-read tbuf swap type then dup sock-closed? key? or until sock-close drop ; s" www.technobox.de" 80 sock-open value sock s" GET / HTTP/1.0" sock sock-write . crlf$ count sock sock-write . crlf$ count sock sock-write . cr sock sdump \s 0 value sock : server-init ( -- ) 8003 sock-create dup to sock dup -1 = if abort" Unable to make socket!" then 5 sock sock-listen ; : serve ( -- ) begin sock sock-accept? if sock sock-accept drop dup s" Server Hello! " rot sock-write drop dup get-local-time time-buf >time" rot sock-write drop 10 ms sock-close drop then 10 ms key? until ; : server ( -- ) server-init serve ; \ client side : client ( hostname -- ) 8003 sock-open to sock begin 10 ms sock sock-read? dup if pad swap sock sock-read pad swap type else drop then sock sock-closed? until sock sock-close drop ; .( Type 'server' or 's" hostname" client' to test the server or client) --- NEW FILE: SQLite Demo.f --- \ Benchmark for SQLite stuff \ Thomas Dixon anew -SQLiteDemo.f include SQLite.f SQLiteDB sqlite 10000 constant #records : create-table ( -- ) s" CREATE TABLE test (name varchar, id int, fl1 float, data blob )" execute: sqlite ; : delete-table ( -- ) s" DROP TABLE test" execute: sqlite ; : row-iter ( xt -- ) begin dup >r execute r> nextrow: sqlite until drop ; \ Generating a random word create tbuf 256 allot create tstr 256 allot : random-word ( -- str len ) 12 random 1 + dup tbuf c! 0 do 26 random 97 + tbuf i + 1 + c! loop tbuf count ; \ Generating a random string : random-str ( n -- str len ) 0 tstr c! 0 do random-word tstr +place s" " tstr +place loop tstr count ; \ Fill tables with junk... : ins-rows ( n -- ) 0 do s" INSERT INTO test(name, id, fl1, data) VALUES(?,?,?,?)" execute: sqlite 4 random 1+ random-str 0 bindstr: sqlite i 1 bindint: sqlite i s>f 3.14159265358979e0 f* 2 bindfloat: sqlite get-local-time time-buf 16 3 bindblob: sqlite loop ; \ misc operations : walk-table ( -- ) 0 ['] 1+ row-iter ." Ran through " . ." rows." ; : order-by-int ( -- ) s" select * from test order by id desc" execute: sqlite ; : order-by-float ( -- ) s" select * from test order by fl1 desc" execute: sqlite ; : order-by-string ( -- ) s" select * from test order by name desc" execute: sqlite ; : order-by-blob ( -- ) s" select * from test order by data desc" execute: sqlite ; : random-access ( n -- ) 0 do s" select * from test where id = ?" execute: sqlite #records random 0 bindint: sqlite loop ; \ for debug : qdump ( -- ) fieldcnt: sqlite 0 ?do i fieldname: sqlite type tab loop cr cr begin fieldcnt: sqlite 0 ?do i getstr: sqlite type tab loop cr nextrow: sqlite until ; : memory-db ( -- ) s" :memory:" open: sqlite ; : file-db ( -- ) s" c:\mytest.db" open: sqlite ; cr cr .( SQLITE Benchmark! ) cr cr .( Creating Database from RAM: ) elapse memory-db cr cr .( Creating Tables: ) elapse create-table cr cr #records . .( row insert: ) elapse #records ins-rows cr cr .( Ordering Data by Integer: ) elapse order-by-int cr cr .( Walk Through All Records: ) elapse walk-table cr cr .( Ordering Data by Float: ) elapse order-by-float cr cr .( Walk Through All Records: ) elapse walk-table cr cr .( Ordering Data by String: ) elapse order-by-string cr cr .( Walk Through All Records: ) elapse walk-table cr cr .( Ordering Data by Blob: ) elapse order-by-blob cr cr .( Walk Through All Records: ) elapse walk-table cr cr .( Random Access -100 records- :) elapse 100 random-access cr cr .( Deleting Tables: ) elapse delete-table |