/[Frey]/trunk/t/02-dbd-ram.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/t/02-dbd-ram.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 334 - (hide annotations)
Sat Nov 8 22:15:15 2008 UTC (15 years, 6 months ago) by dpavlin
File MIME type: application/x-troff
File size: 2633 byte(s)
import DBD::RAM for cleanup (and rename) patched with
http://rt.cpan.org/Public/Bug/Display.html?id=33882

We could and probably will use DBD::AnyData as source for
data. However, at this stage, it makes much more sense to
first support SQL queries over Frey objects and DBD::RAM seems like smaller
codebase to start with.
1 dpavlin 334 #!/usr/bin/perl -w
2    
3     require 5.004;
4     use strict;
5    
6     use blib;
7    
8     require DBI;
9     require Benchmark;
10    
11    
12     my($i);
13     sub TimeMe ($$$$) {
14     my($startMsg, $endMsg, $code, $count) = @_;
15     printf("\n%s\n", $startMsg);
16     my($t1) = Benchmark->new();
17     $@ = '';
18     eval {
19     for ($i = 0; $i < $count; $i++) {
20     &$code;
21     }
22     };
23     if ($@) {
24     print "Test failed, message: $@\n";
25     } else {
26     my($td) = Benchmark::timediff(Benchmark->new(), $t1);
27     my($dur) = $td->cpu_a;
28     printf($endMsg, $count, $dur, $count / $dur);
29     print "\n";
30     }
31     }
32    
33    
34     TimeMe("Testing empty loop speed ...",
35     "%d iterations in %.1f cpu+sys seconds (%d per sec)",
36     sub {
37     },
38     100000);
39    
40    
41     my($dbh);
42     TimeMe("Testing connect/disconnect speed ...",
43     "%d connections in %.1f cpu+sys seconds (%d per sec)",
44     sub {
45     $dbh = DBI->connect("DBI:RAM:", undef, undef,
46     { 'RaiseError' => 1 });
47     $dbh->disconnect();
48     },
49     2000);
50    
51     $dbh = DBI->connect("DBI:RAM:", undef, undef,
52     { 'RaiseError' => 1 });
53     TimeMe("Testing CREATE/DROP TABLE speed ...",
54     "%d files in %.1f cpu+sys seconds (%d per sec)",
55     sub {
56     $dbh->do("CREATE TABLE bench (id INTEGER, name CHAR(40),"
57     . " firstname CHAR(40), address CHAR(40),"
58     . " zip CHAR(10), city CHAR(40), email CHAR(40))");
59     $dbh->do("DROP TABLE bench");
60     },
61     500);
62    
63     $dbh->do("CREATE TABLE bench (id INTEGER, name CHAR(40),"
64     . " firstname CHAR(40), address CHAR(40),"
65     . " zip CHAR(10), city CHAR(40), email CHAR(40))");
66     my(@vals) = (0 .. 499);
67     my($num);
68     TimeMe("Testing INSERT speed ...",
69     "%d rows in %.1f cpu+sys seconds (%d per sec)",
70     sub {
71     ($num) = splice(@vals, int(rand(@vals)), 1);
72     $dbh->do("INSERT INTO bench VALUES (?, 'Wiedmann', 'Jochen',"
73     . " 'Am Eisteich 9', '72555', 'Metzingen',"
74     . " 'joe\@ispsoft.de')", undef, $num);
75     },
76     500);
77    
78     my($sth);
79     TimeMe("Testing SELECT speed ...",
80     "%d single rows in %.1f cpu+sys seconds (%.1f per sec)",
81     sub {
82     $num = int(rand(500));
83     $sth = $dbh->prepare("SELECT * FROM bench WHERE id = $num");
84     $sth->execute();
85     $sth->fetch() or die "Expected result for id = $num";
86     },
87     100);
88    
89    
90     TimeMe("Testing SELECT speed (multiple rows) ...",
91     "%d times 100 rows in %.1f cpu+sys seconds (%.1f per sec)",
92     sub {
93     $num = int(rand(400));
94     $sth = $dbh->prepare("SELECT * FROM bench WHERE id >= $num"
95     . " AND id < " . ($num+100));
96     $sth->execute();
97     ($sth->rows() == 100)
98     or die "Expected 100 rows for id = $num, got " . $sth->rows();
99     while ($sth->fetch()) {
100     }
101     },
102     100);
103    

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26