excon 0.49.0 → 0.88.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTORS.md +33 -3
  3. data/LICENSE.md +1 -1
  4. data/README.md +77 -7
  5. data/data/cacert.pem +1279 -1940
  6. data/excon.gemspec +32 -170
  7. data/lib/excon/connection.rb +257 -154
  8. data/lib/excon/constants.rb +44 -16
  9. data/lib/excon/error.rb +229 -0
  10. data/lib/excon/extensions/uri.rb +1 -0
  11. data/lib/excon/headers.rb +5 -3
  12. data/lib/excon/instrumentors/logging_instrumentor.rb +48 -0
  13. data/lib/excon/instrumentors/standard_instrumentor.rb +21 -0
  14. data/lib/excon/middlewares/base.rb +7 -0
  15. data/lib/excon/middlewares/capture_cookies.rb +2 -1
  16. data/lib/excon/middlewares/decompress.rb +3 -2
  17. data/lib/excon/middlewares/escape_path.rb +1 -0
  18. data/lib/excon/middlewares/expects.rb +8 -1
  19. data/lib/excon/middlewares/idempotent.rb +27 -3
  20. data/lib/excon/middlewares/instrumentor.rb +9 -0
  21. data/lib/excon/middlewares/mock.rb +14 -4
  22. data/lib/excon/middlewares/redirect_follower.rb +28 -4
  23. data/lib/excon/middlewares/response_parser.rb +4 -0
  24. data/lib/excon/pretty_printer.rb +2 -8
  25. data/lib/excon/response.rb +16 -12
  26. data/lib/excon/socket.rb +56 -36
  27. data/lib/excon/ssl_socket.rb +70 -25
  28. data/lib/excon/test/plugin/server/exec.rb +26 -0
  29. data/lib/excon/test/plugin/server/puma.rb +23 -0
  30. data/lib/excon/test/plugin/server/unicorn.rb +38 -0
  31. data/lib/excon/test/plugin/server/webrick.rb +26 -0
  32. data/lib/excon/test/server.rb +106 -0
  33. data/lib/excon/unix_socket.rb +2 -0
  34. data/lib/excon/utils.rb +65 -10
  35. data/lib/excon/version.rb +4 -0
  36. data/lib/excon.rb +35 -20
  37. metadata +69 -87
  38. data/Gemfile +0 -19
  39. data/Gemfile.lock +0 -285
  40. data/Rakefile +0 -144
  41. data/benchmarks/class_vs_lambda.rb +0 -50
  42. data/benchmarks/concat_vs_insert.rb +0 -21
  43. data/benchmarks/concat_vs_interpolate.rb +0 -21
  44. data/benchmarks/cr_lf.rb +0 -21
  45. data/benchmarks/downcase-eq-eq_vs_casecmp.rb +0 -169
  46. data/benchmarks/excon.rb +0 -69
  47. data/benchmarks/excon_vs.rb +0 -165
  48. data/benchmarks/for_vs_array_each.rb +0 -27
  49. data/benchmarks/for_vs_hash_each.rb +0 -27
  50. data/benchmarks/has_key-vs-lookup.rb +0 -177
  51. data/benchmarks/headers_case_sensitivity.rb +0 -83
  52. data/benchmarks/headers_split_vs_match.rb +0 -34
  53. data/benchmarks/implicit_block-vs-explicit_block.rb +0 -98
  54. data/benchmarks/merging.rb +0 -21
  55. data/benchmarks/single_vs_double_quotes.rb +0 -21
  56. data/benchmarks/string_ranged_index.rb +0 -87
  57. data/benchmarks/strip_newline.rb +0 -115
  58. data/benchmarks/vs_stdlib.rb +0 -82
  59. data/changelog.txt +0 -959
  60. data/lib/excon/errors.rb +0 -172
  61. data/lib/excon/standard_instrumentor.rb +0 -27
  62. data/tests/authorization_header_tests.rb +0 -33
  63. data/tests/bad_tests.rb +0 -47
  64. data/tests/basic_tests.rb +0 -334
  65. data/tests/complete_responses.rb +0 -31
  66. data/tests/data/127.0.0.1.cert.crt +0 -14
  67. data/tests/data/127.0.0.1.cert.key +0 -15
  68. data/tests/data/excon.cert.crt +0 -14
  69. data/tests/data/excon.cert.key +0 -15
  70. data/tests/data/xs +0 -1
  71. data/tests/errors_tests.rb +0 -58
  72. data/tests/header_tests.rb +0 -119
  73. data/tests/middlewares/canned_response_tests.rb +0 -34
  74. data/tests/middlewares/capture_cookies_tests.rb +0 -34
  75. data/tests/middlewares/decompress_tests.rb +0 -157
  76. data/tests/middlewares/escape_path_tests.rb +0 -36
  77. data/tests/middlewares/idempotent_tests.rb +0 -131
  78. data/tests/middlewares/instrumentation_tests.rb +0 -312
  79. data/tests/middlewares/mock_tests.rb +0 -293
  80. data/tests/middlewares/redirect_follower_tests.rb +0 -80
  81. data/tests/pipeline_tests.rb +0 -40
  82. data/tests/proxy_tests.rb +0 -306
  83. data/tests/query_string_tests.rb +0 -87
  84. data/tests/rackups/basic.rb +0 -41
  85. data/tests/rackups/basic.ru +0 -3
  86. data/tests/rackups/basic_auth.ru +0 -14
  87. data/tests/rackups/deflater.ru +0 -4
  88. data/tests/rackups/proxy.ru +0 -18
  89. data/tests/rackups/query_string.ru +0 -13
  90. data/tests/rackups/redirecting.ru +0 -23
  91. data/tests/rackups/redirecting_with_cookie.ru +0 -40
  92. data/tests/rackups/request_headers.ru +0 -15
  93. data/tests/rackups/request_methods.ru +0 -21
  94. data/tests/rackups/response_header.ru +0 -18
  95. data/tests/rackups/ssl.ru +0 -16
  96. data/tests/rackups/ssl_mismatched_cn.ru +0 -15
  97. data/tests/rackups/ssl_verify_peer.ru +0 -16
  98. data/tests/rackups/streaming.ru +0 -30
  99. data/tests/rackups/thread_safety.ru +0 -17
  100. data/tests/rackups/timeout.ru +0 -14
  101. data/tests/rackups/webrick_patch.rb +0 -34
  102. data/tests/request_headers_tests.rb +0 -21
  103. data/tests/request_method_tests.rb +0 -47
  104. data/tests/request_tests.rb +0 -59
  105. data/tests/response_tests.rb +0 -197
  106. data/tests/servers/bad.rb +0 -20
  107. data/tests/servers/eof.rb +0 -17
  108. data/tests/servers/error.rb +0 -20
  109. data/tests/servers/good.rb +0 -350
  110. data/tests/test_helper.rb +0 -306
  111. data/tests/thread_safety_tests.rb +0 -39
  112. data/tests/timeout_tests.rb +0 -12
  113. data/tests/utils_tests.rb +0 -81
