tiny_tds 3.0.0-x64-mingw-ucrt → 3.2.0-x64-mingw-ucrt

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +194 -74
  3. data/CHANGELOG.md +12 -0
  4. data/Gemfile +1 -1
  5. data/README.md +59 -50
  6. data/Rakefile +46 -37
  7. data/VERSION +1 -1
  8. data/ext/tiny_tds/extconf.rb +169 -70
  9. data/ext/tiny_tds/extconsts.rb +3 -4
  10. data/lib/tiny_tds/3.1/tiny_tds.so +0 -0
  11. data/lib/tiny_tds/3.2/tiny_tds.so +0 -0
  12. data/lib/tiny_tds/3.3/tiny_tds.so +0 -0
  13. data/lib/tiny_tds/3.4/tiny_tds.so +0 -0
  14. data/lib/tiny_tds/bin.rb +12 -26
  15. data/lib/tiny_tds/client.rb +38 -42
  16. data/lib/tiny_tds/error.rb +0 -2
  17. data/lib/tiny_tds/gem.rb +5 -9
  18. data/lib/tiny_tds/result.rb +0 -2
  19. data/lib/tiny_tds/version.rb +1 -1
  20. data/lib/tiny_tds.rb +28 -47
  21. data/ports/x64-mingw-ucrt/{freetds/1.4.23/bin → bin}/defncopy.exe +0 -0
  22. data/ports/x64-mingw-ucrt/bin/libsybdb-5.dll +0 -0
  23. data/ports/x64-mingw-ucrt/bin/tsql.exe +0 -0
  24. data/tasks/native_gem.rake +11 -18
  25. data/tasks/package.rake +1 -3
  26. data/tasks/ports.rake +7 -91
  27. data/tasks/test.rake +3 -5
  28. data/test/bin/install-freetds.sh +2 -4
  29. data/test/bin/restore-from-native-gem.ps1 +10 -0
  30. data/test/client_test.rb +106 -112
  31. data/test/gem_test.rb +32 -108
  32. data/test/result_test.rb +208 -221
  33. data/test/schema_test.rb +177 -181
  34. data/test/test_helper.rb +59 -64
  35. data/test/thread_test.rb +22 -31
  36. data/tiny_tds.gemspec +28 -29
  37. metadata +29 -44
  38. data/ports/x64-mingw-ucrt/freetds/1.4.23/bin/bsqldb.exe +0 -0
  39. data/ports/x64-mingw-ucrt/freetds/1.4.23/bin/datacopy.exe +0 -0
  40. data/ports/x64-mingw-ucrt/freetds/1.4.23/bin/freebcp.exe +0 -0
  41. data/ports/x64-mingw-ucrt/freetds/1.4.23/bin/libct-4.dll +0 -0
  42. data/ports/x64-mingw-ucrt/freetds/1.4.23/bin/libsybdb-5.dll +0 -0
  43. data/ports/x64-mingw-ucrt/freetds/1.4.23/bin/osql +0 -393
  44. data/ports/x64-mingw-ucrt/freetds/1.4.23/bin/tdspool.exe +0 -0
  45. data/ports/x64-mingw-ucrt/freetds/1.4.23/bin/tsql.exe +0 -0
  46. data/ports/x64-mingw-ucrt/freetds/1.4.23/lib/libct.dll.a +0 -0
  47. data/ports/x64-mingw-ucrt/freetds/1.4.23/lib/libct.la +0 -41
  48. data/ports/x64-mingw-ucrt/freetds/1.4.23/lib/libsybdb.dll.a +0 -0
  49. data/ports/x64-mingw-ucrt/freetds/1.4.23/lib/libsybdb.la +0 -41
  50. data/ports/x64-mingw-ucrt/libiconv/1.17/bin/iconv.exe +0 -0
  51. data/ports/x64-mingw-ucrt/libiconv/1.17/bin/libcharset-1.dll +0 -0
  52. data/ports/x64-mingw-ucrt/libiconv/1.17/bin/libiconv-2.dll +0 -0
  53. data/ports/x64-mingw-ucrt/libiconv/1.17/lib/libcharset.dll.a +0 -0
  54. data/ports/x64-mingw-ucrt/libiconv/1.17/lib/libcharset.la +0 -41
  55. data/ports/x64-mingw-ucrt/libiconv/1.17/lib/libiconv.dll.a +0 -0
  56. data/ports/x64-mingw-ucrt/libiconv/1.17/lib/libiconv.la +0 -41
  57. data/ports/x64-mingw-ucrt/openssl/3.4.0/bin/c_rehash +0 -252
  58. data/ports/x64-mingw-ucrt/openssl/3.4.0/bin/libcrypto-3-x64.dll +0 -0
  59. data/ports/x64-mingw-ucrt/openssl/3.4.0/bin/libssl-3-x64.dll +0 -0
  60. data/ports/x64-mingw-ucrt/openssl/3.4.0/bin/openssl.exe +0 -0
  61. data/tasks/ports/freetds.rb +0 -32
  62. data/tasks/ports/libiconv.rb +0 -26
  63. data/tasks/ports/openssl.rb +0 -62
  64. data/tasks/ports/recipe.rb +0 -64
  65. data/test/benchmark/query.rb +0 -77
  66. data/test/benchmark/query_odbc.rb +0 -106
  67. data/test/benchmark/query_tinytds.rb +0 -126