data/Gemfile.lock DELETED
@@ -1,285 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- excon (0.49.0)
5
-
6
- GEM
7
- remote: http://rubygems.org/
8
- specs:
9
- activesupport (3.2.6)
10
- i18n (~> 0.6)
11
- multi_json (~> 1.0)
12
- backports (3.6.4)
13
- bouncy-castle-java (1.5.0147)
14
- chronic (0.6.7)
15
- delorean (2.0.0)
16
- chronic
17
- eventmachine (1.0.4)
18
- eventmachine (1.0.4-java)
19
- ffi2-generators (0.1.1)
20
- formatador (0.2.3)
21
- i18n (0.6.0)
22
- jruby-openssl (0.8.8)
23
- bouncy-castle-java (>= 1.5.0147)
24
- json (1.8.2)
25
- json (1.8.2-java)
26
- kgio (2.9.2)
27
- minitest (4.7.5)
28
- multi_json (1.3.6)
29
- open4 (1.3.0)
30
- rack (1.6.0)
31
- rack-protection (1.2.0)
32
- rack
33
- rack-test (0.6.3)
34
- rack (>= 1.0)
35
- raindrops (0.13.0)
36
- rake (0.9.2.2)
37
- rdoc (3.12)
38
- json (~> 1.4)
39
- rubysl (2.0.14)
40
- rubysl-abbrev (~> 2.0)
41
- rubysl-base64 (~> 2.0)
42
- rubysl-benchmark (~> 2.0)
43
- rubysl-bigdecimal (~> 2.0)
44
- rubysl-cgi (~> 2.0)
45
- rubysl-cgi-session (~> 2.0)
46
- rubysl-cmath (~> 2.0)
47
- rubysl-complex (~> 2.0)
48
- rubysl-continuation (~> 2.0)
49
- rubysl-coverage (~> 2.0)
50
- rubysl-csv (~> 2.0)
51
- rubysl-curses (~> 2.0)
52
- rubysl-date (~> 2.0)
53
- rubysl-delegate (~> 2.0)
54
- rubysl-digest (~> 2.0)
55
- rubysl-drb (~> 2.0)
56
- rubysl-e2mmap (~> 2.0)
57
- rubysl-english (~> 2.0)
58
- rubysl-enumerator (~> 2.0)
59
- rubysl-erb (~> 2.0)
60
- rubysl-etc (~> 2.0)
61
- rubysl-expect (~> 2.0)
62
- rubysl-fcntl (~> 2.0)
63
- rubysl-fiber (~> 2.0)
64
- rubysl-fileutils (~> 2.0)
65
- rubysl-find (~> 2.0)
66
- rubysl-forwardable (~> 2.0)
67
- rubysl-getoptlong (~> 2.0)
68
- rubysl-gserver (~> 2.0)
69
- rubysl-io-console (~> 2.0)
70
- rubysl-io-nonblock (~> 2.0)
71
- rubysl-io-wait (~> 2.0)
72
- rubysl-ipaddr (~> 2.0)
73
- rubysl-irb (~> 2.0)
74
- rubysl-logger (~> 2.0)
75
- rubysl-mathn (~> 2.0)
76
- rubysl-matrix (~> 2.0)
77
- rubysl-mkmf (~> 2.0)
78
- rubysl-monitor (~> 2.0)
79
- rubysl-mutex_m (~> 2.0)
80
- rubysl-net-ftp (~> 2.0)
81
- rubysl-net-http (~> 2.0)
82
- rubysl-net-imap (~> 2.0)
83
- rubysl-net-pop (~> 2.0)
84
- rubysl-net-protocol (~> 2.0)
85
- rubysl-net-smtp (~> 2.0)
86
- rubysl-net-telnet (~> 2.0)
87
- rubysl-nkf (~> 2.0)
88
- rubysl-observer (~> 2.0)
89
- rubysl-open-uri (~> 2.0)
90
- rubysl-open3 (~> 2.0)
91
- rubysl-openssl (~> 2.0)
92
- rubysl-optparse (~> 2.0)
93
- rubysl-ostruct (~> 2.0)
94
- rubysl-pathname (~> 2.0)
95
- rubysl-prettyprint (~> 2.0)
96
- rubysl-prime (~> 2.0)
97
- rubysl-profile (~> 2.0)
98
- rubysl-profiler (~> 2.0)
99
- rubysl-pstore (~> 2.0)
100
- rubysl-pty (~> 2.0)
101
- rubysl-rational (~> 2.0)
102
- rubysl-readline (~> 2.0)
103
- rubysl-resolv (~> 2.0)
104
- rubysl-rexml (~> 2.0)
105
- rubysl-rinda (~> 2.0)
106
- rubysl-rss (~> 2.0)
107
- rubysl-scanf (~> 2.0)
108
- rubysl-securerandom (~> 2.0)
109
- rubysl-set (~> 2.0)
110
- rubysl-shellwords (~> 2.0)
111
- rubysl-singleton (~> 2.0)
112
- rubysl-socket (~> 2.0)
113
- rubysl-stringio (~> 2.0)
114
- rubysl-strscan (~> 2.0)
115
- rubysl-sync (~> 2.0)
116
- rubysl-syslog (~> 2.0)
117
- rubysl-tempfile (~> 2.0)
118
- rubysl-test-unit (~> 2.0)
119
- rubysl-thread (~> 2.0)
120
- rubysl-thwait (~> 2.0)
121
- rubysl-time (~> 2.0)
122
- rubysl-timeout (~> 2.0)
123
- rubysl-tmpdir (~> 2.0)
124
- rubysl-tsort (~> 2.0)
125
- rubysl-un (~> 2.0)
126
- rubysl-uri (~> 2.0)
127
- rubysl-weakref (~> 2.0)
128
- rubysl-webrick (~> 2.0)
129
- rubysl-xmlrpc (~> 2.0)
130
- rubysl-yaml (~> 2.0)
131
- rubysl-zlib (~> 2.0)
132
- rubysl-abbrev (2.0.4)
133
- rubysl-base64 (2.0.0)
134
- rubysl-benchmark (2.0.1)
135
- rubysl-bigdecimal (2.0.2)
136
- rubysl-cgi (2.0.1)
137
- rubysl-cgi-session (2.0.1)
138
- rubysl-cmath (2.0.0)
139
- rubysl-complex (2.0.0)
140
- rubysl-continuation (2.0.0)
141
- rubysl-coverage (2.0.3)
142
- rubysl-csv (2.0.2)
143
- rubysl-english (~> 2.0)
144
- rubysl-curses (2.0.0)
145
- rubysl-date (2.0.6)
146
- rubysl-delegate (2.0.1)
147
- rubysl-digest (2.0.3)
148
- rubysl-drb (2.0.1)
149
- rubysl-e2mmap (2.0.0)
150
- rubysl-english (2.0.0)
151
- rubysl-enumerator (2.0.0)
152
- rubysl-erb (2.0.1)
153
- rubysl-etc (2.0.3)
154
- ffi2-generators (~> 0.1)
155
- rubysl-expect (2.0.0)
156
- rubysl-fcntl (2.0.4)
157
- ffi2-generators (~> 0.1)
158
- rubysl-fiber (2.0.0)
159
- rubysl-fileutils (2.0.3)
160
- rubysl-find (2.0.1)
161
- rubysl-forwardable (2.0.1)
162
- rubysl-getoptlong (2.0.0)
163
- rubysl-gserver (2.0.0)
164
- rubysl-socket (~> 2.0)
165
- rubysl-thread (~> 2.0)
166
- rubysl-io-console (2.0.0)
167
- rubysl-io-nonblock (2.0.0)
168
- rubysl-io-wait (2.0.0)
169
- rubysl-ipaddr (2.0.0)
170
- rubysl-irb (2.0.4)
171
- rubysl-e2mmap (~> 2.0)
172
- rubysl-mathn (~> 2.0)
173
- rubysl-readline (~> 2.0)
174
- rubysl-thread (~> 2.0)
175
- rubysl-logger (2.0.0)
176
- rubysl-mathn (2.0.0)
177
- rubysl-matrix (2.1.0)
178
- rubysl-e2mmap (~> 2.0)
179
- rubysl-mkmf (2.0.1)
180
- rubysl-fileutils (~> 2.0)
181
- rubysl-shellwords (~> 2.0)
182
- rubysl-monitor (2.0.0)
183
- rubysl-mutex_m (2.0.0)
184
- rubysl-net-ftp (2.0.1)
185
- rubysl-net-http (2.0.4)
186
- rubysl-cgi (~> 2.0)
187
- rubysl-erb (~> 2.0)
188
- rubysl-singleton (~> 2.0)
189
- rubysl-net-imap (2.0.1)
190
- rubysl-net-pop (2.0.1)
191
- rubysl-net-protocol (2.0.1)
192
- rubysl-net-smtp (2.0.1)
193
- rubysl-net-telnet (2.0.0)
194
- rubysl-nkf (2.0.1)
195
- rubysl-observer (2.0.0)
196
- rubysl-open-uri (2.0.0)
197
- rubysl-open3 (2.0.0)
198
- rubysl-openssl (2.0.4)
199
- rubysl-optparse (2.0.1)
200
- rubysl-shellwords (~> 2.0)
201
- rubysl-ostruct (2.0.4)
202
- rubysl-pathname (2.0.0)
203
- rubysl-prettyprint (2.0.2)
204
- rubysl-prime (2.0.0)
205
- rubysl-profile (2.0.0)
206
- rubysl-profiler (2.0.1)
207
- rubysl-pstore (2.0.0)
208
- rubysl-pty (2.0.2)
209
- rubysl-rational (2.0.1)
210
- rubysl-readline (2.0.2)
211
- rubysl-resolv (2.0.0)
212
- rubysl-rexml (2.0.2)
213
- rubysl-rinda (2.0.0)
214
- rubysl-rss (2.0.0)
215
- rubysl-scanf (2.0.0)
216
- rubysl-securerandom (2.0.0)
217
- rubysl-set (2.0.1)
218
- rubysl-shellwords (2.0.0)
219
- rubysl-singleton (2.0.0)
220
- rubysl-socket (2.0.1)
221
- rubysl-stringio (2.0.0)
222
- rubysl-strscan (2.0.0)
223
- rubysl-sync (2.0.0)
224
- rubysl-syslog (2.0.1)
225
- ffi2-generators (~> 0.1)
226
- rubysl-tempfile (2.0.1)
227
- rubysl-test-unit (2.0.1)
228
- minitest (~> 4.7)
229
- rubysl-thread (2.0.2)
230
- rubysl-thwait (2.0.0)
231
- rubysl-time (2.0.3)
232
- rubysl-timeout (2.0.0)
233
- rubysl-tmpdir (2.0.0)
234
- rubysl-tsort (2.0.1)
235
- rubysl-un (2.0.0)
236
- rubysl-fileutils (~> 2.0)
237
- rubysl-optparse (~> 2.0)
238
- rubysl-uri (2.0.0)
239
- rubysl-weakref (2.0.0)
240
- rubysl-webrick (2.0.0)
241
- rubysl-xmlrpc (2.0.0)
242
- rubysl-yaml (2.0.3)
243
- rubysl-zlib (2.0.1)
244
- shindo (0.3.4)
245
- formatador (>= 0.1.1)
246
- sinatra (1.3.2)
247
- rack (~> 1.3, >= 1.3.6)
248
- rack-protection (~> 1.2)
249
- tilt (~> 1.3, >= 1.3.3)
250
- sinatra-contrib (1.3.2)
251
- backports (>= 2.0)
252
- eventmachine
253
- rack-protection
254
- rack-test
255
- sinatra (~> 1.3.0)
256
- tilt (~> 1.3)
257
- tilt (1.3.3)
258
- unicorn (4.8.3)
259
- kgio (~> 2.6)
260
- rack
261
- raindrops (~> 0.7)
262
-
263
- PLATFORMS
264
- java
265
- ruby
266
-
267
- DEPENDENCIES
268
- activesupport
269
- delorean
270
- eventmachine (>= 1.0.4)
271
- excon!
272
- jruby-openssl
273
- json (>= 1.8.2)
274
- open4
275
- rack (~> 1.6)
276
- rake
277
- rdoc
278
- rubysl (~> 2.0)
279
- shindo
280
- sinatra
281
- sinatra-contrib
282
- unicorn
283
-
284
- BUNDLED WITH
285
- 1.11.2
data/Rakefile DELETED
@@ -1,144 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'date'
4
- include Rake::DSL
5
- #############################################################################
6
- #
7
- # Helper functions
8
- #
9
- #############################################################################
10
-
11
- def name
12
- @name ||= Dir['*.gemspec'].first.split('.').first
13
- end
14
-
15
- def version
16
- line = File.read("lib/#{name}/constants.rb")[/^\s*VERSION\s*=\s*.*/]
17
- line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
18
- end
19
-
20
- def date
21
- Date.today.to_s
22
- end
23
-
24
- def rubyforge_project
25
- name
26
- end
27
-
28
- def gemspec_file
29
- "#{name}.gemspec"
30
- end
31
-
32
- def gem_file
33
- "#{name}-#{version}.gem"
34
- end
35
-
36
- def replace_header(head, header_name)
37
- head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
38
- end
39
-
40
- #############################################################################
41
- #
42
- # Standard tasks
43
- #
44
- #############################################################################
45
-
46
- require 'shindo/rake'
47
- Shindo::Rake.new
48
-
49
- task :default => :tests
50
-
51
- require 'rdoc/task'
52
- Rake::RDocTask.new do |rdoc|
53
- rdoc.rdoc_dir = 'rdoc'
54
- rdoc.title = "#{name} #{version}"
55
- rdoc.rdoc_files.include('README*')
56
- rdoc.rdoc_files.include('lib/**/*.rb')
57
- end
58
-
59
- desc "Open an irb session preloaded with this library"
60
- task :console do
61
- sh "irb -rubygems -r ./lib/#{name}.rb"
62
- end
63
-
64
- #############################################################################
65
- #
66
- # Custom tasks (add your own tasks here)
67
- #
68
- #############################################################################
69
-
70
-
71
-
72
- #############################################################################
73
- #
74
- # Packaging tasks
75
- #
76
- #############################################################################
77
-
78
- task :release => [:update_certs, :build] do
79
- unless `git branch` =~ /^\* master$/
80
- puts "You must be on the master branch to release!"
81
- exit!
82
- end
83
- sh "gem install pkg/#{name}-#{version}.gem"
84
- sh "git commit --allow-empty -a -m 'Release #{version}'"
85
- sh "git tag v#{version}"
86
- sh "git push origin master"
87
- sh "git push origin v#{version}"
88
- sh "gem push pkg/#{name}-#{version}.gem"
89
- end
90
-
91
- task :build => :gemspec do
92
- sh "mkdir -p pkg"
93
- sh "gem build #{gemspec_file}"
94
- sh "mv #{gem_file} pkg"
95
- end
96
-
97
- task :gemspec => :validate do
98
- # read spec file and split out manifest section
99
- spec = File.read(gemspec_file)
100
- head, manifest, tail = spec.split(" # = MANIFEST =\n")
101
-
102
- # replace name version and date
103
- replace_header(head, :name)
104
- replace_header(head, :version)
105
- replace_header(head, :date)
106
- #comment this out if your rubyforge_project has a different name
107
- replace_header(head, :rubyforge_project)
108
-
109
- # determine file list from git ls-files
110
- files = `git ls-files`.
111
- split("\n").
112
- sort.
113
- reject { |file| file =~ /^\./ }.
114
- reject { |file| file =~ /^(rdoc|pkg)/ }.
115
- map { |file| " #{file}" }.
116
- join("\n")
117
-
118
- # piece file back together and write
119
- manifest = " s.files = %w[\n#{files}\n ]\n"
120
- spec = [head, manifest, tail].join(" # = MANIFEST =\n")
121
- File.open(gemspec_file, 'w') { |io| io.write(spec) }
122
- puts "Updated #{gemspec_file}"
123
- end
124
-
125
- task :validate do
126
- libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
127
- unless libfiles.empty?
128
- puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
129
- exit!
130
- end
131
- unless Dir['VERSION*'].empty?
132
- puts "A `VERSION` file at root level violates Gem best practices."
133
- exit!
134
- end
135
- end
136
-
137
- desc "update bundled certs"
138
- task :update_certs do
139
- require File.join(File.dirname(__FILE__), 'lib', 'excon')
140
- File.open(File.join(File.dirname(__FILE__), 'data', 'cacert.pem'), 'w') do |file|
141
- data = Excon.get("https://curl.haxx.se/ca/cacert.pem").body
142
- file.write(data)
143
- end
144
- end
@@ -1,50 +0,0 @@
1
- require 'rubygems'
2
- require 'tach'
3
-
4
- class Concatenator
5
- def initialize(string)
6
- @string = string
7
- end
8
-
9
- def call(data)
10
- @string << data
11
- end
12
- end
13
-
14
- string = "0123456789ABCDEF"
15
-
16
- Tach.meter(100_000) do
17
- tach('class') do
18
- s = ""
19
- obj = Concatenator.new(s)
20
- 10.times { obj.call(string) }
21
- end
22
-
23
- tach('lambda') do
24
- s = ""
25
- obj = lambda {|data| s << data }
26
- 10.times { obj.call(string) }
27
- end
28
- end
29
-
30
- # ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]
31
- #
32
- # +--------+----------+
33
- # | tach | total |
34
- # +--------+----------+
35
- # | class | 1.450284 |
36
- # +--------+----------+
37
- # | lambda | 2.506496 |
38
- # +--------+----------+
39
-
40
- # ruby 1.8.7 (2010-12-23 patchlevel 330) [x86_64-linux]
41
- #
42
- # +--------+----------+
43
- # | tach | total |
44
- # +--------+----------+
45
- # | class | 1.373917 |
46
- # +--------+----------+
47
- # | lambda | 2.589384 |
48
- # +--------+----------+
49
-
50
-
@@ -1,21 +0,0 @@
1
- require 'rubygems'
2
- require 'tach'
3
-
4
- Tach.meter(1_000_000) do
5
- tach('concat') do
6
- path = 'path'
7
- path = '/' << path
8
- end
9
- tach('insert') do
10
- path = 'path'
11
- path.insert(0, '/')
12
- end
13
- end
14
-
15
- # +--------+----------+
16
- # | tach | total |
17
- # +--------+----------+
18
- # | insert | 0.974036 |
19
- # +--------+----------+
20
- # | concat | 0.998904 |
21
- # +--------+----------+
@@ -1,21 +0,0 @@
1
- require 'rubygems'
2
- require 'tach'
3
-
4
- key = 'Content-Length'
5
- value = '100'
6
- Tach.meter(1_000) do
7
- tach('concat') do
8
- key << ': ' << value << "\r\n"
9
- end
10
- tach('interpolate') do
11
- "#{key}: value\r\n"
12
- end
13
- end
14
-
15
- # +-------------+----------+
16
- # | tach | total |
17
- # +-------------+----------+
18
- # | concat | 0.000902 |
19
- # +-------------+----------+
20
- # | interpolate | 0.019667 |
21
- # +-------------+----------+
data/benchmarks/cr_lf.rb DELETED
@@ -1,21 +0,0 @@
1
- require 'rubygems'
2
- require 'tach'
3
-
4
- CR_LF = "\r\n"
5
-
6
- Tach.meter(1_000_000) do
7
- tach('constant') do
8
- '' << CR_LF
9
- end
10
- tach('string') do
11
- '' << "\r\n"
12
- end
13
- end
14
-
15
- # +----------+----------+
16
- # | tach | total |
17
- # +----------+----------+
18
- # | constant | 0.819885 |
19
- # +----------+----------+
20
- # | string | 0.893602 |
21
- # +----------+----------+
@@ -1,169 +0,0 @@
1
- # Copied from my benchmark_hell repo: github.com/sgonyea/benchmark_hell
2
-
3
- require 'benchmark'
4
-
5
- iters = 1000000
6
-
7
- comp = "hello"
8
- hello = "HelLo"
9
-
10
- puts 'String#downcase == vs. String#casecmp'
11
- Benchmark.bmbm do |x|
12
- x.report('String#downcase1') do
13
- iters.times.each do
14
- hello.downcase == comp
15
- end
16
- end
17
-
18
- x.report('String#downcase2') do
19
- iters.times.each do
20
- "HelLo".downcase == "hello"
21
- end
22
- end
23
-
24
- x.report('String#downcase3') do
25
- iters.times.each do
26
- var = "HelLo"
27
- var.downcase!
28
- var == "hello"
29
- end
30
- end
31
-
32
- x.report('casecmp1') do
33
- iters.times.each do
34
- hello.casecmp(comp).zero?
35
- end
36
- end
37
-
38
- x.report('casecmp1-1') do
39
- iters.times.each do
40
- hello.casecmp(comp) == 0
41
- end
42
- end
43
-
44
- x.report('casecmp2') do
45
- iters.times.each do
46
- "HelLo".casecmp(comp).zero?
47
- end
48
- end
49
-
50
- x.report('casecmp2-1') do
51
- iters.times.each do
52
- "HelLo".casecmp(comp) == 0
53
- end
54
- end
55
- end
56
-
57
- =begin
58
- rvm exec bash -c 'echo && echo $RUBY_VERSION && echo && ruby downcase-eq-eq_vs_casecmp.rb'
59
-
60
- jruby-1.5.6
61
-
62
- String#downcase == vs. String#casecmp
63
- Rehearsal ----------------------------------------------------
64
- String#downcase1 0.461000 0.000000 0.461000 ( 0.387000)
65
- String#downcase2 0.269000 0.000000 0.269000 ( 0.269000)
66
- String#downcase3 0.224000 0.000000 0.224000 ( 0.224000)
67
- casecmp1 0.157000 0.000000 0.157000 ( 0.157000)
68
- casecmp1-1 0.153000 0.000000 0.153000 ( 0.153000)
69
- casecmp2 0.163000 0.000000 0.163000 ( 0.163000)
70
- casecmp2-1 0.163000 0.000000 0.163000 ( 0.163000)
71
- ------------------------------------------- total: 1.590000sec
72
-
73
- user system total real
74
- String#downcase1 0.190000 0.000000 0.190000 ( 0.191000)
75
- String#downcase2 0.225000 0.000000 0.225000 ( 0.225000)
76
- String#downcase3 0.190000 0.000000 0.190000 ( 0.190000)
77
- casecmp1 0.125000 0.000000 0.125000 ( 0.125000)
78
- casecmp1-1 0.127000 0.000000 0.127000 ( 0.127000)
79
- casecmp2 0.144000 0.000000 0.144000 ( 0.144000)
80
- casecmp2-1 0.147000 0.000000 0.147000 ( 0.147000)
81
-
82
- macruby-0.7.1
83
-
84
- String#downcase == vs. String#casecmp
85
- Rehearsal ----------------------------------------------------
86
- String#downcase1 2.340000 0.040000 2.380000 ( 1.765141)
87
- String#downcase2 5.510000 0.100000 5.610000 ( 3.893249)
88
- String#downcase3 4.200000 0.080000 4.280000 ( 3.031621)
89
- casecmp1 0.270000 0.000000 0.270000 ( 0.267613)
90
- casecmp1-1 0.190000 0.000000 0.190000 ( 0.188848)
91
- casecmp2 1.450000 0.020000 1.470000 ( 1.027956)
92
- casecmp2-1 1.380000 0.030000 1.410000 ( 0.951474)
93
- ------------------------------------------ total: 15.610000sec
94
-
95
- user system total real
96
- String#downcase1 2.350000 0.040000 2.390000 ( 1.774292)
97
- String#downcase2 5.890000 0.120000 6.010000 ( 4.214038)
98
- String#downcase3 4.530000 0.090000 4.620000 ( 3.286059)
99
- casecmp1 0.270000 0.000000 0.270000 ( 0.271119)
100
- casecmp1-1 0.190000 0.000000 0.190000 ( 0.189462)
101
- casecmp2 1.540000 0.030000 1.570000 ( 1.104751)
102
- casecmp2-1 1.440000 0.030000 1.470000 ( 0.999689)
103
-
104
- rbx-head
105
-
106
- String#downcase == vs. String#casecmp
107
- Rehearsal ----------------------------------------------------
108
- String#downcase1 0.702746 0.005229 0.707975 ( 0.621969)
109
- String#downcase2 0.701429 0.001617 0.703046 ( 0.691833)
110
- String#downcase3 1.042835 0.002952 1.045787 ( 0.953992)
111
- casecmp1 0.654571 0.002239 0.656810 ( 0.480158)
112
- casecmp1-1 0.484706 0.001105 0.485811 ( 0.398601)
113
- casecmp2 0.564140 0.001579 0.565719 ( 0.545332)
114
- casecmp2-1 0.554889 0.001153 0.556042 ( 0.539569)
115
- ------------------------------------------- total: 4.721190sec
116
-
117
- user system total real
118
- String#downcase1 0.491199 0.001081 0.492280 ( 0.493727)
119
- String#downcase2 0.631059 0.001018 0.632077 ( 0.629885)
120
- String#downcase3 0.968867 0.002504 0.971371 ( 0.976734)
121
- casecmp1 0.364496 0.000434 0.364930 ( 0.365262)
122
- casecmp1-1 0.373140 0.000562 0.373702 ( 0.374136)
123
- casecmp2 0.487644 0.001057 0.488701 ( 0.490302)
124
- casecmp2-1 0.469868 0.001178 0.471046 ( 0.472220)
125
-
126
- ruby-1.8.7-p330
127
-
128
- String#downcase == vs. String#casecmp
129
- Rehearsal ----------------------------------------------------
130
- String#downcase1 0.780000 0.000000 0.780000 ( 0.783979)
131
- String#downcase2 0.950000 0.000000 0.950000 ( 0.954109)
132
- String#downcase3 0.960000 0.000000 0.960000 ( 0.960554)
133
- casecmp1 0.440000 0.000000 0.440000 ( 0.442546)
134
- casecmp1-1 0.490000 0.000000 0.490000 ( 0.487795)
135
- casecmp2 0.530000 0.000000 0.530000 ( 0.535819)
136
- casecmp2-1 0.570000 0.000000 0.570000 ( 0.574653)
137
- ------------------------------------------- total: 4.720000sec
138
-
139
- user system total real
140
- String#downcase1 0.780000 0.000000 0.780000 ( 0.780692)
141
- String#downcase2 0.980000 0.010000 0.990000 ( 0.982925)
142
- String#downcase3 0.960000 0.000000 0.960000 ( 0.961501)
143
- casecmp1 0.440000 0.000000 0.440000 ( 0.444528)
144
- casecmp1-1 0.490000 0.000000 0.490000 ( 0.487437)
145
- casecmp2 0.540000 0.000000 0.540000 ( 0.537686)
146
- casecmp2-1 0.570000 0.000000 0.570000 ( 0.574253)
147
-
148
- ruby-1.9.2-p136
149
-
150
- String#downcase == vs. String#casecmp
151
- Rehearsal ----------------------------------------------------
152
- String#downcase1 0.750000 0.000000 0.750000 ( 0.750523)
153
- String#downcase2 1.190000 0.000000 1.190000 ( 1.193346)
154
- String#downcase3 1.030000 0.010000 1.040000 ( 1.036435)
155
- casecmp1 0.640000 0.000000 0.640000 ( 0.640327)
156
- casecmp1-1 0.480000 0.000000 0.480000 ( 0.484709) # With all this crap running, some flukes pop out
157
- casecmp2 0.820000 0.000000 0.820000 ( 0.822223)
158
- casecmp2-1 0.660000 0.000000 0.660000 ( 0.664190)
159
- ------------------------------------------- total: 5.580000sec
160
-
161
- user system total real
162
- String#downcase1 0.760000 0.000000 0.760000 ( 0.759816)
163
- String#downcase2 1.150000 0.010000 1.160000 ( 1.150792)
164
- String#downcase3 1.000000 0.000000 1.000000 ( 1.005549)
165
- casecmp1 0.650000 0.000000 0.650000 ( 0.644021)
166
- casecmp1-1 0.490000 0.000000 0.490000 ( 0.494456)
167
- casecmp2 0.820000 0.000000 0.820000 ( 0.817689)
168
- casecmp2-1 0.680000 0.000000 0.680000 ( 0.685121)
169
- =end