@@ -1,252 +0,0 @@
1
- #!/usr/bin/env perl
2
-
3
- # WARNING: do not edit!
4
- # Generated by Makefile from tools/c_rehash.in
5
- # Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved.
6
- #
7
- # Licensed under the Apache License 2.0 (the "License"). You may not use
8
- # this file except in compliance with the License. You can obtain a copy
9
- # in the file LICENSE in the source distribution or at
10
- # https://www.openssl.org/source/license.html
11
-
12
- # Perl c_rehash script, scan all files in a directory
13
- # and add symbolic links to their hash values.
14
-
15
- my $dir = "/__w/tiny_tds/tiny_tds/ports/x64-mingw-ucrt/openssl/3.4.0";
16
- my $prefix = "/__w/tiny_tds/tiny_tds/ports/x64-mingw-ucrt/openssl/3.4.0";
17
-
18
- my $errorcount = 0;
19
- my $openssl = $ENV{OPENSSL} || "openssl";
20
- my $pwd;
21
- my $x509hash = "-subject_hash";
22
- my $crlhash = "-hash";
23
- my $verbose = 0;
24
- my $symlink_exists=eval {symlink("",""); 1};
25
- my $removelinks = 1;
26
-
27
- ## Parse flags.
28
- while ( $ARGV[0] =~ /^-/ ) {
29
- my $flag = shift @ARGV;
30
- last if ( $flag eq '--');
31
- if ( $flag eq '-old') {
32
- $x509hash = "-subject_hash_old";
33
- $crlhash = "-hash_old";
34
- } elsif ( $flag eq '-h' || $flag eq '-help' ) {
35
- help();
36
- } elsif ( $flag eq '-n' ) {
37
- $removelinks = 0;
38
- } elsif ( $flag eq '-v' ) {
39
- $verbose++;
40
- }
41
- else {
42
- print STDERR "Usage error; try -h.\n";
43
- exit 1;
44
- }
45
- }
46
-
47
- sub help {
48
- print "Usage: c_rehash [-old] [-h] [-help] [-v] [dirs...]\n";
49
- print " -old use old-style digest\n";
50
- print " -h or -help print this help text\n";
51
- print " -v print files removed and linked\n";
52
- exit 0;
53
- }
54
-
55
- eval "require Cwd";
56
- if (defined(&Cwd::getcwd)) {
57
- $pwd=Cwd::getcwd();
58
- } else {
59
- $pwd=`pwd`;
60
- chomp($pwd);
61
- }
62
-
63
- # DOS/Win32 or Unix delimiter? Prefix our installdir, then search.
64
- my $path_delim = ($pwd =~ /^[a-z]\:/i) ? ';' : ':';
65
- $ENV{PATH} = "$prefix/bin" . ($ENV{PATH} ? $path_delim . $ENV{PATH} : "");
66
-
67
- if (! -x $openssl) {
68
- my $found = 0;
69
- foreach (split /$path_delim/, $ENV{PATH}) {
70
- if (-x "$_/$openssl") {
71
- $found = 1;
72
- $openssl = "$_/$openssl";
73
- last;
74
- }
75
- }
76
- if ($found == 0) {
77
- print STDERR "c_rehash: rehashing skipped ('openssl' program not available)\n";
78
- exit 0;
79
- }
80
- }
81
-
82
- if (@ARGV) {
83
- @dirlist = @ARGV;
84
- } elsif ($ENV{SSL_CERT_DIR}) {
85
- @dirlist = split /$path_delim/, $ENV{SSL_CERT_DIR};
86
- } else {
87
- $dirlist[0] = "$dir/certs";
88
- }
89
-
90
- if (-d $dirlist[0]) {
91
- chdir $dirlist[0];
92
- $openssl="$pwd/$openssl" if (!-x $openssl);
93
- chdir $pwd;
94
- }
95
-
96
- foreach (@dirlist) {
97
- if (-d $_ ) {
98
- if ( -w $_) {
99
- hash_dir($_);
100
- } else {
101
- print "Skipping $_, can't write\n";
102
- $errorcount++;
103
- }
104
- }
105
- }
106
- exit($errorcount);
107
-
108
- sub copy_file {
109
- my ($src_fname, $dst_fname) = @_;
110
-
111
- if (open(my $in, "<", $src_fname)) {
112
- if (open(my $out, ">", $dst_fname)) {
113
- print $out $_ while (<$in>);
114
- close $out;
115
- } else {
116
- warn "Cannot open $dst_fname for write, $!";
117
- }
118
- close $in;
119
- } else {
120
- warn "Cannot open $src_fname for read, $!";
121
- }
122
- }
123
-
124
- sub hash_dir {
125
- my $dir = shift;
126
- my %hashlist;
127
-
128
- print "Doing $dir\n";
129
-
130
- if (!chdir $dir) {
131
- print STDERR "WARNING: Cannot chdir to '$dir', $!\n";
132
- return;
133
- }
134
-
135
- opendir(DIR, ".") || print STDERR "WARNING: Cannot opendir '.', $!\n";
136
- my @flist = sort readdir(DIR);
137
- closedir DIR;
138
- if ( $removelinks ) {
139
- # Delete any existing symbolic links
140
- foreach (grep {/^[\da-f]+\.r{0,1}\d+$/} @flist) {
141
- if (-l $_) {
142
- print "unlink $_\n" if $verbose;
143
- unlink $_ || warn "Can't unlink $_, $!\n";
144
- }
145
- }
146
- }
147
- FILE: foreach $fname (grep {/\.(pem|crt|cer|crl)$/} @flist) {
148
- # Check to see if certificates and/or CRLs present.
149
- my ($cert, $crl) = check_file($fname);
150
- if (!$cert && !$crl) {
151
- print STDERR "WARNING: $fname does not contain a certificate or CRL: skipping\n";
152
- next;
153
- }
154
- link_hash_cert($fname) if ($cert);
155
- link_hash_crl($fname) if ($crl);
156
- }
157
-
158
- chdir $pwd;
159
- }
160
-
161
- sub check_file {
162
- my ($is_cert, $is_crl) = (0,0);
163
- my $fname = $_[0];
164
-
165
- open(my $in, "<", $fname);
166
- while(<$in>) {
167
- if (/^-----BEGIN (.*)-----/) {
168
- my $hdr = $1;
169
- if ($hdr =~ /^(X509 |TRUSTED |)CERTIFICATE$/) {
170
- $is_cert = 1;
171
- last if ($is_crl);
172
- } elsif ($hdr eq "X509 CRL") {
173
- $is_crl = 1;
174
- last if ($is_cert);
175
- }
176
- }
177
- }
178
- close $in;
179
- return ($is_cert, $is_crl);
180
- }
181
-
182
- sub compute_hash {
183
- my $fh;
184
- if ( $^O eq "VMS" ) {
185
- # VMS uses the open through shell
186
- # The file names are safe there and list form is unsupported
187
- if (!open($fh, "-|", join(' ', @_))) {
188
- print STDERR "Cannot compute hash on '$fname'\n";
189
- return;
190
- }
191
- } else {
192
- if (!open($fh, "-|", @_)) {
193
- print STDERR "Cannot compute hash on '$fname'\n";
194
- return;
195
- }
196
- }
197
- return (<$fh>, <$fh>);
198
- }
199
-
200
- # Link a certificate to its subject name hash value, each hash is of
201
- # the form <hash>.<n> where n is an integer. If the hash value already exists
202
- # then we need to up the value of n, unless its a duplicate in which
203
- # case we skip the link. We check for duplicates by comparing the
204
- # certificate fingerprints
205
-
206
- sub link_hash_cert {
207
- link_hash($_[0], 'cert');
208
- }
209
-
210
- # Same as above except for a CRL. CRL links are of the form <hash>.r<n>
211
-
212
- sub link_hash_crl {
213
- link_hash($_[0], 'crl');
214
- }
215
-
216
- sub link_hash {
217
- my ($fname, $type) = @_;
218
- my $is_cert = $type eq 'cert';
219
-
220
- my ($hash, $fprint) = compute_hash($openssl,
221
- $is_cert ? "x509" : "crl",
222
- $is_cert ? $x509hash : $crlhash,
223
- "-fingerprint", "-noout",
224
- "-in", $fname);
225
- chomp $hash;
226
- $hash =~ s/^.*=// if !$is_cert;
227
- chomp $fprint;
228
- return if !$hash;
229
- $fprint =~ s/^.*=//;
230
- $fprint =~ tr/://d;
231
- my $suffix = 0;
232
- # Search for an unused hash filename
233
- my $crlmark = $is_cert ? "" : "r";
234
- while(exists $hashlist{"$hash.$crlmark$suffix"}) {
235
- # Hash matches: if fingerprint matches its a duplicate cert
236
- if ($hashlist{"$hash.$crlmark$suffix"} eq $fprint) {
237
- my $what = $is_cert ? 'certificate' : 'CRL';
238
- print STDERR "WARNING: Skipping duplicate $what $fname\n";
239
- return;
240
- }
241
- $suffix++;
242
- }
243
- $hash .= ".$crlmark$suffix";
244
- if ($symlink_exists) {
245
- print "link $fname -> $hash\n" if $verbose;
246
- symlink $fname, $hash || warn "Can't symlink, $!";
247
- } else {
248
- print "copy $fname -> $hash\n" if $verbose;
249
- copy_file($fname, $hash);
250
- }
251
- $hashlist{$hash} = $fprint;
252
- }
@@ -1,32 +0,0 @@
1
- require_relative './recipe'
2
-
3
- module Ports
4
- class Freetds < Recipe
5
- def initialize(version)
6
- super('freetds', version)
7
-
8
- set_patches
9
- end
10
-
11
- private
12
-
13
- def configure_defaults
14
- opts = super
15
-
16
- opts << '--with-pic'
17
- opts << '--disable-odbc'
18
- opts << '--with-tdsver=7.3'
19
-
20
- if windows?
21
- opts << '--sysconfdir=C:/Sites'
22
- opts << '--enable-sspi'
23
- end
24
-
25
- opts
26
- end
27
-
28
- def set_patches
29
- self.patch_files.concat get_patches(name, version)
30
- end
31
- end
32
- end
@@ -1,26 +0,0 @@
1
- require_relative './recipe'
2
-
3
- module Ports
4
- class Libiconv < Recipe
5
- def initialize(version)
6
- super('libiconv', version)
7
-
8
- set_patches
9
- end
10
-
11
- private
12
-
13
- def configure_defaults
14
- [
15
- "--host=#{@host}",
16
- '--disable-static',
17
- '--enable-shared',
18
- 'CFLAGS=-fPIC -O2'
19
- ]
20
- end
21
-
22
- def set_patches
23
- self.patch_files.concat get_patches(name, version)
24
- end
25
- end
26
- end
@@ -1,62 +0,0 @@
1
- require_relative './recipe'
2
-
3
- module Ports
4
- class Openssl < Recipe
5
- def initialize(version)
6
- super('openssl', version)
7
-
8
- set_patches
9
- end
10
-
11
- def configure
12
- return if configured?
13
-
14
- md5_file = File.join(tmp_path, 'configure.md5')
15
- digest = Digest::MD5.hexdigest(computed_options.to_s)
16
- File.open(md5_file, "w") { |f| f.write digest }
17
-
18
- # Windows doesn't recognize the shebang so always explicitly use sh
19
- execute('configure', "sh -c \"./Configure #{computed_options.join(' ')}\"")
20
- end
21
-
22
- def install
23
- unless installed?
24
- execute('install', %Q(#{make_cmd} install_sw install_ssldirs))
25
- end
26
- end
27
-
28
- private
29
-
30
- def configure_defaults
31
- opts = [
32
- 'shared',
33
- target_arch,
34
- "--openssldir=#{path}",
35
- ]
36
-
37
- if cross_build?
38
- opts << "--cross-compile-prefix=#{host}-"
39
- end
40
-
41
- opts
42
- end
43
-
44
- def target_arch
45
- if windows?
46
- arch = ''
47
- arch = '64' if host=~ /x86_64/
48
-
49
- "mingw#{arch}"
50
- else
51
- arch = 'x32'
52
- arch = 'x86_64' if host=~ /x86_64/
53
-
54
- "linux-#{arch}"
55
- end
56
- end
57
-
58
- def set_patches
59
- self.patch_files.concat get_patches(name, version)
60
- end
61
- end
62
- end
@@ -1,64 +0,0 @@
1
- # encoding: UTF-8
2
- require 'mini_portile2'
3
- require 'fileutils'
4
- require 'rbconfig'
5
-
6
- module Ports
7
- class Recipe < MiniPortile
8
- attr_writer :gem_platform
9
-
10
- def cook
11
- checkpoint = "ports/checkpoints/#{name}-#{version}-#{gem_platform}.installed"
12
-
13
- unless File.exist? checkpoint
14
- super
15
- FileUtils.mkdir_p("ports/checkpoints")
16
- FileUtils.touch checkpoint
17
- end
18
- end
19
-
20
- private
21
-
22
- attr_reader :gem_platform
23
-
24
- def port_path
25
- "#{@target}/#{gem_platform}/#{@name}/#{@version}"
26
- end
27
-
28
- def tmp_path
29
- "tmp/#{gem_platform}/ports/#{@name}/#{@version}"
30
- end
31
-
32
- def configure_defaults
33
- [
34
- "--host=#{@host}",
35
- '--disable-static',
36
- '--enable-shared'
37
- ]
38
- end
39
-
40
- def windows?
41
- host =~ /mswin|mingw32/
42
- end
43
-
44
- def system_host
45
- RbConfig::CONFIG['host']
46
- end
47
-
48
- def cross_build?
49
- host != system_host
50
- end
51
-
52
- def get_patches(libname, version)
53
- patches = []
54
-
55
- patch_path = File.expand_path(
56
- File.join('..','..','..','patches',libname,version),
57
- __FILE__
58
- )
59
-
60
- patches.concat(Dir[File.join(patch_path, '*.patch')].sort)
61
- patches.concat(Dir[File.join(patch_path, '*.diff')].sort)
62
- end
63
- end
64
- end
@@ -1,77 +0,0 @@
1
- $:.unshift File.expand_path('../../../lib',__FILE__)
2
- require 'rubygems'
3
- require 'bench_press'
4
- require 'tiny_tds'
5
- require 'odbc'
6
- require 'odbc_utf8'
7
-
8
- extend BenchPress
9
-
10
- author 'Ken Collins'
11
- summary 'Query everything.'
12
-
13
- reps 1_000
14
-
15
- @odbc = ODBC.connect ENV['TINYTDS_UNIT_DATASERVER'], 'tinytds', ''
16
- @odbc.use_time = true
17
-
18
- @odbc_utf8 = ODBC_UTF8.connect ENV['TINYTDS_UNIT_DATASERVER'], 'tinytds', ''
19
- @odbc_utf8.use_time = true
20
-
21
- @tinytds = TinyTds::Client.new(
22
- :dataserver => ENV['TINYTDS_UNIT_DATASERVER'],
23
- :username => 'tinytds',
24
- :password => '',
25
- :database => 'tinytdstest',
26
- :appname => 'TinyTds Dev',
27
- :login_timeout => 5,
28
- :timeout => 5 )
29
-
30
- @query_all = "SELECT * FROM [datatypes]"
31
-
32
-
33
- measure "ODBC (ascii-8bit)" do
34
- h = @odbc.run(@query_all)
35
- h.fetch_all
36
- h.drop
37
- end
38
-
39
- # measure "ODBC (utf8)" do
40
- # h = @odbc_utf8.run(@query_all)
41
- # h.fetch_all
42
- # h.drop
43
- # end
44
-
45
- measure "TinyTDS (row caching)" do
46
- @tinytds.execute(@query_all).each
47
- end
48
-
49
- measure "TinyTDS (no caching)" do
50
- @tinytds.execute(@query_all).each(:cache_rows => false)
51
- end
52
-
53
-
54
-
55
- =begin
56
-
57
- Author: Ken Collins
58
- Date: January 22, 2011
59
- Summary: Query everything.
60
-
61
- System Information
62
- ------------------
63
- Operating System: Mac OS X 10.6.6 (10J567)
64
- CPU: Intel Core 2 Duo 1.6 GHz
65
- Processor Count: 2
66
- Memory: 4 GB
67
- ruby 1.8.7 (2010-04-19 patchlevel 253) [i686-darwin10.4.3], MBARI 0x6770, Ruby Enterprise Edition 2010.02
68
-
69
- "TinyTDS (row caching)" is up to 79% faster over 1,000 repetitions
70
- ------------------------------------------------------------------
71
-
72
- TinyTDS (row caching) 4.90862512588501 secs Fastest
73
- TinyTDS (no caching) 4.91626906394958 secs 0% Slower
74
- ODBC (ascii-8bit) 23.959536075592 secs 79% Slower
75
-
76
- =end
77
-
@@ -1,106 +0,0 @@
1
- require 'rubygems'
2
- require 'bench_press'
3
- begin gem 'odbc', '0.99992' ; rescue Gem::LoadError ; end
4
- require 'odbc'
5
-
6
- extend BenchPress
7
-
8
- author 'Ken Collins'
9
- summary 'Benchmarking ODBC Querys'
10
-
11
- reps 1_000
12
-
13
- @client = ODBC.connect ENV['TINYTDS_UNIT_DATASERVER'], 'tinytds', ''
14
- @client.use_time = true
15
-
16
- @query_nothing = "SELECT NULL AS [null]"
17
- @query_ints = "SELECT [int], [bigint], [smallint], [tinyint] FROM [datatypes]"
18
- @query_binaries = "SELECT [binary_50], [image], [varbinary_50] FROM [datatypes]"
19
- @query_bits = "SELECT [bit] FROM [datatypes]"
20
- @query_chars = "SELECT [char_10], [nchar_10], [ntext], [nvarchar_50], [text], [varchar_50] FROM [datatypes]"
21
- @query_dates = "SELECT [datetime], [smalldatetime] FROM [datatypes]"
22
- @query_decimals = "SELECT [decimal_9_2], [decimal_16_4], [numeric_18_0], [numeric_36_2] FROM [datatypes]"
23
- @query_floats = "SELECT [float], [real] FROM [datatypes]"
24
- @query_moneys = "SELECT [money], [smallmoney] FROM [datatypes]"
25
- @query_guids = "SELECT [uniqueidentifier] FROM [datatypes]"
26
- @query_all = "SELECT * FROM [datatypes]"
27
-
28
- def select_all(query)
29
- h = @client.run(query)
30
- h.fetch_all
31
- h.drop
32
- end
33
-
34
-
35
- measure "Nothing" do
36
- select_all @query_nothing
37
- end
38
-
39
- measure "Integers" do
40
- select_all @query_ints
41
- end
42
-
43
- measure "Binaries" do
44
- select_all @query_binaries
45
- end
46
-
47
- measure "Bits" do
48
- select_all @query_bits
49
- end
50
-
51
- measure "Chars" do
52
- select_all @query_chars
53
- end
54
-
55
- measure "Dates" do
56
- select_all @query_dates
57
- end
58
-
59
- measure "Decimals" do
60
- select_all @query_decimals
61
- end
62
-
63
- measure "Floats" do
64
- select_all @query_floats
65
- end
66
-
67
- measure "Moneys" do
68
- select_all @query_moneys
69
- end
70
-
71
- measure "Guids" do
72
- select_all @query_guids
73
- end
74
-
75
- measure "All" do
76
- select_all @query_all
77
- end
78
-
79
-
80
- =begin
81
-
82
- System Information
83
- ------------------
84
- Operating System: Mac OS X 10.6.4 (10F569)
85
- CPU: Intel Core 2 Duo 2.4 GHz
86
- Processor Count: 2
87
- Memory: 4 GB
88
- ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10.4.0]
89
-
90
- "Nothing" is up to 98% faster over 1,000 repetitions
91
- ----------------------------------------------------
92
-
93
- Nothing 0.297961950302124 secs Fastest
94
- Bits 0.377611875534058 secs 21% Slower
95
- Guids 0.381000995635986 secs 21% Slower
96
- Moneys 0.405518054962158 secs 26% Slower
97
- Floats 0.409428119659424 secs 27% Slower
98
- Integers 0.448167085647583 secs 33% Slower
99
- Decimals 0.471596956253052 secs 36% Slower
100
- Dates 0.52501106262207 secs 43% Slower
101
- Binaries 3.66349482536316 secs 91% Slower
102
- Chars 6.82928085327148 secs 95% Slower
103
- All 28.4982612133026 secs 98% Slower
104
-
105
- =end
106
-