Compare commits

...

603 Commits

Author SHA1 Message Date
Tyler Brock 9be394b623 Merge pull request #104 from seamusabshere/from_uri_implicit_arg
Make ENV['MONGODB_URI'] the default first arg for `Mongo::Connection.from_uri`
2012-06-04 20:59:35 -07:00
Tyler Brock c0a4ae6b44 Merge pull request #103 from seamusabshere/ruby_18_url_decoding
Since `URI.decode_www_form` is Ruby 1.9-only, use `CGI.parse` instead
2012-06-04 20:58:47 -07:00
Tyler Brock 4195ce35c6 Merge pull request #105 from ukd1/patch-1
Fix broken links in github
2012-06-04 20:55:26 -07:00
Russell Smith f60301e43d Fix broken links in github 2012-06-04 19:34:52 -07:00
Seamus Abshere 90773ebeb8 Make ENV['MONGODB_URI'] the default first arg for `Mongo::Connection.from_uri` 2012-06-04 12:57:01 -05:00
Seamus Abshere d88e6d730f Since it's confusing anyway that CGI.parse returns values as arrays, use an array-specific method (as opposed to one that could be for strings or hashes) to access it 2012-06-04 12:55:31 -05:00
Seamus Abshere d8f94e6f63 Since `URI.decode_www_form` is Ruby 1.9-only, use `CGI.parse` instead
Conflicts:
	lib/mongo/util/uri_parser.rb - replaced @TylerBrock's (temp?) fix with this one, which uses the stdlib
	test/uri_test.rb - reintroduced test for conflicting URL separators... and added a new test for URL-encoded parts
2012-06-04 12:54:48 -05:00
Tyler Brock 9d859d2b5c minor: URI.decode_www_form not available pre 1.9.x, alternative solution 2012-06-04 13:24:30 -04:00
John Bintz 89d2130306 add test for save_chunk fix 2012-06-04 13:24:30 -04:00
John Bintz f93e05de83 use collection#save instead of collection#insert to save gridio chunks so that replacement chunks overwrite existing ones 2012-06-04 13:24:30 -04:00
Seamus Abshere 1454210d9f Use ENV["MONGODB_URI"] if available. 2012-06-04 13:24:30 -04:00
Tyler Brock 351eeb65a2 minor: read preference test fix
Secondary to remove is randomly chosen so test would randomly fail
before this fix.
2012-06-04 13:23:56 -04:00
Tyler Brock 4df2564519 RUBY-444
Additional fix for threading tests to ensure a manager for a new thread is always set.
2012-06-01 15:47:10 -04:00
Tyler Brock a3555ba404 minor: logger fix for mocha tests that expect an non-hash argument 2012-06-01 15:16:05 -04:00
Tyler Brock c76160c2f2 Merge pull request #97 from asinbow/fix_log_debug_level_detect
fix log debug level detect
2012-06-01 11:38:37 -07:00
Tyler Brock 4c032c4d31 Merge pull request #101 from farrel/master
Added BSON::ObjectId#to_ary
2012-06-01 11:33:52 -07:00
Tyler Brock 291a9334b6 RUBY-444
During a refresh Thread.current[:managers] has the potential to be nil.

This fix checks to make sure Thread.current[:managers] exists before
trying to access the managers hash.
2012-06-01 14:20:25 -04:00
Tyler Brock f55fc95bf4 RUBY-432
Do not encode strings to utf-8 after checking that utf-8 is valid.

Before this fix, an encoding operation could turn valid utf-8 into
invalid utf-8 if an encoding that requires conversion is forced on a
valid string.
2012-06-01 14:20:15 -04:00
Tyler Brock ad8a933cd4 minor: fix extension compile errors 2012-06-01 13:11:00 -04:00
Tyler Brock 65a1ecc42d RUBY-441
Remove connect_nonblock from tcp_socket implementation to reduce
problems due to inconsistent implementation in JRuby and Windows.

Connection timeouts are now reverted to using the timeout module for all
platforms.
2012-06-01 12:25:42 -04:00
Tyler Brock b23be322c0 minor: adding devkit to Rakefile for windows 2012-05-30 15:10:49 -04:00
Tyler Brock 6c102f36c2 minor: rake task to compile and test c extension 2012-05-30 14:06:55 -04:00
Tyler Brock cf4cecb417 minor: remove perftools 2012-05-30 13:54:57 -04:00
Tyler Brock b7d34071b5 Merge pull request #102 from balexand/patch-1
Fix copy-paste mistake in doc comment
2012-05-29 14:20:21 -07:00
Brian Alexander beea7d1320 Fix copy-paste mistake in doc comment 2012-05-29 15:05:50 -06:00
Farrel Lifson 078354a39a Added BSON::ObjectId#to_ary 2012-05-26 01:16:11 +02:00
Kyle Banker 5591e3dfe3 RUBY-444 keep multiple replica set connections separate 2012-05-25 13:58:07 -04:00
gjmurakami-10gen 3e04550e34 Merge pull request #100 from kzk/master
b2json,j2bson: don't assume fixed ruby location
2012-05-22 11:10:50 -07:00
Kazuki Ohta 23b75ed5fc b2json,j2bson: don't assume fixed ruby location 2012-05-20 20:24:45 +09:00
Tyler Brock 823abc2ad9 minor: authors++ 2012-05-16 09:45:12 -04:00
Tyler Brock 6acf9df49e minor: removing bson_ext from Gemfile 2012-05-15 16:57:27 -04:00
Tyler Brock 9b38c3a70f minor: JRUBY hacks 2012-05-15 16:52:59 -04:00
Tyler Brock 746687bb86 minor: testing fixes 2012-05-15 16:52:58 -04:00
Tyler Brock 2de3dcab94 RUBY-442
Using sysread so Ruby 1.8.x won't complain about nonblocking IO#read
2012-05-15 16:52:58 -04:00
Tyler Brock d86c4d95f7 RUBY-435
Use rb_time_num_new for Time value when available (Ruby >= 1.9)
2012-05-15 16:52:53 -04:00
gjmurakami-10gen f5dc37fe68 Merge pull request #98 from ismell/patch-1
Fixed a typo
2012-05-14 13:57:07 -07:00
Raul E Rangel e6c084345b Fixed a typo 2012-05-14 14:20:51 -06:00
Tyler Brock 8a49614c7e RUBY-437
Document batchSize better
2012-05-14 16:03:08 -04:00
Tyler Brock 6663660d92 RUBY-442
Use read instead of readpartial.
Rescue ETIMEDOUT and raise appropriate ConnectionError
2012-05-14 16:03:08 -04:00
Gary Murakami 71650076de documentation improvements for Yard/Ydoc newbies, also relative links replace absolute links where possible so that the user is left with the exact version and not forced to current web docs, in accordance with DOCS-197 2012-05-14 11:54:28 -04:00
Gary Murakami 7b7171e478 Performance test and graphing improvements, includes results and graphs for safe mode, find one, and find many. 2012-05-11 15:19:38 -04:00
Gary Murakami 2be7a46b93 Performance test and graphing improvements. 2012-05-04 17:16:57 -04:00
Gary Murakami 50d6902d80 Revert cbson.c, to be revisited for malloc/free reduction.
README.md has API Documentation note at the top to help users match documentation to driver version, DOCS-197.
 Expanded performance tests, for insert with multiple docs.
2012-05-03 16:43:12 -04:00
Gary Murakami ca7bf209dd DOCS-197 Fully qualify examples in the code with Mongo:: 2012-05-02 17:43:54 -04:00
Gary Murakami 962c4f2f2e eliminate last explicit malloc/free for array key name, more performance measurements 2012-04-30 17:22:01 -04:00
asinbow.wang 56968e8ad3 fix log debug level detect
* reason
  there hardcodes DEBUG_LEVEL in logging.rb:
    DEBUG_LEVEL = defined?(Logger) ? Logger::DEBUG : 0
  this could cause some incompatibility between different logger tools

  for Logger, DEBUG/0 < INFO/1 < WARN/2 < ERROR/3 < FATAL/4,
  for Log4r,  ALL/0 < DETAIL/1 < DEBUG/2 < INFO/3 < WARN/4 < ERROR/5 < FATAL/6.

  anyway, it is not in good pattern.

* suggestion
  logger.debug { ... }
  if current level is greater than DEBUG, the block will not be
  evaluated. it is also efficient.

  following is also supported by most loggers.
  logger.info { ... }
  logger.warn { ... }
  logger.error { ... }
  ...
2012-04-27 15:26:49 +08:00
Tyler Brock d176c2a0f3 RUBY-436 Handle IRB::Abort Exception 2012-04-26 13:53:21 -04:00
Gary Murakami 7384585d98 write_element optimization for T_ARRAY to only allocate the buffer for the index key once instead of repeatedly for every index. This results in a 2.5x improvement for array sizes around 32. Also includes improvements to the performance tests and graphs, with plothover to show [x,y] values. 2012-04-25 17:15:31 -04:00
Gary Murakami bc5944899b Merge branch 'master' of github.com:mongodb/mongo-ruby-driver
Conflicts:
	Gemfile
2012-04-25 11:05:00 -04:00
Tyler Brock f5efe08d91 minor: Gemfile fix 2012-04-24 15:25:35 -04:00
Tyler Brock c11799abb1 possible date fix 2012-04-24 14:57:55 -04:00
Gary Murakami d3955e0346 performance graphing and profiling improvements 2012-04-24 13:52:59 -04:00
Tyler Brock b3a9d93096 RUBY-436 Handle IRB::Abort Exception 2012-04-24 13:52:51 -04:00
Gary Murakami 6f2b7624cf performance graphing and profiling improvements 2012-04-24 12:35:33 -04:00
Tyler Brock 4c717f0873 RUBY-436 Handle IRB::Abort Exception 2012-04-23 16:58:11 -04:00
Gary Murakami ecafeed637 [Gary] Ruby versus C graphs 2012-04-17 09:25:11 -04:00
Gary Murakami ba0de1bc26 [Gary] profiling for both C and Ruby 2012-04-16 17:28:48 -04:00
Gary Murakami 52cbaa689f [Gary] profile_array $LOAD_PATH, Gemfile tweaks 2012-04-11 11:56:45 -04:00
Gary Murakami 64c87e93a3 [Gary] require test_helper edits to work everywhere including via IDE (RubyMine), Gemfile for JRuby 2012-04-11 11:08:04 -04:00
Tyler Brock 4ca05fe138 minor: added section on sorting to tutorial 2012-04-10 23:10:52 -04:00
Gary Murakami e57b469505 [Gary] ruby-prof for bench profiling 2012-04-09 11:42:01 -04:00
Gary Murakami 2390578805 [Gary] exp series benchmark tests for performance and profiling 2012-04-09 11:39:57 -04:00
Tyler Brock 00cea59c10 minor: refactor TCP_NODELAY 2012-04-08 10:48:25 -04:00
Tyler Brock 95a831c0b3 RELEASE 1.6.2 2012-04-05 13:51:20 -04:00
Tyler Brock ca6f4ecaa5 RUBY-433 prevent additonal possible IOError 2012-04-05 12:47:58 -04:00
Tyler Brock 0bd7d3830d RUBY-429 wrap IO errors from select and read 2012-04-05 12:47:17 -04:00
Tyler Brock dfca0dd134 minor: disable refresh with threads for 1.8x 2012-04-05 12:45:34 -04:00
Tyler Brock 4f9aceacf4 RUBY-433 fixes IOError stream closed 2012-04-05 10:52:13 -04:00
Tyler Brock a5b5d5e3e3 RUBY-429 tweaks to rescued errors 2012-04-04 20:45:29 -04:00
Tyler Brock 58f0ee8fff RUBY-429 rescue granularity 2012-04-04 20:12:36 -04:00
Tyler Brock b2a1841f9c minor: test fix for legacy mongo 2012-04-04 19:10:02 -04:00
Tyler Brock d42eee278b minor: testing fixes, cleaning output 2012-04-04 16:44:01 -04:00
Tyler Brock c992369918 minor: more testing fixes 2012-04-04 15:48:32 -04:00
Tyler Brock 7337a06311 RUBY-429 rescue additional socket and IO errors 2012-04-04 15:10:58 -04:00
Tyler Brock f58b56a4ee minor: testing cleanup, suppress mongod startup output in rs tests 2012-04-04 15:10:11 -04:00
Tyler Brock 76bf4dffe5 RUBY-429 rescue and raise appropriate errors 2012-04-04 13:51:04 -04:00
Tyler Brock 92af319412 minor: test cleanup 2012-04-04 13:51:04 -04:00
Gary Murakami 2c67080627 [Gary] more improvements, dropping has its own complete section 2012-04-04 13:25:26 -04:00
Tyler Brock ee83b6be2c RUBY-421 fixes for rake reployment tasks 2012-04-03 17:28:42 -04:00
Tyler Brock e9e0e47cc1 minor: test cleanup and fixes 2012-04-03 16:06:37 -04:00
Tyler Brock 01f28b47ff RUBY-429 non-blocking IO for socket timeouts
Should greatly improve performance for highly threaded applications
using connection and operation timeouts.
2012-04-03 16:06:37 -04:00
Tyler Brock aab3cf7b74 minor: cleanup thread_to_socket pruning code and test 2012-04-03 16:06:37 -04:00
Gary Murakami c65b4aadb0 [Gary] Improvements to TUTORIAL, completeness and bug fixes, CRUD reorg, Delete documents, explain, Ruby style 2012-04-03 15:14:43 -04:00
Gary Murakami 9e47109b8f [Gary] Editing due to minor disconnects of a newbie - might as well make improvements before I'm too tainted by familiarity. Any suggestions for a GFM previewer? 2012-04-02 17:25:01 -04:00
Gary Murakami d4efbe96f7 fix README gem require for test, typos, JRuby reminders, also add require rubygems to simple.rb 2012-03-30 16:56:51 -04:00
Gary Murakami 481c57c52e fix bson test hash_with_indifferent_access, missing require 2012-03-30 11:47:06 -04:00
Tyler Brock 0e8eef6cdd RUBY-420 enforce lower bound on refresh interval 2012-03-21 19:01:37 -04:00
Tyler Brock 6944794fb2 RUBY-422 Cleanup testing output 2012-03-16 16:17:33 -04:00
Tyler Brock ec86275b60 RUBY-424 Authenticating with only secondary fails
Authentication command now prefers to use primary node but will fall
back on secondary if no primary is available
2012-03-15 13:50:02 -04:00
Tyler Brock 7fd0b8dfce minor: update for replica set docs 2012-03-15 08:32:25 -04:00
Tyler Brock cf817f5705 minor: fix for ydoc deploy version 2012-03-07 17:50:36 -05:00
Tyler Brock ddc3e893cb RELEASE 1.6.1 2012-03-07 16:59:27 -05:00
Tyler Brock 18cad3401b minor: deploy task typo 2012-03-07 16:58:29 -05:00
Tyler Brock 2af817f0f8 minor: fix for refresh with threads test and rs documentation updates 2012-03-07 16:38:14 -05:00
Tyler Brock 5f6544a53c minor: update history file 2012-03-07 14:16:57 -05:00
Tyler Brock 5fde3de4a6 RUBY-417 only show logging warning if level is :debug 2012-03-07 14:15:10 -05:00
Tyler Brock 0ae757c69b RUBY-416 unit test stub fix 2012-03-07 12:38:04 -05:00
Tyler Brock 06bc50fe46 RUBY-416 do not checkout closed sockets 2012-03-07 12:00:10 -05:00
Tyler Brock 8c3283f514 minor: switched additional tests to socket mock 2012-03-06 22:56:39 -05:00
Tyler Brock 03eb8a8c96 RUBY-416 fixes for current thread manager state 2012-03-06 22:32:20 -05:00
Tyler Brock 68f19039d2 minor: updates for replica set tests, mock socket stubs 2012-03-06 17:06:42 -05:00
Tyler Brock 274ce690e7 RUBY-416 threading with refresh test fixes 2012-03-05 14:40:05 -05:00
Tyler Brock bf9bb83b6d minor: whitespace fixes 2012-03-02 19:25:17 -05:00
Tyler Brock 93b2f3da9b minor: Added TCPSocket Class w/ pool accessor
Sockets now know what pool they were checked out from
SSLSocket updated as well
2012-03-02 19:16:14 -05:00
Tyler Brock 379c831b8b minor: test fix for mocha 0.10.5 -- new initializer 2012-03-01 13:03:52 -05:00
Tyler Brock 66227e17c8 minor: more rakefile changes 2012-03-01 12:42:58 -05:00
Tyler Brock 9f5cd6b5b6 minor: added git to Gemfile 2012-02-29 21:14:50 -05:00
Tyler Brock c2aac6e7a9 minor: small fix for Rakefile 2012-02-29 19:25:24 -05:00
Tyler Brock 25375fd50a minor: git deploy fixes 2012-02-28 13:14:48 -05:00
Tyler Brock 136e8113e8 minor: deploy git task in progress 2012-02-28 12:54:50 -05:00
Kyle Banker cf85bd5554 minor: more deploy tasks 2012-02-28 12:30:21 -05:00
Kyle Banker c5890cd56d minor: reverting to 1.6.0 for BSON version 2012-02-28 12:09:23 -05:00
Kyle Banker 2763c4f355 Rake task for updating gem versions. 2012-02-28 12:05:08 -05:00
Kyle Banker 73f9acf4fb Cleaned up BSON gem versioning. 2012-02-28 12:04:49 -05:00
Kyle Banker 311623d81d minor: :name is a valid ReplSetConnection option 2012-02-28 11:15:23 -05:00
Kyle Banker 7f0c9fa87c Merge pull request #93 from fullbridge-batkins/master
Fix for the mongo.gemspec dependency statement to prevent errors on older versions of Rubygems.
2012-02-28 07:43:17 -08:00
Tyler Brock fb0b0f1234 Merge pull request #91 from MongoHQ/duplicate_filename
Passing :filename to GridFS stored duplicate filename attributes
2012-02-28 07:34:23 -08:00
Kyle Banker cf9ef481d3 Twiddle-wakka for semantically versioned dependencies. 2012-02-28 10:34:52 -05:00
Ben Atkins be8179ae58 Fixing mongo.gemspec so it doesn't throw error on older versions of Rubygems. 2012-02-28 10:22:30 -05:00
Tyler Brock 579e187e4f minor: add Gemfile.lock to .gitignore 2012-02-28 09:39:15 -05:00
Kyle Banker 349d37f3db Fix for newRegexp() on JRuby 1.6.7 2012-02-27 18:10:58 -05:00
Tyler Brock 4da27036cf RUBY-416 removed connect_mutex from sync_refresh 2012-02-27 18:04:45 -05:00
Kyle Banker ebfe279784 Fixed threaded replica set reconnection. 2012-02-27 17:13:57 -05:00
Tyler Brock 6301a41254 minor: whitespace 2012-02-27 16:42:48 -05:00
Kyle Banker 29cc4b20e2 RUBY-416 thread affinity for Mongo::Pool 2012-02-27 16:16:09 -05:00
Tyler Brock 8e64c74d7d RUBY-239 warn if bad options are passed to connection constructors 2012-02-27 14:06:07 -05:00
Tyler Brock b99f00486d minor: removed unused and deprecated Config from Rakefile 2012-02-26 22:06:36 -05:00
Tyler Brock 6be68c3e24 minor: turn off travis e-mail notifications 2012-02-24 12:59:39 -05:00
Tyler Brock eb9b34c1af RUBY-413: Added support for travis-ci, fix for Gemfile conflict 2012-02-24 11:13:59 -05:00
Tyler Brock 038cbea739 Revert "Solves: "gems/mongo-1.6.0/lib/mongo/util/logging.rb:34:in `instrument': undefined method `level' for #<Mongoid::Logger:0x00000103ca7570> (NoMethodError)""
This reverts commit 775ed49e6c.

a logger should quack like a logger
2012-02-23 11:53:18 -05:00
Tyler Brock 87fd68e9d9 Merge pull request #92 from Krule/master
Logger complaining about missing method using mongoid and rails 3.1.2
2012-02-22 15:44:44 -08:00
Armin Pašalić 775ed49e6c Solves: "gems/mongo-1.6.0/lib/mongo/util/logging.rb:34:in `instrument': undefined method `level' for #<Mongoid::Logger:0x00000103ca7570> (NoMethodError)" 2012-02-22 21:26:59 +01:00
Tyler Brock 32117ac91c minor: updated README.md replica set test documentation 2012-02-22 13:58:13 -05:00
Tyler Brock c41a58d2aa minor: updated README.md test versions 2012-02-22 13:58:13 -05:00
Tyler Brock 34ccb5cb58 minor: ReplSet doc example update 2012-02-22 13:58:13 -05:00
Tyler Brock 85c8b18e23 Merge pull request #90 from comerford/patch-1
Update README.md
2012-02-22 10:35:49 -08:00
Tyler Brock 374644ba7b minor: removed Gemfile.lock 2012-02-22 13:22:30 -05:00
Tyler Brock a4343e53fe Release 1.6.0 2012-02-22 10:49:44 -05:00
Chris Winslett 0f46875473 Fixed issue when sending a :filename GridFS would store the :filename attribute twice. 2012-02-22 08:44:19 -06:00
Adam C e0c68881c0 Update README.md 2012-02-22 11:08:14 +00:00
Tyler Brock c802c7eba3 minor: fixes for tests in Ruby 1.8.7 2012-02-18 19:24:27 -05:00
Tyler Brock 4db19610d6 minor: documentation fixes
options -> opts in ReplSetConnection
2012-02-18 18:35:36 -05:00
Tyler Brock 8db4eb771f RUBY-378: fixed documentation and tests for new ReplSetConnection seed format
Added helper method #build_seeds to rs_test_helper
Added new test for old connection
2012-02-18 18:35:29 -05:00
Tyler Brock b70c9ce152 RUBY-406 enhancements to :secondary_only read preference
Improved implementation
-- read_preference :secondary_only is now communicated via invocation
of ReplSetConnection#checkout_secondary

Better tests
-- ensures reads go to secondaries
-- ensures reads do not go to primaries
2012-02-18 16:51:57 -05:00
Tyler Brock b9371206dc minor: improvements to ReplSetManager
add_node can now take blocks
new add_arbiter method
2012-02-18 15:00:25 -05:00
Tyler Brock 95d1129e75 minor: cleanup unused variables + methods 2012-02-17 15:18:02 -05:00
Tyler Brock a57762c797 minor: remove unused variables in Connection and ReplSetConnection Classes 2012-02-17 13:36:28 -05:00
Tyler Brock 79105f6c98 minor: documentation and test updates for RUBY-378 2012-02-16 14:31:34 -05:00
Kyle Banker b79d408a11 Enable log duration by default for :debug-level logging. 2012-02-16 14:01:09 -05:00
Kyle Banker 8bdb64721b minor: remove unused code 2012-02-16 14:01:09 -05:00
Tyler Brock a4e49d86ac Merge branch 'master' of github.com:mongodb/mongo-ruby-driver 2012-02-16 13:03:08 -05:00
Tyler Brock 098c750529 RUBY-378 minor fix to warning 2012-02-16 13:02:51 -05:00
Tyler Brock 542b8f46da RUBY-406 added ReplSetConnection read preference :secondary_only 2012-02-16 12:59:52 -05:00
Kyle Banker 0e50077ced Merge pull request #80 from VvanGemert/master
Allow GridFileSystem#delete to keep a specified number of versioned documents in GridFS rather than removing all or none.
2012-02-16 08:24:34 -08:00
Kyle Banker 3613a05461 Merge pull request #85 from shingara/log_duration
Add a log duration option.
2012-02-16 08:01:23 -08:00
Tyler Brock 78fc1debbe RUBY-378 new ReplSetConnection format 2012-02-16 10:59:09 -05:00
Kyle Banker aecad5d345 Merge pull request #88 from Oscil8/master
Add read_only option to DB#add_user
2012-02-16 07:55:22 -08:00
Tyler Brock fec284ee99 minor: small fix in replset initialization code 2012-02-16 10:36:13 -05:00
Tyler Brock bcb32e5935 minor: wait for mongod to die when we kill it during replica set tests 2012-02-15 18:17:24 -05:00
Kyle Banker dab2552b6b minor: document release process in detail. 2012-02-15 13:14:03 -05:00
Kyle Banker 02d39a75c7 minor: insert test should use w = 2 2012-02-15 12:55:14 -05:00
Kyle Banker b299986eb4 minor: don't preallocate for replica set tests 2012-02-15 12:13:47 -05:00
Tyler Brock 8c2929bd4c minor: increased sleep time on pooled insert rs test 2012-02-15 09:51:01 -05:00
Tyler Brock 1be40495c2 RUBY-412 added if statement to case T_DATA to catch unserializable time classes in Ruby >= 1.9.3 2012-02-14 16:11:52 -05:00
Tyler Brock e21adbd781 minor: possible fix for replica set refresh test not passing due to ghost members 2012-02-13 19:21:11 -05:00
Tyler Brock a3fa4892a6 minor: fix for test_accessors replica set test -- should not test tags on server < 2.0 2012-02-13 18:49:56 -05:00
Tyler Brock c6af6041e7 Merge branch 'master' of github.com:mongodb/mongo-ruby-driver 2012-02-13 17:57:38 -05:00
Tyler Brock c954b75030 RUBY-411 refactored ReplSetConnection#setup to remove code duplication 2012-02-13 17:57:23 -05:00
Kyle Banker b4079a22f9 minor: disable replica set threading test 2012-02-13 16:43:22 -05:00
Tyler Brock c871a645ad Merge branch 'master' of github.com:mongodb/mongo-ruby-driver 2012-02-13 15:23:48 -05:00
Tyler Brock 21ad1e9aef RUBY-409 fixed test for ordered hash to actually used Array instead of hash 2012-02-13 15:19:59 -05:00
Tyler Brock d19c679d67 Merge pull request #89 from benatkin/patch-1
typo in docs/WRITE_CONCERN.md
2012-02-12 20:58:40 -08:00
Benjamin Atkin b2455431a6 typo in docs/WRITE_CONCERN.md 2012-02-12 20:11:11 -07:00
Ariel Salomon a89492d1f8 Add documentation for read_only parameter 2012-02-12 14:25:39 -08:00
Ariel Salomon 9eadb3c24a Add read_only parameter to add_user 2012-02-12 13:30:21 -08:00
Tyler Brock 4a92a1e498 minor: fix for version_string in ReplSetManager 2012-02-10 15:43:01 -05:00
Tyler Brock 4317c9d1b0 minor: allow customization of mongod via environment var for testing via jenkins 2012-02-10 15:07:26 -05:00
Tyler Brock 08ca57b92c minor: cleanup rakefile, bamboo -> jenkins, broke out uninstall of bson_ext 2012-02-10 11:17:33 -05:00
Tyler Brock d3948114ea minor: more testing bug fixes, refactoring -- ideas from mlanett 2012-02-06 23:41:54 -05:00
Tyler Brock 2c82762782 minor: replace relative requires within .gemspec files to fix testing in 1.9.x -- suggested by mlanett 2012-02-06 23:41:48 -05:00
Tyler Brock a824533ad3 RUBY-407 created Gemfile 2012-02-06 20:01:16 -05:00
Tyler Brock 12e1af0c3d minor: tests now prefer test-unit gem in ruby 1.9.x 2012-02-06 19:25:11 -05:00
Tyler Brock 1c765fb338 minor: fix for require failing in tests 2012-02-06 17:45:41 -05:00
Cyril Mougel 53b7f8f81c use the platforms option to avoid install json_pure where is not needed 2012-02-03 22:35:38 +01:00
Cyril Mougel 9febf7e15c add json_pure in Gemfile because not in stdlib in ruby 1.8 2012-02-03 22:19:36 +01:00
Cyril Mougel 0426bd3d5a avoid gemspec in Gemfile because multiple gemspec 2012-02-03 22:12:32 +01:00
Cyril Mougel 65c937ff64 add Gemfile needed by travis 2012-02-03 22:11:19 +01:00
Cyril Mougel 66fe86d1b9 add travis conf 2012-02-03 22:07:00 +01:00
Cyril Mougel 84c8e7cae2 add log_duration system to add time spend in database 2012-02-03 18:02:14 +01:00
Cyril Mougel 6ab02373ea add an option in connection to log duration 2012-02-03 17:29:30 +01:00
Tyler Brock 99d9dfddfb RUBY-405 fixed map reduce test to work with 1.8.7 using ordered hash 2012-01-30 16:57:05 -05:00
Tyler Brock fb77743f60 RUBY-392 fix to support ruby < 1.9 (1.9 is needed to support named capture groups in regular expressions) 2012-01-30 16:55:47 -05:00
Tyler Brock a193c055ab RUBY-404 make uri option paramaters case insensitive, test included 2012-01-30 12:06:20 -05:00
Tyler Brock 6ae5dbd37c minor: removed redundant code from uri_parser configure connect method 2012-01-29 19:38:41 -05:00
Tyler Brock 90e35d3137 minor: formatting fix for repl_set_manager.rb 2012-01-29 19:29:40 -05:00
Tyler Brock 7d5ab886ed minor: fix for replica set tests -- each TestCase class now gets a new replica set 2012-01-29 19:05:17 -05:00
Tyler Brock eb715313a2 minor .gitignore update 2012-01-26 16:59:00 -05:00
Tyler Brock b31d51ba7a minor: updates to uri parser for MS granularity 2012-01-26 16:52:25 -05:00
Kyle Banker 815ec63681 minor: test fix 2012-01-26 12:07:32 -05:00
Tyler Brock 07375ce024 RUBY-403 added test and fix for refresh health check attempting to close socket that may be nil 2012-01-25 18:45:31 -05:00
Tyler Brock 309315e31e RUBY-399 removed re-initialization of seeds in initialize_data 2012-01-24 21:26:25 -05:00
Tyler Brock d8655929f5 documentation updates to replace depricated options with current ones 2012-01-23 13:28:06 -05:00
Tyler Brock a2817247ac RUBY-400 changed default op_timeout for ReplSetConnection from 30 seconds to disabled 2012-01-20 19:24:55 -05:00
Kyle Banker f56846b444 Merge pull request #84 from TylerBrock/392-uriparser-spec
RUBY-392 Update URIParser for consistency with Mongo URI spec.
2012-01-20 11:23:25 -08:00
Kyle Banker 15dce65e5a RUBY-398 skip seed node if neither primary nor secondary 2012-01-20 13:31:04 -05:00
Kyle Banker 68c613ce79 RUBY-398 test fix 2012-01-20 11:00:38 -05:00
Kyle Banker b5576a7ecd RUBY-398 test case for this bug report 2012-01-20 10:56:39 -05:00
Kyle Banker a0da417c42 minor: :collect_on_error docs and tests. 2012-01-19 12:34:43 -05:00
Masahiro Nakagawa 5b1e09a6ce Add :collect_on_error option to collect invalid documents in bulk-insert 2012-01-19 12:34:43 -05:00
Kyle Banker 881c73ac82 Merge pull request #83 from TylerBrock/361-uri-parser
RUBY-361 Clean up MongoDB URI parser.
2012-01-19 08:53:10 -08:00
Tyler Brock d25c28fa24 Merge branch 'master' of github.com:mongodb/mongo-ruby-driver into 392-uriparser-spec 2012-01-17 19:38:07 -05:00
Tyler Brock 4a35bf1ccb formatting fix 2012-01-17 19:37:15 -05:00
Tyler Brock 9a39987737 depricated wtimeout in favor of wtimeoutMS 2012-01-17 19:35:46 -05:00
Tyler Brock 1124918502 added journal, connectTimeoutMS and socketTimeoutMS to URI options 2012-01-17 18:45:09 -05:00
Tyler Brock 6f80a48fce Merge branch 'master' of github.com:mongodb/mongo-ruby-driver into 361-uri-parser 2012-01-17 11:43:47 -05:00
VvanGemert 585e6722b4 Documented the option :versions in description of method GridFileSystem.open. 2012-01-10 17:52:13 +01:00
VvanGemert 417000da7b Added back support for :delete_old option and wrote tests for :versions option on GridFilesystem. 2012-01-10 17:37:25 +01:00
Kyle Banker ebd31d0cd0 Merge pull request #79 from johnewart/fix_db_out_option
RUBY-389: Fix db output option on Collection#map_reduce
2012-01-06 12:04:10 -08:00
Kyle Banker 885f7477f1 Merge pull request #77 from mbj/master
minor: remove noop assignment in GridIO.new call
2012-01-06 11:56:25 -08:00
Kyle Banker c9e4f9a9d8 Merge pull request #76 from tricknotes/remove-unused-exception
minor: remove unused error class 'ConfigurationError'
2012-01-06 11:55:36 -08:00
Kyle Banker e4570c133d RUBY-356 clarify docs on continue_on_error 2012-01-06 14:53:23 -05:00
Kyle Banker bc872b61fd Merge pull request #81 from ankane/master
RUBY-353 Fixed system stack error on :connect_timeout option
2012-01-06 06:49:56 -08:00
Andrew Kane ebfab91f53 Fixed scoping issue that causes connection to hang w/ :connect_timeout option 2012-01-06 00:37:56 -08:00
VvanGemert c70b1d1b30 Added support for keeping a limited amount of documents in GridFS and removed the delete_old option.
The delete_old removed all the old files while having a versioning system you might want to keep a limited set of files. This small little patch does that. You can specify a number of versions to keep by using the new versions option.
2012-01-05 16:27:05 +01:00
Tyler Brock b3b50f7273 changes 2012-01-04 13:03:44 -05:00
John Ewart 52ed0b70f0 Merge branch 'master' of https://github.com/mongodb/mongo-ruby-driver into fix_db_out_option 2011-12-29 00:09:24 -08:00
Markus Schirp af441efb7c Remove noop assignment 2011-12-28 01:15:11 +01:00
Ryunosuke SATO 217da825a6 remove unused error class 'ConfigurationError' 2011-12-27 20:04:44 +09:00
Tyler Brock d79ca1f994 small change to regex 2011-12-20 16:02:17 -05:00
Tyler Brock 899241eefe more readability changes to uri_parser regex 2011-12-20 15:56:00 -05:00
Tyler Brock 1d22c75811 made MONGODB_URI_MATCHER regular expression in uri_parser.rb easier to interpret by breaking it into parts 2011-12-20 11:31:39 -05:00
Kyle Banker 63708a5f16 Merge pull request #75 from jmbejar/fix_replset_insert_exception_issue
RUBY-391: raise ConnectionFailure on 'not master' error.
2011-12-16 08:07:44 -08:00
Jorge Bejar 6b8ab02ec8 Fix issue RUBY-391
Fix a problem with the exception raised when trying to insert
in a replicaset when primary is not available.

The ssue is reported here: https://jira.mongodb.org/browse/RUBY-391
2011-12-16 13:44:21 -02:00
John Ewart 6c0b3723e9 Adding test for the :out => {:db …} key
Forgot to add the test in the last commit.
2011-12-15 08:06:01 -08:00
John Ewart 28796ac7de Support :db key for :out in map_reduce
References RUBY-389
2011-12-14 17:49:08 -08:00
Kyle Banker 4858d3030b BUMP 1.5.2 (revised) 2011-12-13 15:55:11 -05:00
Kyle Banker 931270f962 BUMP 1.5.2 (revised) 2011-12-13 15:40:21 -05:00
Kyle Banker 7756a133e5 BUMP 1.5.2 2011-12-13 15:35:37 -05:00
Kyle Banker 6eaa9e4d62 RUBY-388 remove unnecessary load path addition 2011-12-13 15:30:25 -05:00
Kyle Banker 26090dbbdd Merge pull request #74 from EqualMedia/master
Pass cursor payload to instrumentation even if there's no logger.
2011-12-13 12:14:39 -08:00
Kyle Banker 840535aa61 Merge pull request #71 from hrushikesh/5f86eba0a04af29c4f33ded97b519bc78ca90265
RUBY-380 Support geoHaystack index type.
2011-12-13 12:07:16 -08:00
Kyle Banker 8fd89eb2a4 RUBY-386 extend ismaster timeout to Connection 2011-12-13 15:03:00 -05:00
Kyle Banker c308f9b025 RUBY-386 set 30 second connect timeout. Fail if ismaster fails. 2011-12-13 14:51:39 -05:00
Ben Symonds 4ae41edfe4 send the instrument payload even if no logger, for benefit of anyone hooking into `instrument` method. also matches behaviour of insert, update, remove methods 2011-12-13 18:39:23 +00:00
Kyle Banker 4ed709ff7f RUBY-386 ensure that replica set connection doesn't hang when
connecting to unreponsive node. set default op timeout to 30 seconds.
2011-12-12 17:45:00 -05:00
Kyle Banker ec97bd0d00 Revert "RUBY-388 remove superfluous require"
This reverts commit e9da2446e0.
2011-12-12 16:58:15 -05:00
Kyle Banker e9da2446e0 RUBY-388 remove superfluous require 2011-12-12 16:31:52 -05:00
Kyle Banker a9784e0a20 RUBY-387 bson_ext should depend on bson 2011-12-12 16:28:50 -05:00
Kyle Banker 269f5b3f1e minor: test fixes 2011-12-12 15:35:51 -05:00
Kyle Banker 486059de2e minor: test fixes 2011-12-12 15:33:14 -05:00
Kyle Banker a7139fd5ed RUBY-375 2011-12-06 16:41:51 -05:00
Kyle Banker 06b682ec7c RUBY-383 do a sync_refresh before checking out a socket 2011-12-06 14:38:56 -05:00
Kyle Banker 80c4cb750d minor: remove test 2011-12-06 14:38:14 -05:00
Kyle Banker 02d7a3c5dd minor: test 2011-12-05 18:31:29 -05:00
Kyle Banker ee499482ca minor: test fix 2011-12-05 16:26:14 -05:00
Kyle Banker e0f44ca41d RUBY-379 RUBY-381 test 2011-12-05 16:16:06 -05:00
Kyle Banker b6ff77fcbc RUBY-379 RUBY-381 reconnect on 'not master' errors (fix close connection logic) 2011-12-05 15:25:37 -05:00
Kyle Banker c25b1f1585 RUBY-376 separate original seeds nodes from discovered ones 2011-12-05 12:27:19 -05:00
Hrushikesh 5f86eba0a0 add geoHaystack index support 2011-12-03 13:41:53 -08:00
Kyle Banker 221c40da3f minor: fix failing test 2011-12-02 17:45:42 -05:00
Kyle Banker 29f3772053 RUBY-376 use new seed nodes first 2011-12-02 17:42:18 -05:00
Kyle Banker b579a6347f RUBY-376 always cache original seed nodes 2011-12-02 17:20:04 -05:00
Kyle Banker 03303b8409 RUBY-374 Close connection on SystemStackError, NoMemoryError, and SystemCallError 2011-12-02 15:37:05 -05:00
Kyle Banker d3c9637268 RUBY-377 ensure that @manager is never nil 2011-12-01 12:01:13 -05:00
Kyle Banker 74e6a60c25 BUMP 1.5.1 2011-11-29 15:54:08 -05:00
Kyle Banker c931499a97 BUMP 1.5.0 2011-11-28 14:10:28 -05:00
Kyle Banker cdbd788309 minor: HISTORY 2011-11-28 14:09:27 -05:00
Kyle Banker 17fc3bd851 Merge pull request #63 from hartator/patch-1
minor: update gridstore_benchmark.rb for compatibility with current code.
2011-11-28 10:37:14 -08:00
Kyle Banker c06ac31867 Merge pull request #67 from myers/fix-for-warnings-in-ruby-1.8.6
minor: test suite fixed for warnings when running in 1.8.6
2011-11-28 10:34:48 -08:00
Kyle Banker 8bd94b0ac2 RUBY-370: allow :j option 2011-11-28 13:33:42 -05:00
Kyle Banker d08b3b8978 Merge pull request #60 from manewitz/master
minor: README fix
2011-11-28 10:25:48 -08:00
Kyle Banker 2e48229a3b Merge pull request #64 from songbird/songbird-collection-logging
Allow logging from Collection using Connection logger.
2011-11-28 10:19:10 -08:00
Kyle Banker 11a722b96a BUMP 1.5.0.rc0 2011-11-18 17:15:03 -05:00
Kyle Banker e81b616da5 minor: test fix 2011-11-18 16:56:03 -05:00
Kyle Banker cf69bf4c2e RUBY-367 deprecate async refresh 2011-11-18 16:13:19 -05:00
Kyle Banker fa10508f07 Remove thread-local map and socket map (complexity creep). 2011-11-18 15:47:06 -05:00
Kyle Banker 177fad34ff Added replica set refresh test for threaded app. 2011-11-16 18:10:16 -05:00
Kyle Banker 5dbe563d14 RUBY-364 2011-11-16 13:40:55 -05:00
Kyle Banker e61f867e65 Connection#end_request 2011-11-16 13:06:56 -05:00
Kyle Banker fe58da0e3c minor: fix prune interval 2011-11-16 12:19:45 -05:00
Kyle Banker 5bb0084a13 minor: adjust low socket threshold 2011-11-16 12:08:13 -05:00
Kyle Banker 63ca1c7648 RUBY-350 allow ':' in usernames in URI 2011-11-15 16:31:21 -05:00
Kyle Banker 9aae390eec RUBY-334 minor: move refresh logging to debug level 2011-11-15 16:26:41 -05:00
Kyle Banker 1146e5692a RUBY-341 fix :max_scan and :show_disk_loc 2011-11-15 16:24:21 -05:00
Kyle Banker c69bfc6c13 RUBY-336 remove mocha and shoulda dependency from BSON tests 2011-11-15 16:04:33 -05:00
Kyle Banker 6345820eae RUBY-345 update logging startup message 2011-11-15 15:59:42 -05:00
Kyle Banker fbadbe9977 RUBY-351 test fix 2011-11-15 15:58:51 -05:00
Kyle Banker 93f228aaf1 RUBY-351 Build GridFS indexes when a primary is present. 2011-11-15 15:44:31 -05:00
Kyle Banker 24b9653366 RUBY-359 Fix for OrderedHash on 1.8.7 2011-11-15 12:43:29 -05:00
Kyle Banker 6f57665631 minor: test fix 2011-11-07 18:01:27 -05:00
Kyle Banker a034eb2655 minor: test update 2011-11-07 17:44:51 -05:00
Kyle Banker 540a58fed6 Don't use Thread#kill 2011-11-07 13:59:52 -05:00
Kyle Banker fbdf16bd48 minor: text fixes 2011-11-07 13:36:57 -05:00
Kyle Banker 9cb9f5c663 minor: test fix 2011-11-04 16:53:28 -04:00
Kyle Banker 83ac53202e minor: fix failing tests 2011-11-04 15:12:58 -04:00
Kyle Banker dc4be1afc7 Prune sockets above max sockets per pool,
and close sockets associated with dead threads.
2011-11-04 14:26:12 -04:00
Kyle Banker f224df45aa minor: cleanup 2011-11-04 13:25:13 -04:00
Kyle Banker a2a307c45d Distinguish between hard and soft pool close. 2011-11-04 09:23:41 -04:00
Kyle Banker 3e2c4c3851 minor: replica set test improvements 2011-11-04 09:22:57 -04:00
Kyle Banker 01d1231373 Added thread-local sockets to ReplSetConnection 2011-11-03 18:48:01 -04:00
Kyle Banker 54433502f5 minor: cleanup 2011-11-03 18:41:25 -04:00
Kyle Banker f668678fd1 Store sockets in thread-local variables when possible.
Allow connection pools to grow if needed. All this minimizes
the number of locks required and reduces the waiting time
for these locks.
2011-11-03 18:37:23 -04:00
Kyle Banker 0b33a48dd9 minor: clear accessors for defined methods 2011-11-03 11:21:00 -04:00
Kyle Banker 5b349e7175 Remove debug info. 2011-11-03 11:19:26 -04:00
Kyle Banker 68627cef3d Replica Set test harness refactoring. 2011-11-03 11:17:36 -04:00
Kyle Banker 3e7c28e1ef Add networking module. 2011-11-02 18:01:48 -04:00
Kyle Banker a5373ddb83 Initial decoupling of Connection, ReplSetConnection,
and networking code.
2011-11-02 18:00:52 -04:00
Kyle Banker 3655a94934 Stop using 'sync' library. Don't trust it. Too complex. 2011-11-02 17:33:34 -04:00
Kyle Banker 1f068ce127 Cleanup for proxying to PoolManager. 2011-11-02 15:41:59 -04:00
Kyle Banker f98c1099dc Ensure we pass pool timeout to pool. 2011-11-02 15:21:46 -04:00
Kyle Banker d171f75bb0 Don't copy manager data. 2011-11-02 15:16:40 -04:00
Kyle Banker abe3532d2a RUBY-352 test commands go to primary 2011-10-26 12:34:16 -04:00
Kyle Banker 14593954fa RUBY-352 Ensure commands are sent to primary. 2011-10-26 10:28:06 -04:00
Kyle Banker 9b6589e033 Auto-refresh will be disabled by default. 2011-10-26 10:26:50 -04:00
Myers Carpenter f179a106ea fix for warnings when running in 1.8.6 2011-10-18 16:59:57 -04:00
Kyle Banker 1da5778c38 BUMP 1.4.1 2011-10-17 15:54:11 -05:00
Kyle Banker 045a556e99 minor: test fix 2011-10-17 15:09:54 -05:00
Kyle Banker ddb56a537f BUMP 1.4.1 2011-10-17 14:55:21 -05:00
Kyle Banker 03549d1b67 minor: HISTORY 2011-10-17 14:54:25 -05:00
Kyle Banker 8aa791e051 minor: docs 2011-10-17 14:53:14 -05:00
Kyle Banker 78dd5035d7 minor fix 2011-10-17 14:49:44 -05:00
Kyle Banker 8e02b4e9b4 minor: test fix 2011-10-17 14:36:47 -05:00
Kyle Banker 7a11bb18a9 Ensure that cursor requiring getmore ops will not
be affected by replica set refresh.

Prep for sending commands to secondaries.
2011-10-17 14:41:09 -04:00
Kyle Banker 1aad8d1e14 minor: HISTORY 2011-10-15 23:53:55 -04:00
Kyle Banker b3c3206eeb minor: formatting 2011-10-14 09:53:23 -04:00
Kyle Banker 6a7e991689 Fix connection leak and refresh. 2011-10-14 09:52:11 -04:00
Kyle Banker 1001e59e44 minor: test framework fixes; minor bug fixes 2011-10-13 17:58:20 -04:00
Kyle Banker 1647c89721 minor: docs 2011-10-13 12:06:39 -04:00
Kyle Banker c2070bb90a minor: simply and refactor auto refresh 2011-10-12 17:13:48 -04:00
Kyle Banker 566d1a844f minor: test to reproduce CURSOR_NOT_FOUND error with async refresh 2011-10-12 10:51:57 -04:00
slloyd 92a2e86d9a Allow logging from Collection using Connection logger 2011-10-11 10:25:24 -07:00
hartator 56e7ea6812 Update gridstore_benchmark.rb to make it works with the current gem code. 2011-10-08 13:29:07 +03:00
Kyle Banker f5f714a1a1 Added some basic, sanity-checking tests. 2011-10-07 13:55:09 -04:00
Kyle Banker 118cb18c33 Removed a completely unnecessary mutex. 2011-10-07 12:13:18 -04:00
Kyle Banker 09c8a3838c Fixed major bug where :refresh_mode == :async 2011-10-06 14:50:51 -04:00
Kyle Banker 8525f4ceac Fixed major bug where :refresh_mode == :sync 2011-10-06 14:26:39 -04:00
Mike Manewitz cd552fbf12 tweaked Markdown to display code snippet properly 2011-10-03 18:02:30 -05:00
Kyle Banker 018da9049c minor: test fix 2011-09-26 17:48:17 -04:00
David E. Chen 9eaf6b7b83 Support the current MongoDB URI scheme with multiple hosts/ports separated by commas all using the same authentication and database. 2011-09-26 17:39:47 -04:00
Kyle Banker 69598857ef minor: tests 2011-09-26 16:27:10 -04:00
Michael Glass fd0e858021 MongoDB URI should allow db with no username or password. 2011-09-26 16:21:43 -04:00
Karl Seguin 77e9c05e40 sending a shutdown command to kill a node seems a lot more reliable than issuing a kill command (on my system anyways) 2011-09-26 16:09:01 -04:00
Kyle Banker d166975af9 Ammended BUMP 1.4.0 2011-09-20 14:49:36 -04:00
Kyle Banker 4d41092aaa BUMP 1.4.0 2011-09-19 12:05:10 -04:00
Kyle Banker fe5f37b5d3 minor: remove bad test 2011-09-19 12:05:03 -04:00
Kyle Banker ec97cd6d53 RUBY-331 fix sort on Collection#map_reduce 2011-09-19 11:46:15 -04:00
Kyle Banker e613880922 RUBY-327 2011-09-19 11:40:40 -04:00
Kyle Banker e2fe70b022 minor: update HISTORY 2011-09-19 10:13:43 -04:00
Kyle Banker e6ab0be01e minor: update HISTORY 2011-09-19 10:05:08 -04:00
Kyle Banker 63c91af1b1 minor fixes and doc updates. :sync is default refresh mode. 2011-09-15 18:44:02 -04:00
Kyle Banker 3e3f05813a minor: cleanup and test fix 2011-09-15 17:46:59 -04:00
Kyle Banker b910e3e635 Add synchronous refresh; fix connection leak. 2011-09-15 15:44:12 -04:00
Kyle Banker 83eaa4d51b Replica Set connection improvements for refresh and multi-threaded apps. 2011-09-13 17:50:01 -04:00
Kyle Banker a370f3abed minor: ReplSetConnection#connected? will be eventaully consistent. 2011-09-13 10:44:27 -04:00
Kyle Banker 701bba8942 RUBY-306 added missing file 2011-09-11 12:08:26 -04:00
Kyle Banker e678bac75e RUBY-306 clean up logging. 2011-09-07 17:14:53 -04:00
Kyle Banker 75941ad2a3 minor: Cursor cleanup 2011-09-07 10:17:24 -04:00
Kyle Banker 1c439df278 RUBY-312 Enable exhaust-mode queries. 2011-09-07 10:02:10 -04:00
Kyle Banker 75ff1aa633 minor: doc fixes 2011-09-06 16:36:45 -04:00
Kyle Banker 1f7cbc70d0 RUBY-295 document tailable cursor API. 2011-09-06 16:33:36 -04:00
Kyle Banker 7ac19f1bfa minor: Cursor#next over Cursor#next_document 2011-09-06 16:23:55 -04:00
Kyle Banker d44eb01da6 RUBY-304 minor: doc fix 2011-09-06 15:28:12 -04:00
Kyle Banker 0abb2e64a9 RUBY-284 RUBY-291 document read preference with secondary ping time 2011-09-06 15:23:51 -04:00
Kyle Banker cfa3bed965 minor: doc fix 2011-09-06 15:01:53 -04:00
Kyle Banker 50c38c6c6b RUBY-284 document :read API 2011-09-06 14:58:03 -04:00
Kyle Banker 5d83ab2460 RUBY-313 minor: deprecation warning should include removal version. 2011-09-06 14:30:00 -04:00
Kyle Banker 046038e18d RUBY-297 when possible, include error codes and
return objects in exception classes.
2011-09-06 14:22:50 -04:00
Kyle Banker 1e951d6734 RUBY-316 2011-09-06 11:40:25 -04:00
Kyle Banker 834b0db0af RUBY-307 Collection#count should take a query, skip, and limit. 2011-09-06 11:38:19 -04:00
Kyle Banker b0b1c043ca Pool manager unit test. 2011-09-02 17:26:43 -04:00
Kyle Banker 30f595a584 Merge pull request #57 from bonifaido/master
Docs: change Mongo::ObjectId to BSON::ObjectId
2011-09-02 08:44:13 -07:00
Nandor Kracser 1b595316c6 use BSON::ObjectId rather than Mongo::ObjectId for return values in doc 2011-09-01 21:33:23 +02:00
Kyle Banker e2178b0f1d RUBY-322 nicer inspect methods 2011-09-01 11:42:56 -04:00
Kyle Banker a916d3c8a2 minor: organization 2011-09-01 11:32:32 -04:00
Kyle Banker fbeea87c47 Added some read preference tests; refactoring; nice Pool#inspect. 2011-08-31 17:34:06 -04:00
Kyle Banker 2ff4169a50 Remove unnecessary code. 2011-08-31 16:06:14 -04:00
Kyle Banker adb4675f20 RUBY-321 Use sync RW lock for ReplSetConnection. Bug fixes. 2011-08-31 16:05:21 -04:00
Kyle Banker 7769f4d44d minor: test fix 2011-08-31 11:46:33 -04:00
Kyle Banker 3c31dc6acd Disabled auto-refresh by default. 2011-08-30 16:17:05 -04:00
Kyle Banker e8a5375cbf minor: replica set test fixes 2011-08-30 16:16:47 -04:00
Kyle Banker 8b2de82464 RUBY-320 ReplSetConnection now caches tags and maps them to pools for reading. 2011-08-30 15:59:04 -04:00
Kyle Banker 45c40e7267 RUBY-320 RUBY-284 initial cascading read API. Mapping sockets to pools. 2011-08-29 17:49:58 -04:00
Kyle Banker a6ea525e3d RUBY-319 support continue_on_error insert flag 2011-08-29 12:04:01 -04:00
Kyle Banker 8c241cded7 RUBY-317 2011-08-29 11:22:55 -04:00
Kyle Banker f00c0dfcf0 RUBY-316 initial SSL support 2011-08-26 17:35:40 -04:00
Kyle Banker 8db62d2cbf RUBY-311 ensure that ReplSetConnection connects to replica set members only. 2011-08-26 12:40:13 -04:00
Kyle Banker 85a53571bc minor: test cleanup 2011-08-26 10:59:49 -04:00
Kyle Banker 5559f91da2 RUBY-314 test for update when a node is removed 2011-08-25 18:52:20 -04:00
Kyle Banker 1c430abd88 minor: benchmark should use local checkout 2011-08-25 15:08:21 -04:00
Kyle Banker d999a5ba4d RUBY-315 deprecate BSON.max_bson_size and BSON.update_max_bson_size. 2011-08-25 15:03:40 -04:00
Kyle Banker cf0dafd6e7 Update Java driver jar. 2011-08-25 14:57:55 -04:00
Kyle Banker 3c127984a3 RUBY-242 check BSON size on a per-connection basis. 2011-08-25 14:57:24 -04:00
Kyle Banker 9b42265d10 Fixed unit test 2011-08-25 12:56:06 -04:00
Kyle Banker 0e227d5a39 minor: remove unused method 2011-08-25 11:34:24 -04:00
Kyle Banker f3fbb98fa8 RUBY-314 replica set connection and test cleanup 2011-08-25 11:27:58 -04:00
Kyle Banker 1d064e107d Merge pull request #55 from spk/minor_doc_fix
Fix some TUTORIAL markdown.
2011-08-24 15:24:54 -07:00
Kyle Banker a3b28f7bde Merge pull request #54 from renctan/master
RUBY-296 fix for BSON timestamp serialization issue for C extension
2011-08-24 15:24:06 -07:00
Kyle Banker 1090dd3873 RUBY-314 initial implementation of replica set health checking via background thread 2011-08-24 18:34:00 -04:00
Laurent Arnoud 5e7b4ba416 Fix some TUTORIAL markdown.
* Escape _ for bson_ext.
* Fix insert example.
* Un-escape _id, not required with backtick quotes.

Signed-off-by: Laurent Arnoud <laurent@spkdev.net>
2011-08-24 23:15:17 +02:00
renctan 19c9cb778b Fixed thet timestamp serialization issues for 32bit machines. 2011-08-24 13:14:36 -04:00
Kyle Banker 9ea718522f RUBY-291 automate local replica set reads by ping time 2011-08-22 11:52:11 -04:00
Kyle Banker 3027e29f46 Simpify replica set connection code. 2011-08-16 16:47:07 -04:00
Karl Seguin 2557a575eb added node class 2011-08-12 16:40:09 -04:00
Kyle Banker d552d603a8 RUBY-279 update to Java driver 2.6.5 2011-08-10 14:14:52 -04:00
Kyle Banker 50ca353b05 RUBY-277 removed unnecessary include 2011-08-10 13:49:28 -04:00
Kyle Banker 0ce614a55e RUBY-277 remove dependencies on mongo gem from BSON tests. 2011-08-09 18:00:03 -04:00
Kyle Banker 82b103752e RUBY-289 ensure that negative limit is logged 2011-08-08 18:31:30 -04:00
Kyle Banker f333871bc0 RUBY-294 fix potential infinite loop 2011-08-08 18:23:40 -04:00
Kyle Banker 61151a4f35 RUBY-278 minor: typo 2011-08-08 17:54:25 -04:00
Kyle Banker a9b975eaaa RUBY-304 add Collection#capped? 2011-08-08 17:52:44 -04:00
Kyle Banker a323911507 minor: fixed some failing tests 2011-08-08 16:05:56 -04:00
Kyle Banker ace1313b99 RUBY-302 RUBY-303 fix buffer namespace conflict by renaming to bson_buffer. 2011-08-08 15:06:39 -04:00
Kyle Banker b32f895ed6 RUBY-288 ensure we cannot modify with add_option or remove_option after iteration starts. 2011-08-05 18:22:09 -04:00
Kyle Banker 1142c33910 RUBY-288 Cursor#remove_option 2011-08-05 18:15:48 -04:00
Kyle Banker 96b39313bf RUBY-267 Cursor#alive? 2011-08-05 17:54:38 -04:00
Kyle Banker eecb1d35de Revert "RUBY-167 Cursor#alive?"
This reverts commit 91308cdc60.
Wrong JIRA Issue
2011-08-05 17:52:44 -04:00
Kyle Banker 91308cdc60 RUBY-167 Cursor#alive? 2011-08-05 17:51:37 -04:00
Kyle Banker eca6653bc2 RUBY-281 make BSON::OrderedHash#inspect more precise. 2011-08-05 17:43:39 -04:00
Kyle Banker 28f0f7af3e RUBY-292 OrderedHash should hash with same value as Hash. 2011-08-05 17:27:44 -04:00
Kyle Banker 237dc98fbf RUBY-283 add_option for cursors. Deprecate Cursor#query_opts. 2011-08-05 11:52:45 -04:00
Kyle Banker 5950f6850f minor: timestamp test 2011-07-15 11:09:16 -04:00
Kyle Banker e1463cdce2 Merge pull request #47 from karlseguin/master
Fix minor bug bug in batch_size when limit isn't set.
2011-07-11 06:45:44 -07:00
Kyle Banker 88daaa0538 Merge pull request #50 from nicholaswyoung/master
Fixed GridFS instantiation demo in README.
2011-07-11 06:44:39 -07:00
Kyle Banker 880f40bcaa Merge pull request #51 from bernerdschaefer/master
BSON test fixes
2011-07-11 06:44:18 -07:00
Bernerd Schaefer 7f906b44b4 Silence deprecation warnings from BSON tests 2011-07-08 13:54:01 +02:00
Bernerd Schaefer d0ba797fd9 Use #object_id instead of #id in test 2011-07-08 13:38:43 +02:00
Nicholas Young 7b0a35b631 A small change to the README. Corrected how to instantiate the GridFS object. 2011-07-03 14:07:20 -07:00
Kyle Banker 6b8d19b3fb Merge pull request #49 from bernerdschaefer/master
Use pure Ruby hostname digest optimization for ObjectId and
use java.bson.types.ObjectId for JRuby ObjectId generation.
2011-06-29 07:23:05 -07:00
Bernerd Schaefer ee198c7643 ObjectId#generate uses java.bson.types.ObjectId
Delegating ObjectId#generate when running under jruby to the java BSON
library halves the time needed to generate a new object id.
2011-06-29 14:49:53 +02:00
Bernerd Schaefer 5572663d40 Cache hostname digest at load time
This brings pure-ruby BSON::ObjectId performance more in line with that
of the cbson extension.
2011-06-29 12:31:10 +02:00
gerald-lindsly 4a319f508f Merge pull request #48 from nehresma/master
Minor documentation fix
2011-06-24 21:41:55 -07:00
Nathan Ehresman aa6c4de9d1 minor documentation typo fix 2011-06-24 08:55:03 -04:00
Kyle Banker 0821e16f92 minor: test 2011-06-22 12:06:20 -04:00
Kyle Banker 20d916bf98 RUBY-287 2011-06-20 23:13:32 -04:00
Kyle Banker 4f4e6ee833 RUBY-286 test replica set reconnect when adding a new node 2011-06-17 12:15:07 -04:00
Karl Seguin 7783cebfdf batch_size is taken into account when limit is 0/not set 2011-06-16 22:21:40 +08:00
Kyle Banker fbf7b754ac RUBY-287 OrderedHash#replace 2011-06-15 16:25:20 -04:00
Kyle Banker 3a602e1227 minor: Deprecate :timeout for :pool_timeout 2011-06-15 16:17:42 -04:00
Kyle Banker b0d5df72fa RUBY-269 RUBY-275 added connect_timeout option 2011-06-15 14:20:11 -04:00
Kyle Banker fe423d05d6 Turns out that SystemTimer is not threadsafe. 2011-06-15 11:40:25 -04:00
Kyle Banker 13a53f2554 minor: removed unnecessary reference to @slave_okay 2011-06-15 11:31:10 -04:00
Kyle Banker b496f23b75 Merge pull request #46 from karlseguin/master
collection.drop_index([[SPEC]]) support
2011-06-03 11:41:04 -07:00
Karl Seguin 50a54cdcc0 can drop an index using the same type of spec used to create an index 2011-05-31 19:52:50 +08:00
Kyle Banker 6992c6bb89 Pass show_disk_loc, max_key, and return_key from Collection#find 2011-05-25 13:33:33 -07:00
Kyle Banker d8d929c647 Merge pull request #45 from datanoise/master
Fixes map_reduce call
2011-05-25 13:27:10 -07:00
Kyle Banker 408fbc1b72 Merge pull request #44 from pto/master
Allow drop_dups on ensure_index as well as on create_index
2011-05-25 13:26:50 -07:00
Kyle Banker 029e264241 Merge pull request #43 from path/master
Fix BSON dependency version
2011-05-25 13:13:06 -07:00
Kent Sibilev 03afd82000 deleting :raw option, otherwise map_reduce fails on the server 2011-05-22 21:17:08 -04:00
Peter Olsen 809dcf7e17 add test for ensure_index with drop_dups 2011-05-19 19:35:06 +00:00
Peter Olsen 088b158ece dropDups on ensure_index and remove docs on unimplemented find options 2011-05-19 19:14:38 +00:00
Michael Jackson 9e2f562892 Specify exact BSON version dependency
Since the mongo and bson gems are versioned together, it should follow
that mongo depends on a specific version of bson. Otherwise, client
libraries that require a specific version of mongo, expecting the same
version of bson to be installed may get a different version. This is
particularly painful when a client library specifies a dependency on
both mongo and bson_ext using the same version number, which may not be
the latest, and the dependency from the mongo gem will actually install
a different version of bson than bson_ext.
2011-05-17 11:33:50 -07:00
Michael Jackson ad6edb0a9e Moved Mongo::VERSION to its own file
You shouldn't need to require mongo.rb just to generate the gemspec.
2011-05-17 11:24:21 -07:00
Kyle Banker 98abe355fa BUMP 1.3.1 2011-05-11 12:13:00 -04:00
Kyle Banker d811a36fc6 minor: gemspec fix 2011-05-11 12:12:47 -04:00
Kyle Banker 4ed60ea593 minor: history 2011-05-11 12:10:23 -04:00
Kyle Banker aec396eb76 Merge pull request #42 from thatdutchguy/empty_chunks
fix: reading chunks from an empty (zero-length) grid-stored file
2011-05-11 09:06:38 -07:00
Kyle Banker 504bdefaa4 minor: history 2011-05-11 12:06:43 -04:00
Kyle Banker f9b1f48972 minor: remove unused jar 2011-05-11 11:00:05 -04:00
Kyle Banker 93d7e1512a RUBY-272 ensure that JRuby deserializes binary type 2 properly. 2011-05-11 10:59:21 -04:00
Daniël van de Burgt 6e66b11f6e fix: reading chunks from an empty (zero-length) grid-stored file
reading chunks from an empty file caused an endless loop
2011-05-10 22:58:50 -05:00
Daniël van de Burgt 3cb1e4644b added failing test: reading chunks from an empty (zero-length) grid-stored file 2011-05-10 22:57:22 -05:00
Kyle Banker e0c22e26ae 1.3.1 Release notes 2011-05-10 16:04:16 -04:00
Kyle Banker b8ab13e7f9 Revert "RUBY-267 Cursor#alive?"
This reverts commit 05dfef2f11.
This adds new functionality and thus must wait for the 1.4 release.
2011-05-10 15:58:23 -04:00
Kyle Banker 05dfef2f11 RUBY-267 Cursor#alive? 2011-05-10 15:45:32 -04:00
Kyle Banker 9a80fbaa66 RUBY-266 support maxscan, showDiskLoc, and returnKey 2011-05-10 15:40:06 -04:00
Kyle Banker 505bc68aab minor: RUBY-257 note log_message is a no-op on Connection#receive_message. 2011-05-10 14:35:51 -04:00
Kyle Banker f7e1feaeba minor: make DB#validate_collection compatible with server v1.8 and v1.9.1 2011-05-10 14:28:04 -04:00
Kyle Banker 604d0f60ed RUBY-261 Cursor#close hits secondary when appropriate. 2011-05-10 14:21:23 -04:00
Kyle Banker cb54c6b295 minor: fix for format change is result for 1.9.1 'validate' command. 2011-05-09 14:43:39 -04:00
Kyle Banker 135bebd9ab RUBY-270 support 's' regex option.
Note: Ruby includes dotall 's' semantics on 'm' option.
2011-05-09 14:17:56 -04:00
Kyle Banker 0051b9446a RUBY-260 methods using DB#collection_names should account for symbols. 2011-05-09 12:28:07 -04:00
Kyle Banker 74faed3f38 Merge pull request #41 from rmm5t/refactor_gets
Fix and refactoring for GridIO#gets.
2011-05-09 08:12:40 -07:00
Kyle Banker 0e31598ba1 Merge pull request #39 from steverandy/master
GridIO#get_md5 method should return server md5 when server and local md5 match.
2011-05-09 08:10:51 -07:00
Ryan McGeary 7f384ebd51 Refactored two code paths of GridIO#gets into well-named methods 2011-05-03 11:54:18 -04:00
Ryan McGeary c672168236 Fixed GridIO#gets to handle the end of a file
Neither a multi-character nor single-character separator search returned nil
after hitting the EOF.
2011-05-03 11:36:33 -04:00
Steve Randy Tantra 3a3a31a3dc get_md5 should return @server_md5 when putting file in safe mode. 2011-05-02 01:55:54 +08:00
Kyle Banker eef9abfbdf Merged pull request #38 from iwarshak/master.
fix bug in OrderedHash that prevents YAML.load
2011-04-29 08:27:59 -07:00
Ian Warshak 7c0843f29c implement the yaml_initialize method 2011-04-28 17:32:32 -05:00
Kyle Banker 19b6b61e58 minor: fix for query examples 2011-04-27 11:29:57 -04:00
Kyle Banker ba1e4679fa Leave hash arguments unmodified. 2011-04-27 11:10:48 -04:00
Kyle Banker 8887402ca8 Don't modify hash arguments. 2011-04-26 07:48:17 -04:00
Kyle Banker 9cc6bad613 Simplify GridIO#read_all 2011-04-26 07:48:16 -04:00
Kyle Banker e9195c83ad Remove unused exception class. 2011-04-26 07:48:16 -04:00
Kyle Banker 140dfa9f32 minor: fixes 2011-04-26 07:48:16 -04:00
Kyle Banker af6552ed3c RUBY-265 semantics should == Hash#reject! 2011-04-15 16:19:00 -04:00
Kyle Banker d0a4483713 RUBY-265 fix OrderedHash#reject! 2011-04-15 16:10:38 -04:00
Kyle Banker 9c30de332f minor: test fix 2011-04-15 10:58:37 -04:00
Kyle Banker 043590f9a3 minor: test replica set connect with reverse node order 2011-04-13 14:39:52 -04:00
Kyle Banker bfbc71e60f minor: more idiomatic example in README 2011-04-04 11:24:27 -04:00
Kyle Banker 8534fcd4c6 minor: added RELEASES.md to doc generator 2011-04-04 10:35:44 -04:00
Kyle Banker 9c031b00e6 RUBY-259 Enable ci_reporter 2011-04-01 16:35:18 -04:00
Kyle Banker bdb87c25ad BUMP 1.3.0 2011-04-01 13:54:09 -04:00
Kyle Banker a58361639d minor: history 2011-04-01 13:53:12 -04:00
Kyle Banker 3187761670 RUBY-258 Bytebuffer#unpack takes arbitrary format string 2011-04-01 13:36:28 -04:00
Kyle Banker a19d5bc983 minor: removed old 1.0 upgrade notes 2011-04-01 13:29:25 -04:00
Kyle Banker 26b9b69e48 minor: history 2011-04-01 12:31:33 -04:00
Kyle Banker 113eeb4254 minor: remove unused code in OrderedHash 2011-04-01 12:26:56 -04:00
Kyle Banker 1d3ffe37c7 minor: test fix for server versions < 1.8 2011-03-29 17:02:48 -04:00
Kyle Banker b821a3a48a minor: gemspec fix 2011-03-29 16:44:38 -04:00
Kyle Banker c327a6036d BUMP 1.3.0.rc0 2011-03-29 16:34:53 -04:00
Kyle Banker 6b9eef0d1f RUBY-240 minor fix for RUBY 1.8 2011-03-29 16:01:46 -04:00
Kyle Banker 1f6901be06 minor: release notes 2011-03-29 15:52:38 -04:00
Kyle Banker 002ddb06fc RUBY-240 Add StringIO methods to GridIO 2011-03-29 15:27:13 -04:00
Kyle Banker db1213fc5d RUBY-139 Use BSON binary subtype 0 by default 2011-03-29 12:25:48 -04:00
Kyle Banker 3509926071 Remove Connection#reset_connection (private) and deprecate
ReplSetConnection#reset_connection (public)
2011-03-29 12:18:58 -04:00
Kyle Banker a6cc09e50c RUBY-236 more timeout tweaks and tests 2011-03-29 11:46:29 -04:00
Kyle Banker 017d252689 minor: test fix 2011-03-29 11:09:14 -04:00
Kyle Banker f3174550b7 RUBY-236 Create timeout block only when timeout is set 2011-03-29 11:06:46 -04:00
Kyle Banker 025e56732e minor: test and doc fixes 2011-03-29 10:39:01 -04:00
Kyle Banker 05bf234bb8 RUBY-255 Support BSON Timestamp 2011-03-28 14:36:49 -04:00
Mauro Pompilio baa1d0b802 Method *create_colletion* behaves the same way as *collection*
when options are passed.
2011-03-28 11:23:03 -04:00
Kent Sibilev c9da58965a properly log sorting option 2011-03-28 11:18:14 -04:00
Hongli Lai (Phusion) 6b4ca2461f Implement BSON::ByteBuffer#== 2011-03-28 11:16:54 -04:00
Hongli Lai (Phusion) 08daf9c5f9 Implement BSON::OrderedHash#dup 2011-03-28 11:16:46 -04:00
Kyle Banker 132c319ddd Docs: manual reconnect on fork no longer necessary. 2011-03-28 11:15:10 -04:00
Kyle Banker e49d50acc2 RUBY-236 set op_timeout for socket receive timeouts 2011-03-28 11:09:27 -04:00
Kyle Banker b48a2bd84f RUBY-253 fix UTF8 check for Ruby 1.9 2011-03-24 12:11:12 -04:00
Kyle Banker 1ab2f171c8 minor: doc fix 2011-03-23 17:36:03 -04:00
Kyle Banker 6d9c6bb06c RUBY-237 RUBY-238 Enforce semantic versioning 2011-03-23 17:11:21 -04:00
Kyle Banker 272d4835a7 RUBY-252 RUBY-237 re-add Connection#host and Connection#port 2011-03-23 16:34:42 -04:00
Kyle Banker 2bfe205c51 Merged wpiekutowski's commits to enable warnings
on test suite and clean up some code.

Conflicts:
	test/cursor_test.rb
2011-03-23 16:02:04 -04:00
Kyle Banker bd4731dd39 minor: test fix 2011-03-23 15:32:32 -04:00
Kyle Banker 37f285bf0c minor: docs 2011-03-23 15:30:27 -04:00
John Nunemaker 53ad43fedc Added transformer concept.
Can be passed to find/find_one, which in turn is passed to cursor. It is an optional block that makes it easier to turn documents that are returned into hashes.

cursor = collection.find({...}, :transformer => Proc.new { |doc| User.load(doc) })
cursor.next # returns instance of User instead of ordered hash

This will allow MongoMapper, ToyStore and other object mappers to take better advantage of Cursors. No more calling to_a and mapping to instances.
2011-03-23 15:26:34 -04:00
Kyle Banker 5cdae46b56 RUBY-250 RUBY-231 Test fork safety 2011-03-17 22:38:21 -04:00
Kyle Banker 997d9b8ae2 RUBY-231 RUBY-250 Validate socket against pid 2011-03-17 22:15:14 -04:00
Kyle Banker a8ce896c9f RUBY-245 Unique object id with timestamp 2011-03-15 16:40:27 -04:00
Kyle Banker 8df0ff23f5 RUBY-249 Alias Cursor#next for Cursor#next_document 2011-03-15 14:24:34 -04:00
Kyle Banker 2690520afa RUBY-248 Verify query speed after failover 2011-03-12 17:48:35 -05:00
Kyle Banker 6a46bf7aef RUBY-247 Improved replica set docs. 2011-03-12 08:40:29 -05:00
Kyle Banker 2b7739a257 RUBY-244 issue serializing Time in array 2011-03-04 16:51:12 -05:00
Kyle Banker e5338316c8 minor: text fix for JRuby 2011-03-04 16:42:39 -05:00
Mauro Pompilio e64f91e013 Implementation of the 'ping' command. Probably better suited for the 'active?' method. 2011-03-04 10:51:18 -05:00
Mauro Pompilio 1ad3285767 Add a mechanism to check if the connection is active/healthy. 2011-03-03 10:17:47 -05:00
Kyle Banker ef99f49dd9 minor: task to build gems 2011-02-23 14:52:06 -05:00
Kyle Banker a0aee12907 BUMP 1.2.4 2011-02-23 14:51:49 -05:00
Kyle Banker 4f3937d6a4 Map-reduce doc update for v1.8 2011-02-23 14:43:23 -05:00
Mauro Pompilio fa0a933780 Fix the exception message shown when there's an IOError
while closing a socket in the pool.
2011-02-23 12:43:20 -05:00
Kyle Banker 9076432c48 BUMP 1.2.3 2011-02-23 12:43:00 -05:00
Kyle Banker 24cfde5ef6 Updated map-reduce tests and docs for v1.8 map-reduce options 2011-02-22 17:47:47 -05:00
Wojciech Piekutowski 4c9ff36698 Enable warnings in test:new_features 2011-02-20 17:33:27 +01:00
Wojciech Piekutowski 132ed07bfd Enable warnings in test:authentication 2011-02-20 17:33:20 +01:00
Wojciech Piekutowski d9ba3da0bf Enable warnings in test:auto_reconnect 2011-02-20 17:33:13 +01:00
Wojciech Piekutowski cf6e7e8634 Enable warnings in test:pooled_threading 2011-02-20 17:33:06 +01:00
Wojciech Piekutowski c6491461bc Move helper methods away from tests setup to avoid redefinition on each test run 2011-02-20 17:32:32 +01:00
Wojciech Piekutowski e5ef555f9f Fix failing test 2011-02-20 17:32:32 +01:00
Wojciech Piekutowski a17a0a68af Remove test case name duplication 2011-02-20 17:32:32 +01:00
Wojciech Piekutowski ccd7818024 Fix indentation 2011-02-20 17:27:55 +01:00
Wojciech Piekutowski 46af71fbfe Make cursor test unit names unique 2011-02-20 17:27:48 +01:00
Wojciech Piekutowski 4ea7a14608 Add parenthesis where Ruby thinks they're a good idea 2011-02-20 17:19:14 +01:00
Wojciech Piekutowski 80a44efb68 Prevent outer local variable shadowing 2011-02-20 17:18:08 +01:00
Wojciech Piekutowski 2971793b48 Remove dead code 2011-02-20 17:12:46 +01:00
Wojciech Piekutowski d12987bf7a Always initialize @metadata and @aliases 2011-02-20 17:09:18 +01:00
Wojciech Piekutowski 62900acb4b Initialize @cursor_id 2011-02-20 17:03:32 +01:00
Wojciech Piekutowski 95911166f3 Avoid using instance_variable_get on objects of other class 2011-02-20 17:01:57 +01:00
Wojciech Piekutowski 5270b6ec06 Enable warnings in test:functional 2011-02-20 16:24:31 +01:00
Wojciech Piekutowski 5dfac28dd4 Fix Mongo::Cursor#query_options_hash 2011-02-20 16:22:39 +01:00
Wojciech Piekutowski e4867b542e Initialize instance variables for available options 2011-02-20 16:12:30 +01:00
Wojciech Piekutowski 2644d2b27d Mock and initialize logger 2011-02-20 16:04:01 +01:00
Wojciech Piekutowski 27046e2b3a Unify test_helper.rb loading code 2011-02-20 16:03:05 +01:00
Wojciech Piekutowski 6cdae6dc7e Move helper methods away from tests setup to avoid redefinition on each test run 2011-02-20 16:00:06 +01:00
Wojciech Piekutowski c0b0325100 Enable warnings in test:unit 2011-02-20 15:57:13 +01:00
Wojciech Piekutowski 37f8ff2c9b Enable warnings in test:rs 2011-02-20 15:44:34 +01:00
Wojciech Piekutowski 479438469d Remove duplicated Hash#assert_valid_keys 2011-02-20 15:41:35 +01:00
Wojciech Piekutowski ea180939fd Add parenthesis where Ruby thinks they're a good idea 2011-02-20 15:40:54 +01:00
Wojciech Piekutowski 08d99c08bb Fix indentation 2011-02-20 15:40:15 +01:00
Wojciech Piekutowski 3191aadd94 Silence Encoding.default_internal= warnings 2011-02-20 15:39:46 +01:00
Wojciech Piekutowski 979483fd1e Fix indentation 2011-02-20 15:39:09 +01:00
Wojciech Piekutowski 0f3fda805e Silence shoulda warnings 2011-02-20 15:38:21 +01:00
Wojciech Piekutowski 57d95c9ab3 Don't require 'complex' and 'rational' libs in Ruby 1.9 - they're in core already 2011-02-20 15:37:31 +01:00
Wojciech Piekutowski b541972bdc Remove duplicating character classes from URI regexp in Mongo::URIParser 2011-02-20 15:36:15 +01:00
Wojciech Piekutowski 730118539e Remove duplicated #data reader from BSON::ObjectId 2011-02-20 15:35:22 +01:00
Wojciech Piekutowski e6b6074910 Remove unneeded variable 2011-02-20 15:34:11 +01:00
Wojciech Piekutowski 3ff4f75270 Enable warnings in test:bson 2011-02-20 15:33:33 +01:00
Mani Tadayon 9772328948 Fix typo in error message for Collection#group 2011-02-17 10:20:03 -05:00
Kyle Banker c11e875813 BUMP 1.2.2 2011-02-15 17:09:52 -05:00
Kyle Banker ed44a7490c Improved replica set failover tests. A few
improved exception messages.
2011-02-15 16:48:29 -05:00
Hongli Lai (Phusion) 2335108162 When possible, use system_free() to free asprintf() results.
On OS X, Ruby Enterprise Edition allocates memory with tcmalloc which is
not compatible with the system malloc. asprintf() allocates memory with
the system malloc so we need to free its result with the system free()
function instead of tcmalloc's free() function. REE's system_free()
API call does that.
2011-02-14 09:41:39 -05:00
Kyle Banker 735a93d3bd minor: doc fix 2011-02-10 17:17:18 -05:00
Kyle Banker e55cf2b7d1 minor: doc fix 2011-02-10 17:09:03 -05:00
Kyle Banker 04c536292a BUMP 1.2.1 2011-02-10 15:27:06 -05:00
Kyle Banker 0d90338a46 minor: docs 2011-02-10 15:13:28 -05:00
Kyle Banker 04033bf5a3 minor: rs test framework updates 2011-02-10 14:48:59 -05:00
Kyle Banker 4abf6b8875 tests with Unicorn and Thin for out-of-sync responses 2011-02-10 14:42:29 -05:00
Kyle Banker 76730d4a7c RUBY-233 show invalid key on invalid key exception 2011-02-04 12:07:28 -05:00
Kyle Banker 0c574b9975 minor: alias Connection#reconnect to Connection#connect 2011-02-02 11:36:56 -05:00
Kyle Banker e8e617e95f Test for replica set authentication; bug fix. 2011-02-02 11:26:31 -05:00
Kyle Banker d63cf18042 minor: note 2011-02-02 09:51:13 -05:00
Kyle Banker 5017646209 minor: test fix and cleanup 2011-01-31 15:53:38 -05:00
Kyle Banker 9c83ca6b3e minor style and doc fixes. warning about logging performance issues. 2011-01-31 15:51:39 -05:00
Steve Sloan 8a7296599b Refactored logging of DB operations to use Connection#instrument.
This allows for easy overriding, e.g. to ActiveSupport notifications.
2011-01-31 15:13:12 -05:00
Kyle Banker 7c4740c47c RUBY-232 handle authentication with connection pooling 2011-01-31 14:47:38 -05:00
Andy Gregorowicz 285752a7ad Switching parameter name in Collection#group from key to opts to fix YARD doc 2011-01-21 14:20:52 -07:00
Andy Gregorowicz 153bedf5f6 Switching parameter name from key to opts to fix YARD doc 2011-01-21 14:20:44 -07:00
Kyle Banker ba38d1a5ab RUBY-230 minor: test fix for maxBsonObjectSize 2011-01-18 16:20:51 -05:00
Kyle Banker 7b825aca72 minor: HISTORY cleanup 2011-01-18 11:36:04 -05:00
Kyle Banker 648094c80f BUMP 1.2.0 2011-01-18 11:20:59 -05:00
Kyle Banker fab538ed5e minor: alias #read_primary? with #primary? 2011-01-17 13:37:41 -05:00
Kyle Banker 0d91faf6b1 RUBY-226 minor: license update 2011-01-17 12:26:32 -05:00
Kyle Banker af43e9c2ce RUBY-255 2011-01-17 12:06:03 -05:00
Kyle Banker 2b835c0e48 RUBY-227 passwords in URIs can contain all
characters excepts commas now.
2011-01-17 11:05:24 -05:00
Kyle Banker 428d959128 minor: recomplile Java extensions 2011-01-14 10:50:55 -05:00
Kyle Banker 016743b015 RUBY-224 encode JRuby strings with byte[] 2011-01-14 10:50:32 -05:00
167 changed files with 22788 additions and 2116 deletions

11
.gitignore vendored
View File

@ -14,3 +14,14 @@ benchmark
*#* *#*
*.class *.class
*.swp *.swp
*.pid
*.log
test/load/unicorn/unicorn.rb
test/load/thin/config.yml
test/tools/data/
.rvmrc
Gemfile.lock
.idea/*
tmp

11
.travis.yml Normal file
View File

@ -0,0 +1,11 @@
language: ruby
rvm:
- 1.8.7
- 1.9.2
- 1.9.3
script: bundle exec rake test:ruby
notifications:
email: false

28
Gemfile Normal file
View File

@ -0,0 +1,28 @@
source :rubygems
group :development, :test do
# Generic
gem "bundler"
gem "rake"
gem "json"
# Deployment
gem "git"
gem "redcarpet"
gem "yard"
# Testing
gem "mocha"
gem "shoulda"
gem "test-unit"
gem "ci_reporter"
gem "ruby-prof" unless RUBY_PLATFORM =~ /java/
gem "rake-compiler"
# Java
platforms :jruby do
gem "bouncy-castle-java"
gem "jruby-launcher"
gem "jruby-openssl"
end
end

162
README.md
View File

@ -1,39 +1,64 @@
# Documentation
This API documentation is available online at [http://api.mongodb.org/ruby](http://api.mongodb.org/ruby)
for all releases of the MongoDB Ruby driver. Please reference the exact version of the documentation
that matches the release of the Ruby driver that you are using. Note that the
[Ruby Language Center for MongoDB](http://www.mongodb.org/display/DOCS/Ruby+Language+Center)
has a link to API Documentation for the current release.
If you have the source, you can generate the matching documentation by typing
$ rake ydoc
Then open the file ydoc/index.html in your browser.
# Introduction # Introduction
This is the 10gen-supported Ruby driver for [MongoDB](http://www.mongodb.org). This is the 10gen-supported Ruby driver for [MongoDB](http://www.mongodb.org).
This documentation includes other articles of interest, include: For the reference manual, use the links in the upper-left and upper-right corners for quick navigation to the following.
1. [A tutorial](http://api.mongodb.org/ruby/current/file.TUTORIAL.html). * [Alphabetic Index](_index.html)
2. [Replica Sets in Ruby](http://api.mongodb.org/ruby/current/file.REPLICA_SETS.html). * [Class List](class_list.html)
3. [Write Concern in Ruby](http://api.mongodb.org/ruby/current/file.WRITE_CONCERN.html). * [Method List](method_list.html)
4. [GridFS in Ruby](http://api.mongodb.org/ruby/current/file.GridFS.html). * [File List](file_list.html)
5. [Frequently Asked Questions](http://api.mongodb.org/ruby/current/file.FAQ.html).
6. [History](http://api.mongodb.org/ruby/current/file.HISTORY.html).
7. [Credits](http://api.mongodb.org/ruby/current/file.CREDITS.html).
Here's a quick code sample. Again, see the [MongoDB Ruby Tutorial](http://api.mongodb.org/ruby/current/file.TUTORIAL.html) This documentation has other articles of interest, including:
1. [A tutorial](docs/TUTORIAL.md).
2. [Replica Sets in Ruby](docs/REPLICA_SETS.md).
3. [Write Concern in Ruby](docs/WRITE_CONCERN.md).
4. [Tailable Cursors in Ruby](docs/TAILABLE_CURSORS.md).
5. [Read Preference in Ruby](docs/READ_PREFERENCE.md).
6. [GridFS in Ruby](docs/GridFS.md).
7. [Frequently Asked Questions](docs/FAQ.md).
8. [History](docs/HISTORY.md).
9. [Release plan](docs/RELEASES.md).
10. [Credits](docs/CREDITS.md).
Here's a quick code sample. Again, see the [MongoDB Ruby Tutorial](docs/TUTORIAL.md)
for much more: for much more:
require 'rubygems' require 'rubygems'
require 'mongo' require 'mongo'
include Mongo
db = Connection.new.db('sample-db') @conn = Mongo::Connection.new
coll = db.collection('test') @db = @conn['sample-db']
@coll = @db['test']
coll.remove @coll.remove
3.times do |i| 3.times do |i|
coll.insert({'a' => i+1}) @coll.insert({'a' => i+1})
end end
puts "There are #{coll.count()} records. Here they are:"
coll.find().each { |doc| puts doc.inspect } puts "There are #{@coll.count} records. Here they are:"
@coll.find.each { |doc| puts doc.inspect }
# Installation # Installation
### Ruby Versions ### Ruby Versions
The driver works and is consistently tested on Ruby 1.8.6, 1.8.7, and 1.9.2, and JRuby 1.5.1. The driver works and is consistently tested on Ruby 1.8.7 and 1.9.3 as well as JRuby 1.6.6.
Note that if you're on 1.8.7, be sure that you're using a patchlevel >= 249. There Note that if you're on 1.8.7, be sure that you're using a patchlevel >= 249. There
are some IO bugs in earlier versions. are some IO bugs in earlier versions.
@ -58,7 +83,7 @@ And for a significant performance boost, you'll want to install the C extensions
$ gem install bson_ext $ gem install bson_ext
Note that bson_ext isn't used with JRuby. Instead, some native Java extensions are bundled with the bson gem. Note that bson_ext isn't used with JRuby. Instead, some native Java extensions are bundled with the bson gem.
If you ever need to modify these extenions, you can recompile with the following rake task: If you ever need to modify these extensions, you can recompile with the following rake task:
$ rake build:java $ rake build:java
@ -79,7 +104,7 @@ That's all there is to it!
# Examples # Examples
For extensive examples, see the [MongoDB Ruby Tutorial](http://www.mongodb.org/display/DOCS/Ruby+Tutorial). For extensive examples, see the [MongoDB Ruby Tutorial](http://api.mongodb.org/ruby/current/file.TUTORIAL.html).
Bundled with the driver are many examples, located in the "docs/examples" subdirectory. Samples include using Bundled with the driver are many examples, located in the "docs/examples" subdirectory. Samples include using
the driver and using the GridFS class GridStore. MongoDB must be running for the driver and using the GridFS class GridStore. MongoDB must be running for
@ -99,7 +124,7 @@ See also the test code, especially test/test_db_api.rb.
The Ruby driver include two abstractions for storing large files: Grid and GridFileSystem. The Ruby driver include two abstractions for storing large files: Grid and GridFileSystem.
The Grid class is a Ruby implementation of MongoDB's GridFS file storage The Grid class is a Ruby implementation of MongoDB's GridFS file storage
specification. GridFileSystem is essentailly the same, but provides a more filesystem-like API specification. GridFileSystem is essentially the same, but provides a more filesystem-like API
and assumes that filenames are unique. and assumes that filenames are unique.
An instance of both classes represents an individual file store. See the API reference An instance of both classes represents an individual file store. See the API reference
@ -107,9 +132,10 @@ for details, and see examples/gridfs.rb for code that uses many of the Grid
features (metadata, content type, seek, tell, etc). features (metadata, content type, seek, tell, etc).
Examples: Examples:
# Write a file on disk to the Grid # Write a file on disk to the Grid
file = File.open('image.jpg') file = File.open('image.jpg')
grid = Grid.new(db) grid = Mongo::Grid.new(db)
id = grid.put(file) id = grid.put(file)
# Retrieve the file # Retrieve the file
@ -129,7 +155,7 @@ The driver is thread-safe.
## Connection Pooling ## Connection Pooling
As of v0.18, the driver implements connection pooling. By default, only one The driver implements connection pooling. By default, only one
socket connection will be opened to MongoDB. However, if you're running a socket connection will be opened to MongoDB. However, if you're running a
multi-threaded application, you can specify a maximum pool size and a maximum multi-threaded application, you can specify a maximum pool size and a maximum
timeout for waiting for old connections to be released to the pool. timeout for waiting for old connections to be released to the pool.
@ -141,20 +167,21 @@ To set up a pooled connection to a single MongoDB instance:
Though the pooling architecture will undoubtedly evolve, it currently owes much credit Though the pooling architecture will undoubtedly evolve, it currently owes much credit
to the connection pooling implementations in ActiveRecord and PyMongo. to the connection pooling implementations in ActiveRecord and PyMongo.
## Using with Phusion Passenger and Unicorn ## Forking
When Passenger and Unicorn are in smart spawning mode you need to be sure that child Certain Ruby application servers work by forking, and it has long been necessary to
processes will create a new connection to the database. In Passenger, this can be handled like so: re-establish the child process's connection to the database after fork. But with the release
of v1.3.0, the Ruby driver detects forking and reconnects automatically.
if defined?(PhusionPassenger) ## Environment variable `MONGODB_URI`
PhusionPassenger.on_event(:starting_worker_process) do |forked|
if forked
# Create new connection here
end
end
end
The above code should be put into a Rails initializer or other initialization script. `Mongo::Connection.from_uri`, `Mongo::Connection.new` and `Mongo::ReplSetConnection.new` will use <code>ENV["MONGODB_URI"]</code> if no other args are provided.
The URI must fit this specification:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
If the type of connection (direct or replica set) should be determined entirely from <code>ENV["MONGODB_URI"]</code>, you may want to use `Mongo::Connection.from_uri` because it will return either `Mongo::Connection` or a `Mongo::ReplSetConnection` depending on how many hosts are specified. Trying to use `Mongo::Connection.new` with multiple hosts in <code>ENV["MONGODB_URI"]</code> will raise an exception.
## String Encoding ## String Encoding
@ -202,7 +229,7 @@ Here is a sample primary key factory, taken from the tests:
class TestPKFactory class TestPKFactory
def create_pk(row) def create_pk(row)
row['_id'] ||= Mongo::ObjectID.new row['_id'] ||= BSON::ObjectId.new
row row
end end
end end
@ -212,14 +239,14 @@ keys. This is the PKFactory that comes with the MongoRecord code (an
ActiveRecord-like framework for non-Rails apps) and the AR Mongo adapter code ActiveRecord-like framework for non-Rails apps) and the AR Mongo adapter code
(for Rails): (for Rails):
class PKFactory class PKFactory
def create_pk(row) def create_pk(row)
return row if row[:_id] return row if row[:_id]
row.delete(:_id) # in case it exists but the value is nil row.delete(:_id) # in case it exists but the value is nil
row['_id'] ||= Mongo::ObjectID.new row['_id'] ||= BSON::ObjectId.new
row row
end
end end
end
A database's PK factory object may be set either when a DB object is created A database's PK factory object may be set either when a DB object is created
or immediately after you obtain it, but only once. The only reason it is or immediately after you obtain it, but only once. The only reason it is
@ -259,10 +286,31 @@ Notes:
* Cursors will timeout on the server after 10 minutes. If you need to keep a cursor * Cursors will timeout on the server after 10 minutes. If you need to keep a cursor
open for more than 10 minutes, specify `:timeout => false` when you create the cursor. open for more than 10 minutes, specify `:timeout => false` when you create the cursor.
## Socket timeouts
The Ruby driver support timeouts on socket read operations. To enable them, set the
`:op_timeout` option when you create a `Mongo::Connection` object.
If implementing higher-level timeouts, using tools like `Rack::Timeout`, it's very important
to call `Mongo::Connection#close` to prevent the subsequent operation from receiving the previous
request.
### Test-Unit, Shoulda, and Mocha
Running the test suite requires test-unit, shoulda, and mocha. You can install them as follows:
$ gem install test-unit
$ gem install shoulda
$ gem install mocha
The tests assume that the Mongo database is running on the default port. You
can override the default host (localhost) and port (Connection::DEFAULT_PORT) by
using the environment variables MONGO_RUBY_DRIVER_HOST and
MONGO_RUBY_DRIVER_PORT.
# Testing # Testing
If you have the source code, you can run the tests. If you have the source code, you can run the tests. Skip this test with the C extension if you're running JRuby.
$ rake test:c $ rake test:c
@ -275,37 +323,13 @@ These will run both unit and functional tests. To run these tests alone:
$ rake test:unit $ rake test:unit
$ rake test:functional $ rake test:functional
To run any individual rake tasks with the C extension enabled, just pass C_EXT=true to the task: To run any individual rake tasks with the C extension enabled, just pass C_EXT=true to the task (don't do this with JRuby):
$ rake test:unit C_EXT=true $ rake test:unit C_EXT=true
If you want to test replica set, you can run the following tests If you want to test replica set, you can run the following task:
individually:
$ rake test:replica_set_count $ rake test:rs
$ rake test:replica_set_insert
$ rake test:replica_set_query
### Shoulda and Mocha
Running the test suite requires shoulda and mocha. You can install them as follows:
$ gem install shoulda
$ gem install mocha
The tests assume that the Mongo database is running on the default port. You
can override the default host (localhost) and port (Connection::DEFAULT_PORT) by
using the environment variables MONGO_RUBY_DRIVER_HOST and
MONGO_RUBY_DRIVER_PORT.
# Documentation
This documentation is available online at [http://api.mongodb.org/ruby](http://api.mongodb.org/ruby). You can
generate the documentation if you have the source by typing
$ rake ydoc
Then open the file +ydoc/index.html+.
# Release Notes # Release Notes

208
Rakefile
View File

@ -1,18 +1,38 @@
# -*- mode: ruby; -*- # -*- mode: ruby; -*-
require 'rubygems' if RUBY_VERSION < '1.9.0'
require 'rubygems/specification' require 'rubygems'
require 'fileutils' require 'rubygems/specification'
require 'rake'
require 'rake/testtask'
require 'rake/gempackagetask'
begin
require 'rake/contrib/rubyforgepublisher'
rescue LoadError
end end
require 'rbconfig'
include Config require 'fileutils'
require 'rake/testtask'
require 'rake'
require 'rake/extensiontask'
require 'rake/javaextensiontask'
begin
require 'git'
require 'devkit'
require 'ci/reporter/rake/test_unit'
rescue LoadError
end
ENV['TEST_MODE'] = 'TRUE' ENV['TEST_MODE'] = 'TRUE'
Rake::ExtensionTask.new('cbson') do |ext|
ext.lib_dir = "lib/bson_ext"
end
#Rake::JavaExtensionTask.new('jbson') do |ext| # not yet functional
# ext.ext_dir = 'ext/src/org/jbson'
#end
desc "Compiles and tests MongoDB Ruby driver w/ C extensions."
task :c do
Rake::Task['compile:cbson'].invoke
Rake::Task['test:c'].invoke
end
task :java do task :java do
Rake::Task['build:java'].invoke Rake::Task['build:java'].invoke
Rake::Task['test:ruby'].invoke Rake::Task['test:ruby'].invoke
@ -26,12 +46,11 @@ namespace :build do
jar_dir = File.join(java_dir, 'jar') jar_dir = File.join(java_dir, 'jar')
jruby_jar = File.join(jar_dir, 'jruby.jar') jruby_jar = File.join(jar_dir, 'jruby.jar')
mongo_jar = File.join(jar_dir, 'mongo-2.2.jar') mongo_jar = File.join(jar_dir, 'mongo-2.6.5.jar')
bson_jar = File.join(jar_dir, 'bson-2.2.jar')
src_base = File.join(java_dir, 'src') src_base = File.join(java_dir, 'src')
system("javac -Xlint:unchecked -classpath #{jruby_jar}:#{mongo_jar}:#{bson_jar} #{File.join(src_base, 'org', 'jbson', '*.java')}") system("javac -Xlint:deprecation -Xlint:unchecked -classpath #{jruby_jar}:#{mongo_jar} #{File.join(src_base, 'org', 'jbson', '*.java')}")
system("cd #{src_base} && jar cf #{File.join(jar_dir, 'jbson.jar')} #{File.join('.', 'org', 'jbson', '*.class')}") system("cd #{src_base} && jar cf #{File.join(jar_dir, 'jbson.jar')} #{File.join('.', 'org', 'jbson', '*.class')}")
end end
end end
@ -42,10 +61,14 @@ task :test do
puts "To test the pure ruby driver: \nrake test:ruby\n\n" puts "To test the pure ruby driver: \nrake test:ruby\n\n"
end end
task :path do
$:.unshift(File.join(File.dirname(__FILE__), 'lib'))
end
namespace :test do namespace :test do
desc "Test the driver with the C extension enabled." desc "Test the driver with the C extension enabled."
task :c do task :c => :path do
ENV['C_EXT'] = 'TRUE' ENV['C_EXT'] = 'TRUE'
if ENV['TEST'] if ENV['TEST']
Rake::Task['test:functional'].invoke Rake::Task['test:functional'].invoke
@ -60,7 +83,7 @@ namespace :test do
end end
desc "Test the driver using pure ruby (no C extension)" desc "Test the driver using pure ruby (no C extension)"
task :ruby do task :ruby => :path do
ENV['C_EXT'] = nil ENV['C_EXT'] = nil
if ENV['TEST'] if ENV['TEST']
Rake::Task['test:functional'].invoke Rake::Task['test:functional'].invoke
@ -77,46 +100,61 @@ namespace :test do
Rake::TestTask.new(:rs) do |t| Rake::TestTask.new(:rs) do |t|
t.test_files = FileList['test/replica_sets/*_test.rb'] t.test_files = FileList['test/replica_sets/*_test.rb']
t.verbose = true t.verbose = true
t.ruby_opts << '-w'
end
desc "Run the replica set test suite"
Rake::TestTask.new(:rs_no_threads) do |t|
t.test_files = FileList['test/replica_sets/*_test.rb'] - ["test/replica_sets/refresh_with_threads_test.rb"]
t.verbose = true
t.ruby_opts << '-w'
end end
Rake::TestTask.new(:unit) do |t| Rake::TestTask.new(:unit) do |t|
t.test_files = FileList['test/unit/*_test.rb'] t.test_files = FileList['test/unit/*_test.rb']
t.verbose = true t.verbose = true
t.ruby_opts << '-w'
end end
Rake::TestTask.new(:functional) do |t| Rake::TestTask.new(:functional) do |t|
t.test_files = FileList['test/*_test.rb'] t.test_files = FileList['test/*_test.rb']
t.verbose = true t.verbose = true
t.ruby_opts << '-w'
end end
Rake::TestTask.new(:pooled_threading) do |t| Rake::TestTask.new(:pooled_threading) do |t|
t.test_files = FileList['test/threading/*_test.rb'] t.test_files = FileList['test/threading/*_test.rb']
t.verbose = true t.verbose = true
t.ruby_opts << '-w'
end end
Rake::TestTask.new(:auto_reconnect) do |t| Rake::TestTask.new(:auto_reconnect) do |t|
t.test_files = FileList['test/auxillary/autoreconnect_test.rb'] t.test_files = FileList['test/auxillary/autoreconnect_test.rb']
t.verbose = true t.verbose = true
t.ruby_opts << '-w'
end end
Rake::TestTask.new(:authentication) do |t| Rake::TestTask.new(:authentication) do |t|
t.test_files = FileList['test/auxillary/authentication_test.rb'] t.test_files = FileList['test/auxillary/authentication_test.rb']
t.verbose = true t.verbose = true
t.ruby_opts << '-w'
end end
Rake::TestTask.new(:new_features) do |t| Rake::TestTask.new(:new_features) do |t|
t.test_files = FileList['test/auxillary/1.4_features.rb'] t.test_files = FileList['test/auxillary/1.4_features.rb']
t.verbose = true t.verbose = true
t.ruby_opts << '-w'
end end
Rake::TestTask.new(:bson) do |t| Rake::TestTask.new(:bson) do |t|
t.test_files = FileList['test/bson/*_test.rb'] t.test_files = FileList['test/bson/*_test.rb']
t.verbose = true t.verbose = true
t.ruby_opts << '-w'
end end
task :drop_databases do |t| task :drop_databases => :path do |t|
puts "Dropping test databases..." puts "Dropping test databases..."
require './lib/mongo' require 'mongo'
con = Mongo::Connection.new(ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost', con = Mongo::Connection.new(ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost',
ENV['MONGO_RUBY_DRIVER_PORT'] || Mongo::Connection::DEFAULT_PORT) ENV['MONGO_RUBY_DRIVER_PORT'] || Mongo::Connection::DEFAULT_PORT)
con.database_names.each do |name| con.database_names.each do |name|
@ -135,13 +173,21 @@ end
desc "Generate YARD documentation" desc "Generate YARD documentation"
task :ydoc do task :ydoc do
require File.join(File.dirname(__FILE__), 'lib', 'mongo') require './lib/mongo/version.rb'
out = File.join('ydoc', Mongo::VERSION) out = File.join('ydoc', Mongo::VERSION)
FileUtils.rm_rf('ydoc') FileUtils.rm_rf('ydoc')
system "yardoc lib/**/*.rb lib/mongo/**/*.rb lib/bson/**/*.rb -e yard/yard_ext.rb -p yard/templates -o #{out} --title MongoRuby-#{Mongo::VERSION} --files docs/TUTORIAL.md,docs/GridFS.md,docs/FAQ.md,docs/REPLICA_SETS.md,docs/WRITE_CONCERN.md,docs/HISTORY.md,docs/CREDITS.md,docs/1.0_UPGRADE.md" system "yardoc lib/**/*.rb lib/mongo/**/*.rb lib/bson/**/*.rb -e ./yard/yard_ext.rb -p yard/templates -o #{out} --title MongoRuby-#{Mongo::VERSION} --files docs/TUTORIAL.md,docs/GridFS.md,docs/FAQ.md,docs/REPLICA_SETS.md,docs/WRITE_CONCERN.md,docs/READ_PREFERENCE.md,docs/HISTORY.md,docs/CREDITS.md,docs/RELEASES.md,docs/CREDITS.md,docs/TAILABLE_CURSORS.md"
end end
namespace :bamboo do namespace :jenkins do
task :ci_reporter do
begin
require 'ci/reporter/rake/test_unit'
rescue LoadError
warn "Warning: Unable to load ci_reporter gem."
end
end
namespace :test do namespace :test do
task :ruby do task :ruby do
Rake::Task['test:ruby'].invoke Rake::Task['test:ruby'].invoke
@ -155,31 +201,34 @@ namespace :bamboo do
end end
namespace :gem do namespace :gem do
desc "Install the gem locally" desc "Install the gem locally"
task :install do task :install do
sh "gem build bson.gemspec" `gem build bson.gemspec`
sh "gem install --no-rdoc --no-ri bson-*.gem" `gem install --no-rdoc --no-ri bson-*.gem`
sh "gem build mongo.gemspec" `gem build mongo.gemspec`
sh "gem install --no-rdoc --no-ri mongo-*.gem" `gem install --no-rdoc --no-ri mongo-*.gem`
sh "rm mongo-*.gem" `rm mongo-*.gem`
sh "rm bson-*.gem" `rm bson-*.gem`
end
desc "Uninstall the optional c extensions"
task :uninstall_extensions do
`gem uninstall bson_ext`
end end
desc "Install the optional c extensions" desc "Install the optional c extensions"
task :install_extensions do task :install_extensions do
sh "gem build bson_ext.gemspec" `gem build bson_ext.gemspec`
sh "gem install --no-rdoc --no-ri bson_ext-*.gem" `gem install --no-rdoc --no-ri bson_ext-*.gem`
sh "rm bson_ext-*.gem" `rm bson_ext-*.gem`
end end
end end
namespace :ci do namespace :ci do
namespace :test do namespace :test do
task :c do task :c => :path do
Rake::Task['gem:install'].invoke Rake::Task['gem:install'].invoke
Rake::Task['gem:install_extensions'].invoke Rake::Task['gem:install_extensions'].invoke
Rake::Task['test:c'].invoke Rake::Task['test:c'].invoke
@ -187,6 +236,99 @@ namespace :ci do
end end
end end
# Deployment
VERSION_FILES = %w(lib/bson/version.rb lib/mongo/version.rb ext/cbson/version.h)
GEMSPECS = %w(bson.gemspec bson.java.gemspec bson_ext.gemspec mongo.gemspec)
def gem_list(version)
files = []
files << "bson-#{version}.gem"
files << "bson-#{version}-java.gem"
files << "bson_ext-#{version}.gem"
files << "mongo-#{version}.gem"
return files
end
def check_gem_list_existence(version)
gem_list(version).each do |filename|
if !File.exists?(filename)
raise "#{filename} does not exist!"
end
end
end
def check_version(version)
if !(version =~ /\d\.\d\.\d/)
raise "Must specify a valid version (e.g., x.y.z)"
end
end
def current_version
f = File.open("lib/mongo/version.rb")
str = f.read
str =~ /VERSION\s+=\s+([.\d"]+)$/
return $1
end
def change_version(new_version)
version = current_version
puts "Changing version from #{version} to #{new_version}"
VERSION_FILES.each do |filename|
f = File.open(filename)
str = f.read
f.close
str.gsub!(version, "\"#{new_version}\"")
File.open(filename, 'w') do |f|
f.write(str)
end
end
end
namespace :deploy do
desc "Change version to new release"
task :change_version, [:version] do |t, args|
check_version(args[:version])
change_version(args[:version])
end
desc "Add version files, commit, tag release"
task :git_prepare do |t, args|
g = Git.open(Dir.getwd())
version = current_version
to_commit = VERSION_FILES << 'docs/HISTORY.md'
g.add(to_commit)
g.commit "RELEASE #{version}"
g.add_tag("#{version}")
end
desc "Push release to github"
task :git_push do
g = Git.open(Dir.getwd())
g.push
end
desc "Build all gems"
task :gem_build do
`rm *.gem`
`gem build mongo.gemspec`
`gem build bson.gemspec`
`gem build bson.java.gemspec`
`gem build bson_ext.gemspec`
puts `ls *.gem`
end
desc "Push all gems to RubyGems"
task :gem_push do |t, args|
check_gem_list_existence(current_version)
gem_list.each do |gem|
puts "Push #{gem} to RubyGems? (y/N)"
if gets.chomp! == 'y'
system "gem push #{gem}"
end
end
end
end
task :default => :list task :default => :list
task :list do task :list do

62
bench/Rakefile Normal file
View File

@ -0,0 +1,62 @@
require 'benchmark'
ENV['MODE'] = 'c'
$suite = {
:suite_insert_one => [ :test_insert_one, :test_insert_one_safe ],
:suite_insert_many => [ :test_insert_many, :test_insert_many_safe ],
:suite_find => [ :test_find_one, :test_find_many ],
:suite_nest => [ :test_insert_one_nest_full, :test_find_one_nest_full ],
}
$date = Time.now.strftime('%Y%m%d-%H%M')
def suite_series_name(suite)
"exp_series_#{suite}_#{ENV['MODE']}"
end
def suite_file_name(suite)
suite_series_name(suite) + '.js'
end
def suite_file_name_temp(suite)
suite_file_name(suite) + '.tmp'
end
task :default => [:c, :ruby]
task :c do
ENV['MODE'] = 'c'
$suite.each_key do |key|
Rake::Task[key].invoke
end
end
task :ruby do
ENV['MODE'] = 'ruby'
$suite.each_key do |suite|
Rake::Task[suite].execute
end
end
$suite.each do |suite, tests|
tests.each do |t|
task t do
sh "ruby exp_series.rb --file #{suite_file_name_temp(suite)} --mode #{ENV['MODE']} --tag #{suite} -- --name #{t}"
end
end
desc "#{suite} - #{$suite[suite].join(', ')}"
task suite do |t|
File.open(suite_file_name_temp(suite), 'w'){|f| f.puts("#{suite_series_name(suite)} = [")}
btms = Benchmark.measure do
$suite[suite].each do |pre|
Rake::Task[pre].execute
end
end
File.open(suite_file_name_temp(suite), 'a'){|f| f.puts("]; // #{(btms.real/60.0).round} minutes")}
sh "mv #{suite_file_name_temp(suite)} #{suite_file_name(suite)}"
end
end
task :clobber do
sh "rm -f exp_series_suite_*.js"
end

1
bench/excanvas.min.js vendored Normal file

File diff suppressed because one or more lines are too long

675
bench/exp_series.html Normal file
View File

@ -0,0 +1,675 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Exp Series Performance Tests</title>
<!-- http://code.google.com/p/flot/ -->
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="excanvas.min.js"></script><![endif]-->
<script language="javascript" type="text/javascript" src="jquery.js"></script>
<script language="javascript" type="text/javascript" src="jquery.flot.js"></script>
<script language="javascript" type="text/javascript" src="exp_series_suite_insert_one_c.js"></script>
<script language="javascript" type="text/javascript" src="exp_series_suite_insert_one_ruby.js"></script>
<script language="javascript" type="text/javascript" src="exp_series_suite_insert_many_c.js"></script>
<script language="javascript" type="text/javascript" src="exp_series_suite_insert_many_ruby.js"></script>
<script language="javascript" type="text/javascript" src="exp_series_suite_find_c.js"></script>
<script language="javascript" type="text/javascript" src="exp_series_suite_find_ruby.js"></script>
<script language="javascript" type="text/javascript" src="exp_series_suite_nest_c.js"></script>
<script language="javascript" type="text/javascript" src="exp_series_suite_nest_ruby.js"></script>
<style type="text/css">
body {
font-family: sans-serif;
font-size: 16px;
margin: 50px;
}
h2 {
padding: 20px;
background-color: lightblue;
}
.title {
font-weight: bold;
margin: 20px;
}
.show_hide, #show_all, #show_default {
padding: 1px;
line-height: 200%;
cursor: pointer;
background-color: LightGray;
}
.graph {
width:800px;
height:400px;
}
.note {
margin: 20px;
}
.hidden {
display: none; //visibility: hidden; // to collapse, use display: none
}
</style>
</head>
<body>
<h1>Exp Series Performance Tests</h1>
x-axis is power of 2, log base 2 of size<br/>
y-axis is "document" operations per second, ex., total document insertions per second<br/>
<br/>
user_ops are operations per user-CPU-time second<br/>
real_ops are operations per real-time second<br/>
<br/>
For measuring Ruby driver performance, we are interested primarily in the "user" CPU time.<br/>
The "user" time is the time used by the Ruby driver, typically less than real time.<br/>
<br/>
<span id="show_all">Show All</span> <span id="show_default">Show Default</span>
<hr/>
<h2>Issues</h2><div id="array_slow"></div>
<hr/>
<h2>Best Practices</h2><div id="best_practices"></div>
<hr/>
<h2>Insert Many Safe - with Data Sizes</h2><p>Insert many safe is faster than insert one safe especially for increasing multiples and for smaller data, as expected.</p><div id="insert_many_safe"></div>
<hr/>
<h2>Insert Many - with Data Sizes</h2><p>Insert many is faster than insert one especially for increasing multiples and for smaller data, as expected.</p><div id="insert_many"></div>
<hr/>
<h2>Insert One Fast versus Safe - with Real Time</h2><p>Fast mode is significantly faster than safe mode especially for smaller data, as expected.</p><div id="insert_one_safe"></div>
<hr/>
<h2>Find Many versus Find One - with Real Time</h2><p>Find many with cursor is significantly faster than find one, as expected.</p><div id="find"></div>
<hr/>
<h2>C versus Ruby - with Real Time</h2><p>The C extension is significantly faster than Ruby, as expected.</p><div id="c_vs_ruby"></div>
<hr/>
<h2>Nested Structures</h2><p>The deeper binary nested array is slower than broader structures with the same number of leaves, so we omit broader structures in other tests.</p><div id="nested"></div>
<hr/>
<script type="text/javascript">
suite = [
exp_series_suite_insert_one_c,
exp_series_suite_insert_one_ruby,
exp_series_suite_insert_many_c,
exp_series_suite_insert_many_ruby,
exp_series_suite_find_c,
exp_series_suite_find_ruby,
exp_series_suite_nest_c,
exp_series_suite_nest_ruby
];
expSeries = [];
for (i in suite) { expSeries = expSeries.concat(suite[i]); }
function genOpXY(a, xMax, plotSpec) {
var genOpA = $.grep(a, function(e, i){
if (e.exp2 > xMax) return false;
for (var key in plotSpec) {
if (key != 'x' && key != 'y' && e[key] != plotSpec[key]) return false;
}
return true;
});
return $.map(genOpA, function(e, i){return [[e[plotSpec.x], e[plotSpec.y]]];});
}
function flotSeries(expSeries, xMax, labelSpec, plotLines) {
return $.map(plotLines, function(plotSpec, i){
return {
label: plotSpec.y + ', ' + labelSpec + ': ' + plotSpec[labelSpec],
data: genOpXY(expSeries, xMax, plotSpec),
lines: { show: true },
points: { show: true }
};
});
}
$(function () {
function xExpTicks(axis) {
var res = [];
for (var i = axis.min; i <= axis.max; i++) {
res.push([i, i + ':' + Math.pow(2,i)]);
}
return res;
}
function doPlot(section, title, series, classes, notes) {
var id = title.replace(/\W/g,'_');
$(section).append('<hr/>' +
'<span id="show_hide_' + id + '" class="show_hide">Show/Hide</span>' +
'<span class="title">' + title + '</span>' +
'<span id="note_' + id + '" class="note"></span>' +
'<div id="' + id + '" class="graph"></div>');
$('#note_' + id).text(notes);
var e = $('#' + id);
$.plot(e, series, {
xaxis:{ ticks:xExpTicks },
yaxes:[
{ min:0 }
],
legend:{ position:'ne' },
grid:{ hoverable:true }
});
e.addClass(classes);
}
// comment pending
var graph = [
[ '#array_slow', 'array_size_fixnum slow versus hash_size_fixnum insert one C', '', 12, 'generator',
[
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' }
],
'Array insertion is significantly slower than hash insertion. ' +
'Investigation shows that there is an extra malloc/free for each array index key. '
],
[ '#array_slow', 'array_size_fixnum fast versus slow insert one C', '', 12, 'tag',
[
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'array_fast', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' }
],
'Pending: Array insertion is now faster.'
],
[ '#array_slow', 'array_size_fixnum fast versus hash_size_fixnum insert one C', '', 12, 'generator',
[
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'array_fast', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' }
],
'Pending: Array insertion is now as fast as hash insertion.'
],
[ '#array_slow', 'array_nest_fixnum slow versus hash_nest_fixnum insert one C base 2', '', 12, 'generator',
[
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' }
],
'Nested array insertion is significantly slower than nested hash insertion.'
],
[ '#array_slow', 'array_nest_fixnum fast versus slow insert one C base 2', 'hidden', 12, 'tag',
[
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'array_fast', base:2 , status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' }
],
'Pending: Nested array insertion is now faster.'
],
[ '#array_slow', 'array_nest_fixnum fast versus hash_nest_fixnum insert one C base 2', 'hidden', 12, 'generator',
[
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'array_fast', base:2 , status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' }
],
'Pending: Nested array insertion is now as fast as nested hash insertion.'
],
[ '#best_practices', 'best practice - hash_size_fixnum insert many fast versus safe for hash size 16', '', 14, 'operation',
[
{ x:'multi_power', y:'user_ops', size:16, generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'real_ops', size:16, generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'real_ops', size:16, generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' }
],
'Insert many to ammortize the extra cost of safe mode significantly.'
],
[ '#best_practices', 'best practice - hash_size_fixnum find many with cursor versus find one', '', 12, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' }
],
'Find many with a cursor to out-perform find one significantly.'
],
[ '#insert_many_safe', 'value_string_size insert many safe by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'value_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'value_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'value_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'value_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'value_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'value_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'value_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many_safe', 'key_string_size insert many safe by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'key_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'key_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'key_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'key_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'key_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'key_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'key_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many_safe', 'hash_size_fixnum insert many safe by multiples (x axis) over a range of data sizes', '', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many_safe', 'array_size_fixnum insert many safe by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'array_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'array_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'array_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'array_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'array_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'array_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'array_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many_safe', 'array_nest_fixnum insert many safe by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'array_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'array_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'array_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'array_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'array_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'array_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'array_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many_safe', 'hash_nest_fixnum insert many safe by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'hash_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'hash_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'hash_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'hash_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'hash_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'hash_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'hash_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many', 'value_string_size insert many by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many', 'key_string_size insert many by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many', 'hash_size_fixnum insert many by multiples (x axis) over a range of data sizes', '', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many', 'array_size_fixnum insert many by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many', 'array_nest_fixnum insert many by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_many', 'hash_nest_fixnum insert many by multiples (x axis) over a range of data sizes', 'hidden', 14, 'size',
[
{ x:'multi_power', y:'user_ops', size:1, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:16, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:64, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:256, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:1024, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' },
{ x:'multi_power', y:'user_ops', size:4096, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_many', status:'OK' }
],
''
],
[ '#insert_one_safe', 'value_string_size insert one fast versus safe', 'hidden', 14, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'value_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'value_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_one', status:'OK' }
],
''
],
[ '#insert_one_safe', 'key_string_size insert one fast versus safe', 'hidden', 14, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'key_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'key_string_size', operation:'insert_safe', mode:'c', tag:'suite_insert_one', status:'OK' }
],
''
],
[ '#insert_one_safe', 'array_size_fixnum insert one fast versus safe', 'hidden', 12, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_one', status:'OK' }
],
''
],
[ '#insert_one_safe', 'hash_size_fixnum insert one fast versus safe', '', 12, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_one', status:'OK' }
],
''
],
[ '#insert_one_safe', 'array_nest_fixnum base 2 insert one fast versus safe', 'hidden', 12, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'insert_safe', mode:'ruby', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_nest_fixnum', operation:'insert_safe', mode:'ruby', tag:'suite_insert_one', base:2, status:'OK' }
],
''
],
[ '#insert_one_safe', 'hash_nest_fixnum base 2 insert one fast versus safe', 'hidden', 12, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_nest_fixnum', operation:'insert_safe', mode:'c', tag:'suite_insert_one', base:2, status:'OK' }
],
''
],
[ '#find', 'value_string_size find many with cursor versus find one', 'hidden', 14, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'value_string_size', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'value_string_size', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'value_string_size', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'value_string_size', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' }
],
''
],
[ '#find', 'key_string_size find many with cursor versus find one', 'hidden', 14, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'key_string_size', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'key_string_size', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'key_string_size', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'key_string_size', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' }
],
''
],
[ '#find', 'array_size_fixnum find many with cursor versus find one', 'hidden', 12, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_size_fixnum', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' }
],
''
],
[ '#find', 'hash_size_fixnum find many with cursor versus find one', '', 12, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'find_many', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' }
],
''
],
[ '#find', 'array_nest_fixnum base 2 find many with cursor versus find one', 'hidden', 12, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'find_many', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_nest_fixnum', operation:'find_many', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', base:2, status:'OK' }
],
''
],
[ '#find', 'hash_nest_fixnum base 2 find many with cursor versus find one', 'hidden', 12, 'operation',
[
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'find_many', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_nest_fixnum', operation:'find_many', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', base:2, status:'OK' }
],
''
],
[ '#c_vs_ruby', 'value_string_size insert one C versus Ruby', 'hidden', 14, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'value_string_size', operation:'insert', mode:'ruby', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'value_string_size', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'value_string_size', operation:'insert', mode:'ruby', tag:'suite_insert_one', status:'OK' }
],
''
],
[ '#c_vs_ruby', 'key_string_size insert one C versus Ruby', 'hidden', 14, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'key_string_size', operation:'insert', mode:'ruby', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'key_string_size', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'key_string_size', operation:'insert', mode:'ruby', tag:'suite_insert_one', status:'OK' }
],
''
],
[ '#c_vs_ruby', 'array_size_fixnum insert one C versus Ruby', 'hidden', 12, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'insert', mode:'ruby', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_size_fixnum', operation:'insert', mode:'ruby', tag:'suite_insert_one', status:'OK' }
],
''
],
[ '#c_vs_ruby', 'hash_size_fixnum insert one C versus Ruby', '', 12, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'insert', mode:'ruby', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'insert', mode:'ruby', tag:'suite_insert_one', status:'OK' }
],
''
],
[ '#c_vs_ruby', 'array_nest_fixnum base 2 insert one C versus Ruby', 'hidden', 12, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'insert', mode:'ruby', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_nest_fixnum', operation:'insert', mode:'ruby', tag:'suite_insert_one', base:2, status:'OK' }
],
''
],
[ '#c_vs_ruby', 'hash_nest_fixnum base 2 insert one C versus Ruby', 'hidden', 12, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'insert', mode:'ruby', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_nest_fixnum', operation:'insert', mode:'ruby', tag:'suite_insert_one', base:2, status:'OK' }
],
''
],
[ '#c_vs_ruby', 'value_string_size find one C versus Ruby', 'hidden', 14, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'value_string_size', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'value_string_size', operation:'find_one', mode:'ruby', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'value_string_size', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'value_string_size', operation:'find_one', mode:'ruby', tag:'suite_find', status:'OK' }
],
''
],
[ '#c_vs_ruby', 'key_string_size find one C versus Ruby', 'hidden', 14, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'key_string_size', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'key_string_size', operation:'find_one', mode:'ruby', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'key_string_size', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'key_string_size', operation:'find_one', mode:'ruby', tag:'suite_find', status:'OK' }
],
''
],
[ '#c_vs_ruby', 'array_size_fixnum find one C versus Ruby', 'hidden', 12, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_size_fixnum', operation:'find_one', mode:'ruby', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_size_fixnum', operation:'find_one', mode:'ruby', tag:'suite_find', status:'OK' }
],
''
],
[ '#c_vs_ruby', 'hash_size_fixnum find one C versus Ruby', '', 12, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_size_fixnum', operation:'find_one', mode:'ruby', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_size_fixnum', operation:'find_one', mode:'ruby', tag:'suite_find', status:'OK' }
],
''
],
[ '#c_vs_ruby', 'array_nest_fixnum base 2 find one C versus Ruby', 'hidden', 12, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'user_ops', generator:'array_nest_fixnum', operation:'find_one', mode:'ruby', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'array_nest_fixnum', operation:'find_one', mode:'ruby', tag:'suite_find', base:2, status:'OK' }
],
''
],
[ '#c_vs_ruby', 'hash_nest_fixnum base 2 find one C versus Ruby', 'hidden', 12, 'mode',
[
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'user_ops', generator:'hash_nest_fixnum', operation:'find_one', mode:'ruby', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', base:2, status:'OK' },
{ x:'exp2', y:'real_ops', generator:'hash_nest_fixnum', operation:'find_one', mode:'ruby', tag:'suite_find', base:2, status:'OK' }
],
''
],
[ '#nested', 'array_nest_fixnum insert one C by base', 'hidden', 12, 'base',
[
{ x:'exp2', y:'user_ops', base:2, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', base:4, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:8, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:16, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:32, generator:'array_nest_fixnum', operation:'insert', mode:'c', tag:'suite_nest', status:'OK' }
],
''
],
[ '#nested', 'hash_nest_fixnum insert one C by base', 'hidden', 12, 'base',
[
{ x:'exp2', y:'user_ops', base:2, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_insert_one', status:'OK' },
{ x:'exp2', y:'user_ops', base:4, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:8, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:16, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:32, generator:'hash_nest_fixnum', operation:'insert', mode:'c', tag:'suite_nest', status:'OK' }
],
''
],
[ '#nested', 'array_nest_fixnum find one C by base', 'hidden', 12, 'base',
[
{ x:'exp2', y:'user_ops', base:2, generator:'array_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', base:4, generator:'array_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:8, generator:'array_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:16, generator:'array_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:32, generator:'array_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_nest', status:'OK' }
],
''
],
[ '#nested', 'hash_nest_fixnum find one C by base', 'hidden', 12, 'base',
[
{ x:'exp2', y:'user_ops', base:2, generator:'hash_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_find', status:'OK' },
{ x:'exp2', y:'user_ops', base:4, generator:'hash_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:8, generator:'hash_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:16, generator:'hash_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_nest', status:'OK' },
{ x:'exp2', y:'user_ops', base:32, generator:'hash_nest_fixnum', operation:'find_one', mode:'c', tag:'suite_nest', status:'OK' }
],
''
]
];
$.each(graph, function(i, e){
var section, title, classes, xMax, labelSpec, plotLines;
//[section, title, classes, xMax, labelSpec, plotLines, notes] = e;
section = e[0]; title = e[1]; classes = e[2]; xMax = e[3]; labelSpec = e[4]; plotLines = e[5]; notes = e[6];
var series = flotSeries(expSeries, xMax, labelSpec, plotLines);
doPlot(section, title, series, classes, notes);
});
function showTooltip(x, y, contents) {
$('<div id="tooltip">' + contents + '</div>').css( {
position: 'absolute',
display: 'none',
top: y + 5,
left: x + 5,
border: '1px solid #fdd',
padding: '2px',
'background-color': '#fee',
opacity: 0.80
}).appendTo("body").fadeIn(200);
}
var previousPoint = null;
$('.graph').bind('plothover', function (event, pos, item) {
$("#x").text(pos.x.toFixed(2));
$("#y").text(pos.y.toFixed(2));
if (item) {
if (previousPoint != item.dataIndex) {
previousPoint = item.dataIndex;
$("#tooltip").remove();
var x = item.datapoint[0].toFixed(2),
y = item.datapoint[1].toFixed(2);
showTooltip(item.pageX, item.pageY,
item.series.label + ' [ ' + Math.round(x) + ', ' + Math.round(y) + ' ]');
}
}
else {
$("#tooltip").remove();
previousPoint = null;
}
});
$('.show_hide').bind('click', function(event) {
var id = $(this).attr('id').replace(/^show_hide_/, '');
$('#' + id).toggleClass('hidden');
});
$('#show_all').bind('click', function(event) {
for (var i in graph) {
title = graph[i][1];
var id = title.replace(/\W/g,'_');
$('#' + id).removeClass('hidden');
}
});
$('#show_default').bind('click', function(event) {
for (var i in graph) {
title = graph[i][1];
var id = title.replace(/\W/g,'_');
$('#' + id).removeClass('hidden').addClass(graph[i][2]);
}
});
});
</script>
</body>
</html>

708
bench/exp_series.js Normal file
View File

@ -0,0 +1,708 @@
expSeries = [
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":128000,"utime":9.69,"rtime":11.08,"ut_ops":13209.5,"rt_ops":11556.5,"ut_usec":75.7,"rt_usec":86.5,"etime":1.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":127999,"utime":9.85,"rtime":11.16,"ut_ops":12994.8,"rt_ops":11468.1,"ut_usec":77.0,"rt_usec":87.2,"etime":1.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":136533,"utime":10.47,"rtime":11.95,"ut_ops":13040.4,"rt_ops":11423.7,"ut_usec":76.7,"rt_usec":87.5,"etime":1.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":136533,"utime":10.32,"rtime":11.6,"ut_ops":13229.9,"rt_ops":11773.2,"ut_usec":75.6,"rt_usec":84.9,"etime":1.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":136533,"utime":10.51,"rtime":11.81,"ut_ops":12990.8,"rt_ops":11559.6,"ut_usec":77.0,"rt_usec":86.5,"etime":1.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":127999,"utime":9.93,"rtime":11.4,"ut_ops":12890.1,"rt_ops":11225.5,"ut_usec":77.6,"rt_usec":89.1,"etime":1.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":127999,"utime":9.48,"rtime":10.9,"ut_ops":13502.0,"rt_ops":11748.4,"ut_usec":74.1,"rt_usec":85.1,"etime":1.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":136533,"utime":10.35,"rtime":12.07,"ut_ops":13191.6,"rt_ops":11314.3,"ut_usec":75.8,"rt_usec":88.4,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":128000,"utime":9.98,"rtime":11.7,"ut_ops":12825.7,"rt_ops":10941.8,"ut_usec":78.0,"rt_usec":91.4,"etime":1.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":127999,"utime":10.54,"rtime":12.31,"ut_ops":12144.1,"rt_ops":10401.3,"ut_usec":82.3,"rt_usec":96.1,"etime":1.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":120470,"utime":10.13,"rtime":12.19,"ut_ops":11892.4,"rt_ops":9885.0,"ut_usec":84.1,"rt_usec":101.2,"etime":1.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":107789,"utime":9.85,"rtime":12.92,"ut_ops":10943.0,"rt_ops":8342.6,"ut_usec":91.4,"rt_usec":119.9,"etime":1.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":93090,"utime":9.78,"rtime":14.47,"ut_ops":9518.4,"rt_ops":6435.3,"ut_usec":105.1,"rt_usec":155.4,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":73142,"utime":9.99,"rtime":14.37,"ut_ops":7321.5,"rt_ops":5088.3,"ut_usec":136.6,"rt_usec":196.5,"etime":1.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":51200,"utime":10.1,"rtime":17.92,"ut_ops":5069.3,"rt_ops":2856.9,"ut_usec":197.3,"rt_usec":350.0,"etime":1.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":32000,"utime":10.08,"rtime":20.12,"ut_ops":3174.6,"rt_ops":1590.6,"ut_usec":315.0,"rt_usec":628.7,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":136533,"utime":10.52,"rtime":12.08,"ut_ops":12978.4,"rt_ops":11306.1,"ut_usec":77.1,"rt_usec":88.4,"etime":1.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":128000,"utime":9.75,"rtime":11.19,"ut_ops":13128.2,"rt_ops":11441.0,"ut_usec":76.2,"rt_usec":87.4,"etime":1.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":128000,"utime":9.87,"rtime":11.23,"ut_ops":12968.6,"rt_ops":11400.9,"ut_usec":77.1,"rt_usec":87.7,"etime":1.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":128000,"utime":9.59,"rtime":10.78,"ut_ops":13347.2,"rt_ops":11873.0,"ut_usec":74.9,"rt_usec":84.2,"etime":1.25,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":128000,"utime":9.81,"rtime":11.23,"ut_ops":13047.9,"rt_ops":11395.3,"ut_usec":76.6,"rt_usec":87.8,"etime":1.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":128000,"utime":9.84,"rtime":11.25,"ut_ops":13008.1,"rt_ops":11378.0,"ut_usec":76.9,"rt_usec":87.9,"etime":1.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":128000,"utime":9.85,"rtime":11.91,"ut_ops":12994.9,"rt_ops":10751.0,"ut_usec":77.0,"rt_usec":93.0,"etime":1.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":136533,"utime":10.47,"rtime":12.11,"ut_ops":13040.4,"rt_ops":11270.3,"ut_usec":76.7,"rt_usec":88.7,"etime":1.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":127999,"utime":10.12,"rtime":12.03,"ut_ops":12648.1,"rt_ops":10640.9,"ut_usec":79.1,"rt_usec":94.0,"etime":1.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":120470,"utime":10.16,"rtime":12.09,"ut_ops":11857.3,"rt_ops":9960.6,"ut_usec":84.3,"rt_usec":100.4,"etime":1.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":107789,"utime":9.44,"rtime":11.44,"ut_ops":11418.3,"rt_ops":9421.2,"ut_usec":87.6,"rt_usec":106.1,"etime":1.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":102399,"utime":9.81,"rtime":12.65,"ut_ops":10438.2,"rt_ops":8092.5,"ut_usec":95.8,"rt_usec":123.6,"etime":0.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":93090,"utime":10.62,"rtime":14.52,"ut_ops":8765.5,"rt_ops":6412.9,"ut_usec":114.1,"rt_usec":155.9,"etime":0.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":63999,"utime":9.88,"rtime":15.45,"ut_ops":6477.6,"rt_ops":4142.6,"ut_usec":154.4,"rt_usec":241.4,"etime":1.02,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":42666,"utime":10.07,"rtime":14.61,"ut_ops":4236.9,"rt_ops":2921.0,"ut_usec":236.0,"rt_usec":342.3,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":25599,"utime":9.86,"rtime":22.56,"ut_ops":2596.2,"rt_ops":1134.5,"ut_usec":385.2,"rt_usec":881.5,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":128000,"utime":10.21,"rtime":11.64,"ut_ops":12536.7,"rt_ops":10999.5,"ut_usec":79.8,"rt_usec":90.9,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":120470,"utime":10.28,"rtime":11.56,"ut_ops":11718.9,"rt_ops":10417.2,"ut_usec":85.3,"rt_usec":96.0,"etime":1.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":102399,"utime":9.21,"rtime":10.2,"ut_ops":11118.2,"rt_ops":10043.5,"ut_usec":89.9,"rt_usec":99.6,"etime":0.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":93090,"utime":9.81,"rtime":10.87,"ut_ops":9489.3,"rt_ops":8563.5,"ut_usec":105.4,"rt_usec":116.8,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":73142,"utime":10.19,"rtime":11.06,"ut_ops":7177.8,"rt_ops":6610.5,"ut_usec":139.3,"rt_usec":151.3,"etime":0.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":46545,"utime":9.6,"rtime":10.17,"ut_ops":4848.4,"rt_ops":4577.7,"ut_usec":206.3,"rt_usec":218.5,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":28444,"utime":9.41,"rtime":9.73,"ut_ops":3022.7,"rt_ops":2923.4,"ut_usec":330.8,"rt_usec":342.1,"etime":0.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":15999,"utime":9.57,"rtime":9.78,"ut_ops":1671.8,"rt_ops":1636.1,"ut_usec":598.2,"rt_usec":611.2,"etime":1.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":8533,"utime":9.49,"rtime":9.59,"ut_ops":899.2,"rt_ops":889.5,"ut_usec":1112.2,"rt_usec":1124.3,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":4571,"utime":9.88,"rtime":10.07,"ut_ops":462.7,"rt_ops":453.7,"ut_usec":2161.5,"rt_usec":2204.0,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":2461,"utime":10.47,"rtime":10.68,"ut_ops":235.1,"rt_ops":230.4,"ut_usec":4254.4,"rt_usec":4341.2,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":1230,"utime":10.79,"rtime":10.87,"ut_ops":114.0,"rt_ops":113.1,"ut_usec":8772.4,"rt_usec":8838.8,"etime":0.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":615,"utime":10.04,"rtime":10.08,"ut_ops":61.3,"rt_ops":61.0,"ut_usec":16325.2,"rt_usec":16395.5,"etime":0.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":307,"utime":10.38,"rtime":10.5,"ut_ops":29.6,"rt_ops":29.2,"ut_usec":33811.1,"rt_usec":34191.6,"etime":0.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":133,"utime":8.62,"rtime":8.74,"ut_ops":15.4,"rt_ops":15.2,"ut_usec":64812.0,"rt_usec":65696.1,"etime":0.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":128000,"utime":10.14,"rtime":11.51,"ut_ops":12623.3,"rt_ops":11124.7,"ut_usec":79.2,"rt_usec":89.9,"etime":1.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":136533,"utime":10.84,"rtime":12.32,"ut_ops":12595.3,"rt_ops":11084.0,"ut_usec":79.4,"rt_usec":90.2,"etime":1.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":136533,"utime":10.55,"rtime":12.04,"ut_ops":12941.5,"rt_ops":11342.7,"ut_usec":77.3,"rt_usec":88.2,"etime":1.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":120470,"utime":9.64,"rtime":10.82,"ut_ops":12496.9,"rt_ops":11137.5,"ut_usec":80.0,"rt_usec":89.8,"etime":1.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":102399,"utime":8.87,"rtime":10.1,"ut_ops":11544.4,"rt_ops":10140.1,"ut_usec":86.6,"rt_usec":98.6,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":102399,"utime":9.74,"rtime":11.22,"ut_ops":10513.2,"rt_ops":9129.5,"ut_usec":95.1,"rt_usec":109.5,"etime":0.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":97523,"utime":10.06,"rtime":11.41,"ut_ops":9694.1,"rt_ops":8544.0,"ut_usec":103.2,"rt_usec":117.0,"etime":1.29,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":68266,"utime":8.78,"rtime":10.09,"ut_ops":7775.2,"rt_ops":6766.9,"ut_usec":128.6,"rt_usec":147.8,"etime":1.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":56888,"utime":10.27,"rtime":11.55,"ut_ops":5539.2,"rt_ops":4926.4,"ut_usec":180.5,"rt_usec":203.0,"etime":0.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":39384,"utime":10.65,"rtime":12.66,"ut_ops":3698.0,"rt_ops":3111.1,"ut_usec":270.4,"rt_usec":321.4,"etime":0.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":23272,"utime":10.77,"rtime":12.09,"ut_ops":2160.8,"rt_ops":1925.5,"ut_usec":462.8,"rt_usec":519.3,"etime":0.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":12799,"utime":10.84,"rtime":11.95,"ut_ops":1180.7,"rt_ops":1071.5,"ut_usec":846.9,"rt_usec":933.3,"etime":0.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":5818,"utime":9.8,"rtime":10.75,"ut_ops":593.7,"rt_ops":541.0,"ut_usec":1684.4,"rt_usec":1848.5,"etime":0.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":2666,"utime":9.49,"rtime":10.58,"ut_ops":280.9,"rt_ops":252.1,"ut_usec":3559.6,"rt_usec":3967.2,"etime":0.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":1599,"utime":9.29,"rtime":11.45,"ut_ops":172.1,"rt_ops":139.6,"ut_usec":5809.9,"rt_usec":7161.0,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":727,"utime":10.42,"rtime":11.73,"ut_ops":69.8,"rt_ops":62.0,"ut_usec":14332.9,"rt_usec":16134.1,"etime":0.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":333,"utime":9.5,"rtime":10.72,"ut_ops":35.1,"rt_ops":31.1,"ut_usec":28528.5,"rt_usec":32190.7,"etime":0.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":153,"utime":9.22,"rtime":10.14,"ut_ops":16.6,"rt_ops":15.1,"ut_usec":60261.4,"rt_usec":66267.3,"etime":0.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":146285,"utime":10.54,"rtime":11.94,"ut_ops":13879.0,"rt_ops":12248.0,"ut_usec":72.1,"rt_usec":81.6,"etime":1.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":120470,"utime":10.06,"rtime":11.45,"ut_ops":11975.1,"rt_ops":10523.3,"ut_usec":83.5,"rt_usec":95.0,"etime":1.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":93090,"utime":9.42,"rtime":10.3,"ut_ops":9882.2,"rt_ops":9040.9,"ut_usec":101.2,"rt_usec":110.6,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":68266,"utime":9.46,"rtime":10.27,"ut_ops":7216.3,"rt_ops":6645.0,"ut_usec":138.6,"rt_usec":150.5,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":46545,"utime":10.02,"rtime":10.55,"ut_ops":4645.2,"rt_ops":4413.8,"ut_usec":215.3,"rt_usec":226.6,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":30117,"utime":10.8,"rtime":11.13,"ut_ops":2788.6,"rt_ops":2704.8,"ut_usec":358.6,"rt_usec":369.7,"etime":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":15058,"utime":9.6,"rtime":9.77,"ut_ops":1568.5,"rt_ops":1540.9,"ut_usec":637.5,"rt_usec":649.0,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":8000,"utime":9.6,"rtime":9.73,"ut_ops":833.3,"rt_ops":822.5,"ut_usec":1200.0,"rt_usec":1215.7,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":4266,"utime":9.84,"rtime":9.92,"ut_ops":433.5,"rt_ops":429.9,"ut_usec":2306.6,"rt_usec":2326.2,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":2285,"utime":10.21,"rtime":10.27,"ut_ops":223.8,"rt_ops":222.4,"ut_usec":4468.3,"rt_usec":4496.3,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1066,"utime":9.57,"rtime":9.71,"ut_ops":111.4,"rt_ops":109.8,"ut_usec":8977.5,"rt_usec":9105.7,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":571,"utime":9.95,"rtime":9.99,"ut_ops":57.4,"rt_ops":57.2,"ut_usec":17425.6,"rt_usec":17492.2,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":285,"utime":9.83,"rtime":9.84,"ut_ops":29.0,"rt_ops":29.0,"ut_usec":34491.2,"rt_usec":34537.0,"etime":0.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":146285,"utime":10.64,"rtime":12.34,"ut_ops":13748.6,"rt_ops":11852.2,"ut_usec":72.7,"rt_usec":84.4,"etime":1.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":136533,"utime":10.11,"rtime":11.7,"ut_ops":13504.7,"rt_ops":11671.6,"ut_usec":74.0,"rt_usec":85.7,"etime":1.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":127999,"utime":9.78,"rtime":11.06,"ut_ops":13087.8,"rt_ops":11576.3,"ut_usec":76.4,"rt_usec":86.4,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":120470,"utime":9.74,"rtime":11.16,"ut_ops":12368.6,"rt_ops":10793.1,"ut_usec":80.9,"rt_usec":92.7,"etime":0.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":102399,"utime":9.28,"rtime":10.63,"ut_ops":11034.4,"rt_ops":9634.9,"ut_usec":90.6,"rt_usec":103.8,"etime":0.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":93090,"utime":9.71,"rtime":11.15,"ut_ops":9587.0,"rt_ops":8347.3,"ut_usec":104.3,"rt_usec":119.8,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":73142,"utime":10.25,"rtime":11.46,"ut_ops":7135.8,"rt_ops":6380.2,"ut_usec":140.1,"rt_usec":156.7,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":46545,"utime":9.24,"rtime":10.35,"ut_ops":5037.3,"rt_ops":4496.1,"ut_usec":198.5,"rt_usec":222.4,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":30117,"utime":9.7,"rtime":10.63,"ut_ops":3104.8,"rt_ops":2832.1,"ut_usec":322.1,"rt_usec":353.1,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":18285,"utime":10.39,"rtime":11.26,"ut_ops":1759.9,"rt_ops":1623.6,"ut_usec":568.2,"rt_usec":615.9,"etime":0.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":9846,"utime":9.86,"rtime":10.7,"ut_ops":998.6,"rt_ops":920.2,"ut_usec":1001.4,"rt_usec":1086.8,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":4923,"utime":9.66,"rtime":10.43,"ut_ops":509.6,"rt_ops":472.2,"ut_usec":1962.2,"rt_usec":2117.9,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":2461,"utime":9.54,"rtime":10.19,"ut_ops":258.0,"rt_ops":241.5,"ut_usec":3876.5,"rt_usec":4140.2,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1230,"utime":10.0,"rtime":10.67,"ut_ops":123.0,"rt_ops":115.3,"ut_usec":8130.1,"rt_usec":8676.4,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":499,"utime":9.65,"rtime":10.45,"ut_ops":51.7,"rt_ops":47.7,"ut_usec":19338.7,"rt_usec":20950.3,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":235,"utime":9.05,"rtime":9.74,"ut_ops":26.0,"rt_ops":24.1,"ut_usec":38510.6,"rt_usec":41434.5,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-0950","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":128000,"utime":9.88,"rtime":11.15,"ut_ops":12955.5,"rt_ops":11484.5,"ut_usec":77.2,"rt_usec":87.1,"etime":1.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":113777,"utime":9.81,"rtime":11.02,"ut_ops":11598.1,"rt_ops":10323.5,"ut_usec":86.2,"rt_usec":96.9,"etime":1.2,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":93090,"utime":9.65,"rtime":10.69,"ut_ops":9646.6,"rt_ops":8710.3,"ut_usec":103.7,"rt_usec":114.8,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":73142,"utime":10.06,"rtime":10.89,"ut_ops":7270.6,"rt_ops":6716.0,"ut_usec":137.5,"rt_usec":148.9,"etime":0.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":46545,"utime":9.46,"rtime":10.01,"ut_ops":4920.2,"rt_ops":4649.8,"ut_usec":203.2,"rt_usec":215.1,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":30117,"utime":10.18,"rtime":10.57,"ut_ops":2958.4,"rt_ops":2848.2,"ut_usec":338.0,"rt_usec":351.1,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":17066,"utime":10.25,"rtime":10.49,"ut_ops":1665.0,"rt_ops":1627.6,"ut_usec":600.6,"rt_usec":614.4,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":9142,"utime":10.36,"rtime":10.48,"ut_ops":882.4,"rt_ops":872.4,"ut_usec":1133.2,"rt_usec":1146.2,"etime":0.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":4571,"utime":9.99,"rtime":10.05,"ut_ops":457.6,"rt_ops":454.6,"ut_usec":2185.5,"rt_usec":2199.6,"etime":0.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":2285,"utime":9.77,"rtime":9.82,"ut_ops":233.9,"rt_ops":232.7,"ut_usec":4275.7,"rt_usec":4298.1,"etime":0.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1142,"utime":9.64,"rtime":9.68,"ut_ops":118.5,"rt_ops":118.0,"ut_usec":8441.3,"rt_usec":8476.5,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":615,"utime":10.05,"rtime":10.08,"ut_ops":61.2,"rt_ops":61.0,"ut_usec":16341.5,"rt_usec":16392.7,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":307,"utime":10.21,"rtime":10.22,"ut_ops":30.1,"rt_ops":30.0,"ut_usec":33257.3,"rt_usec":33284.2,"etime":0.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":128000,"utime":10.13,"rtime":11.62,"ut_ops":12635.7,"rt_ops":11014.3,"ut_usec":79.1,"rt_usec":90.8,"etime":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":107789,"utime":9.99,"rtime":11.14,"ut_ops":10789.7,"rt_ops":9676.5,"ut_usec":92.7,"rt_usec":103.3,"etime":1.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":64000,"utime":10.3,"rtime":11.04,"ut_ops":6213.6,"rt_ops":5795.8,"ut_usec":160.9,"rt_usec":172.5,"etime":1.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":23272,"utime":10.13,"rtime":10.42,"ut_ops":2297.3,"rt_ops":2234.3,"ut_usec":435.3,"rt_usec":447.6,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":7111,"utime":10.46,"rtime":10.55,"ut_ops":679.8,"rt_ops":673.8,"ut_usec":1471.0,"rt_usec":1484.2,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1777,"utime":10.11,"rtime":10.14,"ut_ops":175.8,"rt_ops":175.2,"ut_usec":5689.4,"rt_usec":5706.3,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":470,"utime":10.44,"rtime":10.45,"ut_ops":45.0,"rt_ops":45.0,"ut_usec":22212.8,"rt_usec":22235.3,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":128000,"utime":10.11,"rtime":11.58,"ut_ops":12660.7,"rt_ops":11049.1,"ut_usec":79.0,"rt_usec":90.5,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":93090,"utime":10.23,"rtime":11.18,"ut_ops":9099.7,"rt_ops":8328.4,"ut_usec":109.9,"rt_usec":120.1,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":25599,"utime":9.86,"rtime":10.17,"ut_ops":2596.2,"rt_ops":2516.3,"ut_usec":385.2,"rt_usec":397.4,"etime":0.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":4266,"utime":10.67,"rtime":10.73,"ut_ops":399.8,"rt_ops":397.4,"ut_usec":2501.2,"rt_usec":2516.1,"etime":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":533,"utime":9.85,"rtime":9.87,"ut_ops":54.1,"rt_ops":54.0,"ut_usec":18480.3,"rt_usec":18511.9,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":127999,"utime":10.33,"rtime":11.76,"ut_ops":12391.0,"rt_ops":10888.1,"ut_usec":80.7,"rt_usec":91.8,"etime":1.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":68266,"utime":9.67,"rtime":10.37,"ut_ops":7059.6,"rt_ops":6583.1,"ut_usec":141.7,"rt_usec":151.9,"etime":0.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":8533,"utime":10.27,"rtime":10.39,"ut_ops":830.9,"rt_ops":820.9,"ut_usec":1203.6,"rt_usec":1218.2,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":533,"utime":9.63,"rtime":9.64,"ut_ops":55.3,"rt_ops":55.3,"ut_usec":18067.5,"rt_usec":18093.6,"etime":1.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":128000,"utime":10.13,"rtime":11.59,"ut_ops":12635.7,"rt_ops":11040.9,"ut_usec":79.1,"rt_usec":90.6,"etime":1.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":46545,"utime":9.87,"rtime":10.41,"ut_ops":4715.8,"rt_ops":4472.1,"ut_usec":212.1,"rt_usec":223.6,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":2285,"utime":10.07,"rtime":10.12,"ut_ops":226.9,"rt_ops":225.9,"ut_usec":4407.0,"rt_usec":4427.2,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":120470,"utime":9.55,"rtime":10.84,"ut_ops":12614.7,"rt_ops":11116.8,"ut_usec":79.3,"rt_usec":90.0,"etime":1.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":127999,"utime":10.31,"rtime":11.8,"ut_ops":12415.0,"rt_ops":10847.8,"ut_usec":80.5,"rt_usec":92.2,"etime":1.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":113777,"utime":9.52,"rtime":10.74,"ut_ops":11951.4,"rt_ops":10591.1,"ut_usec":83.7,"rt_usec":94.4,"etime":1.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":102399,"utime":8.92,"rtime":10.03,"ut_ops":11479.7,"rt_ops":10209.7,"ut_usec":87.1,"rt_usec":97.9,"etime":0.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":102399,"utime":10.15,"rtime":11.36,"ut_ops":10088.6,"rt_ops":9016.6,"ut_usec":99.1,"rt_usec":110.9,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":85333,"utime":10.31,"rtime":11.56,"ut_ops":8276.7,"rt_ops":7383.8,"ut_usec":120.8,"rt_usec":135.4,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":63999,"utime":10.56,"rtime":11.67,"ut_ops":6060.5,"rt_ops":5485.8,"ut_usec":165.0,"rt_usec":182.3,"etime":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":39384,"utime":9.55,"rtime":10.43,"ut_ops":4124.0,"rt_ops":3774.4,"ut_usec":242.5,"rt_usec":264.9,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":25599,"utime":10.51,"rtime":11.55,"ut_ops":2435.7,"rt_ops":2215.6,"ut_usec":410.6,"rt_usec":451.3,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":13473,"utime":9.76,"rtime":10.44,"ut_ops":1380.4,"rt_ops":1291.0,"ut_usec":724.4,"rt_usec":774.6,"etime":0.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":7529,"utime":10.48,"rtime":11.09,"ut_ops":718.4,"rt_ops":678.8,"ut_usec":1392.0,"rt_usec":1473.2,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":3555,"utime":10.17,"rtime":10.78,"ut_ops":349.6,"rt_ops":329.8,"ut_usec":2860.8,"rt_usec":3032.4,"etime":1.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":2285,"utime":9.89,"rtime":10.59,"ut_ops":231.0,"rt_ops":215.8,"ut_usec":4328.2,"rt_usec":4633.8,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1066,"utime":10.28,"rtime":10.88,"ut_ops":103.7,"rt_ops":97.9,"ut_usec":9643.5,"rt_usec":10210.0,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":533,"utime":10.08,"rtime":10.77,"ut_ops":52.9,"rt_ops":49.5,"ut_usec":18911.8,"rt_usec":20211.7,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":166,"utime":10.1,"rtime":10.6,"ut_ops":16.4,"rt_ops":15.7,"ut_usec":60843.4,"rt_usec":63826.6,"etime":0.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":128000,"utime":9.96,"rtime":11.44,"ut_ops":12851.4,"rt_ops":11192.6,"ut_usec":77.8,"rt_usec":89.3,"etime":1.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":120470,"utime":9.67,"rtime":11.09,"ut_ops":12458.1,"rt_ops":10858.1,"ut_usec":80.3,"rt_usec":92.1,"etime":1.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":120470,"utime":10.39,"rtime":11.92,"ut_ops":11594.8,"rt_ops":10108.3,"ut_usec":86.2,"rt_usec":98.9,"etime":1.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":93090,"utime":10.68,"rtime":12.25,"ut_ops":8716.3,"rt_ops":7600.3,"ut_usec":114.7,"rt_usec":131.6,"etime":1.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":46545,"utime":10.06,"rtime":11.29,"ut_ops":4626.7,"rt_ops":4122.0,"ut_usec":216.1,"rt_usec":242.6,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":17066,"utime":10.4,"rtime":11.66,"ut_ops":1641.0,"rt_ops":1463.3,"ut_usec":609.4,"rt_usec":683.4,"etime":1.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":4571,"utime":9.68,"rtime":10.46,"ut_ops":472.2,"rt_ops":437.1,"ut_usec":2117.7,"rt_usec":2287.9,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":7,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1142,"utime":10.11,"rtime":11.12,"ut_ops":113.0,"rt_ops":102.7,"ut_usec":8852.9,"rt_usec":9740.3,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":4,"power":8,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":235,"utime":9.59,"rtime":10.49,"ut_ops":24.5,"rt_ops":22.4,"ut_usec":40808.5,"rt_usec":44636.4,"etime":0.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":102399,"utime":7.96,"rtime":9.11,"ut_ops":12864.2,"rt_ops":11236.5,"ut_usec":77.7,"rt_usec":89.0,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":113777,"utime":9.02,"rtime":10.28,"ut_ops":12613.9,"rt_ops":11070.1,"ut_usec":79.3,"rt_usec":90.3,"etime":1.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":93090,"utime":9.81,"rtime":11.34,"ut_ops":9489.3,"rt_ops":8211.3,"ut_usec":105.4,"rt_usec":121.8,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":36571,"utime":10.11,"rtime":11.36,"ut_ops":3617.3,"rt_ops":3219.8,"ut_usec":276.4,"rt_usec":310.6,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":6399,"utime":10.0,"rtime":12.12,"ut_ops":639.9,"rt_ops":528.0,"ut_usec":1562.7,"rt_usec":1893.9,"etime":0.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":136533,"utime":10.32,"rtime":11.86,"ut_ops":13229.9,"rt_ops":11516.3,"ut_usec":75.6,"rt_usec":86.8,"etime":1.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":128000,"utime":10.46,"rtime":12.04,"ut_ops":12237.1,"rt_ops":10631.1,"ut_usec":81.7,"rt_usec":94.1,"etime":1.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":60235,"utime":9.77,"rtime":11.16,"ut_ops":6165.3,"rt_ops":5398.6,"ut_usec":162.2,"rt_usec":185.2,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":7529,"utime":10.0,"rtime":10.74,"ut_ops":752.9,"rt_ops":700.9,"ut_usec":1328.2,"rt_usec":1426.8,"etime":1.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":16,"power":4,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":363,"utime":9.84,"rtime":10.74,"ut_ops":36.9,"rt_ops":33.8,"ut_usec":27107.4,"rt_usec":29575.7,"etime":0.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":127999,"utime":9.62,"rtime":11.04,"ut_ops":13305.5,"rt_ops":11592.1,"ut_usec":75.2,"rt_usec":86.3,"etime":1.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":113777,"utime":9.87,"rtime":11.68,"ut_ops":11527.6,"rt_ops":9745.1,"ut_usec":86.7,"rt_usec":102.6,"etime":1.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":25599,"utime":9.77,"rtime":11.22,"ut_ops":2620.2,"rt_ops":2282.5,"ut_usec":381.7,"rt_usec":438.1,"etime":0.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":32,"power":3,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":941,"utime":9.67,"rtime":11.11,"ut_ops":97.3,"rt_ops":84.7,"ut_usec":10276.3,"rt_usec":11805.1,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1019","tag":"base_c_nest_full"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":93090,"utime":10.88,"rtime":11.82,"ut_ops":8556.1,"rt_ops":7874.2,"ut_usec":116.9,"rt_usec":127.0,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":85333,"utime":10.13,"rtime":11.13,"ut_ops":8423.8,"rt_ops":7665.5,"ut_usec":118.7,"rt_usec":130.5,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":85333,"utime":10.05,"rtime":11.01,"ut_ops":8490.8,"rt_ops":7748.2,"ut_usec":117.8,"rt_usec":129.1,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":85333,"utime":10.21,"rtime":11.16,"ut_ops":8357.8,"rt_ops":7645.5,"ut_usec":119.6,"rt_usec":130.8,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":85333,"utime":10.23,"rtime":11.19,"ut_ops":8341.4,"rt_ops":7626.2,"ut_usec":119.9,"rt_usec":131.1,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":78769,"utime":9.43,"rtime":10.22,"ut_ops":8353.0,"rt_ops":7709.7,"ut_usec":119.7,"rt_usec":129.7,"etime":0.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":78769,"utime":9.98,"rtime":10.85,"ut_ops":7892.7,"rt_ops":7259.7,"ut_usec":126.7,"rt_usec":137.7,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":78769,"utime":9.95,"rtime":10.87,"ut_ops":7916.5,"rt_ops":7248.8,"ut_usec":126.3,"rt_usec":138.0,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":68266,"utime":9.03,"rtime":9.85,"ut_ops":7559.9,"rt_ops":6929.2,"ut_usec":132.3,"rt_usec":144.3,"etime":0.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":78769,"utime":11.21,"rtime":12.44,"ut_ops":7026.7,"rt_ops":6331.8,"ut_usec":142.3,"rt_usec":157.9,"etime":0.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":64000,"utime":9.94,"rtime":11.14,"ut_ops":6438.6,"rt_ops":5742.8,"ut_usec":155.3,"rt_usec":174.1,"etime":1.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":53894,"utime":10.14,"rtime":11.35,"ut_ops":5315.0,"rt_ops":4746.3,"ut_usec":188.1,"rt_usec":210.7,"etime":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":39384,"utime":10.0,"rtime":11.42,"ut_ops":3938.4,"rt_ops":3450.1,"ut_usec":253.9,"rt_usec":289.8,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":26947,"utime":10.58,"rtime":11.69,"ut_ops":2547.0,"rt_ops":2304.2,"ut_usec":392.6,"rt_usec":434.0,"etime":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":15058,"utime":10.04,"rtime":11.85,"ut_ops":1499.8,"rt_ops":1270.4,"ut_usec":666.8,"rt_usec":787.2,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":9142,"utime":10.01,"rtime":11.58,"ut_ops":913.3,"rt_ops":789.7,"ut_usec":1094.9,"rt_usec":1266.3,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":85333,"utime":9.9,"rtime":10.75,"ut_ops":8619.5,"rt_ops":7940.6,"ut_usec":116.0,"rt_usec":125.9,"etime":0.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":85333,"utime":9.77,"rtime":10.6,"ut_ops":8734.2,"rt_ops":8047.3,"ut_usec":114.5,"rt_usec":124.3,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":85333,"utime":10.07,"rtime":11.06,"ut_ops":8474.0,"rt_ops":7718.5,"ut_usec":118.0,"rt_usec":129.6,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":85333,"utime":9.96,"rtime":10.8,"ut_ops":8567.6,"rt_ops":7904.5,"ut_usec":116.7,"rt_usec":126.5,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":85333,"utime":9.97,"rtime":10.84,"ut_ops":8559.0,"rt_ops":7872.6,"ut_usec":116.8,"rt_usec":127.0,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":85333,"utime":9.94,"rtime":10.83,"ut_ops":8584.8,"rt_ops":7880.9,"ut_usec":116.5,"rt_usec":126.9,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":78769,"utime":9.37,"rtime":10.24,"ut_ops":8406.5,"rt_ops":7694.6,"ut_usec":119.0,"rt_usec":130.0,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":78769,"utime":9.84,"rtime":10.7,"ut_ops":8005.0,"rt_ops":7364.4,"ut_usec":124.9,"rt_usec":135.8,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":78769,"utime":10.25,"rtime":11.26,"ut_ops":7684.8,"rt_ops":6996.2,"ut_usec":130.1,"rt_usec":142.9,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":68266,"utime":9.53,"rtime":10.63,"ut_ops":7163.3,"rt_ops":6420.1,"ut_usec":139.6,"rt_usec":155.8,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":51199,"utime":8.04,"rtime":8.97,"ut_ops":6368.0,"rt_ops":5704.8,"ut_usec":157.0,"rt_usec":175.3,"etime":0.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":53894,"utime":9.64,"rtime":10.91,"ut_ops":5590.7,"rt_ops":4939.3,"ut_usec":178.9,"rt_usec":202.5,"etime":1.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":42666,"utime":10.73,"rtime":11.93,"ut_ops":3976.3,"rt_ops":3576.9,"ut_usec":251.5,"rt_usec":279.6,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":26947,"utime":10.14,"rtime":11.55,"ut_ops":2657.5,"rt_ops":2332.1,"ut_usec":376.3,"rt_usec":428.8,"etime":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":15999,"utime":10.48,"rtime":12.24,"ut_ops":1526.6,"rt_ops":1306.9,"ut_usec":655.0,"rt_usec":765.2,"etime":0.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":9142,"utime":10.53,"rtime":11.99,"ut_ops":868.2,"rt_ops":762.2,"ut_usec":1151.8,"rt_usec":1311.9,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":68266,"utime":9.79,"rtime":10.49,"ut_ops":6973.0,"rt_ops":6506.2,"ut_usec":143.4,"rt_usec":153.7,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":63999,"utime":10.44,"rtime":11.16,"ut_ops":6130.2,"rt_ops":5735.6,"ut_usec":163.1,"rt_usec":174.3,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":51199,"utime":9.92,"rtime":10.5,"ut_ops":5161.2,"rt_ops":4874.1,"ut_usec":193.8,"rt_usec":205.2,"etime":0.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":36571,"utime":9.55,"rtime":9.98,"ut_ops":3829.4,"rt_ops":3664.1,"ut_usec":261.1,"rt_usec":272.9,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":25600,"utime":9.95,"rtime":10.25,"ut_ops":2572.9,"rt_ops":2498.1,"ut_usec":388.7,"rt_usec":400.3,"etime":1.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":15058,"utime":9.63,"rtime":9.83,"ut_ops":1563.7,"rt_ops":1531.4,"ut_usec":639.5,"rt_usec":653.0,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":8533,"utime":9.65,"rtime":9.77,"ut_ops":884.2,"rt_ops":873.0,"ut_usec":1130.9,"rt_usec":1145.5,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":4571,"utime":9.76,"rtime":9.82,"ut_ops":468.3,"rt_ops":465.7,"ut_usec":2135.2,"rt_usec":2147.3,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":2285,"utime":9.34,"rtime":9.37,"ut_ops":244.6,"rt_ops":243.8,"ut_usec":4087.5,"rt_usec":4101.0,"etime":0.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":1230,"utime":9.91,"rtime":9.93,"ut_ops":124.1,"rt_ops":123.9,"ut_usec":8056.9,"rt_usec":8071.2,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":615,"utime":9.95,"rtime":9.97,"ut_ops":61.8,"rt_ops":61.7,"ut_usec":16178.9,"rt_usec":16205.5,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":307,"utime":10.03,"rtime":10.04,"ut_ops":30.6,"rt_ops":30.6,"ut_usec":32671.0,"rt_usec":32708.1,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":153,"utime":10.06,"rtime":10.09,"ut_ops":15.2,"rt_ops":15.2,"ut_usec":65751.6,"rt_usec":65935.8,"etime":0.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":71,"utime":9.68,"rtime":9.72,"ut_ops":7.3,"rt_ops":7.3,"ut_usec":136338.0,"rt_usec":136835.7,"etime":0.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":35,"utime":9.64,"rtime":9.69,"ut_ops":3.6,"rt_ops":3.6,"ut_usec":275428.6,"rt_usec":276961.5,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":68266,"utime":9.9,"rtime":10.74,"ut_ops":6895.6,"rt_ops":6355.1,"ut_usec":145.0,"rt_usec":157.4,"etime":0.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":64000,"utime":10.25,"rtime":11.0,"ut_ops":6243.9,"rt_ops":5818.5,"ut_usec":160.2,"rt_usec":171.9,"etime":1.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":51199,"utime":9.79,"rtime":10.39,"ut_ops":5229.7,"rt_ops":4927.5,"ut_usec":191.2,"rt_usec":202.9,"etime":1.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":42666,"utime":10.84,"rtime":11.34,"ut_ops":3936.0,"rt_ops":3763.4,"ut_usec":254.1,"rt_usec":265.7,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":25599,"utime":9.69,"rtime":10.0,"ut_ops":2641.8,"rt_ops":2560.0,"ut_usec":378.5,"rt_usec":390.6,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":15058,"utime":9.34,"rtime":9.54,"ut_ops":1612.2,"rt_ops":1579.2,"ut_usec":620.3,"rt_usec":633.2,"etime":0.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":9142,"utime":10.28,"rtime":10.43,"ut_ops":889.3,"rt_ops":876.2,"ut_usec":1124.5,"rt_usec":1141.4,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":4266,"utime":8.82,"rtime":8.88,"ut_ops":483.7,"rt_ops":480.2,"ut_usec":2067.5,"rt_usec":2082.3,"etime":0.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":2461,"utime":9.88,"rtime":9.94,"ut_ops":249.1,"rt_ops":247.6,"ut_usec":4014.6,"rt_usec":4038.5,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":1333,"utime":10.75,"rtime":10.8,"ut_ops":124.0,"rt_ops":123.5,"ut_usec":8064.5,"rt_usec":8100.0,"etime":0.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":666,"utime":10.6,"rtime":10.61,"ut_ops":62.8,"rt_ops":62.8,"ut_usec":15915.9,"rt_usec":15928.0,"etime":0.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":307,"utime":10.01,"rtime":10.06,"ut_ops":30.7,"rt_ops":30.5,"ut_usec":32605.9,"rt_usec":32763.9,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":133,"utime":8.96,"rtime":8.99,"ut_ops":14.8,"rt_ops":14.8,"ut_usec":67368.4,"rt_usec":67575.4,"etime":0.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":71,"utime":10.31,"rtime":10.33,"ut_ops":6.9,"rt_ops":6.9,"ut_usec":145211.3,"rt_usec":145534.2,"etime":0.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":41,"utime":10.0,"rtime":10.04,"ut_ops":4.1,"rt_ops":4.1,"ut_usec":243902.4,"rt_usec":244971.1,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":18,"utime":9.58,"rtime":9.63,"ut_ops":1.9,"rt_ops":1.9,"ut_usec":532222.2,"rt_usec":534998.2,"etime":1.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":10,"utime":10.11,"rtime":10.18,"ut_ops":1.0,"rt_ops":1.0,"ut_usec":1011000.0,"rt_usec":1018228.6,"etime":1.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":5,"utime":10.04,"rtime":10.1,"ut_ops":0.5,"rt_ops":0.5,"ut_usec":2008000.0,"rt_usec":2020308.2,"etime":2.63,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":93090,"utime":10.11,"rtime":11.09,"ut_ops":9207.7,"rt_ops":8390.8,"ut_usec":108.6,"rt_usec":119.2,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":63999,"utime":9.5,"rtime":10.21,"ut_ops":6736.7,"rt_ops":6268.6,"ut_usec":148.4,"rt_usec":159.5,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":42666,"utime":10.04,"rtime":10.57,"ut_ops":4249.6,"rt_ops":4037.7,"ut_usec":235.3,"rt_usec":247.7,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":25599,"utime":10.42,"rtime":10.75,"ut_ops":2456.7,"rt_ops":2381.1,"ut_usec":407.0,"rt_usec":420.0,"etime":0.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":13473,"utime":9.91,"rtime":10.12,"ut_ops":1359.5,"rt_ops":1331.9,"ut_usec":735.5,"rt_usec":750.8,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":7111,"utime":10.19,"rtime":10.31,"ut_ops":697.8,"rt_ops":689.9,"ut_usec":1433.0,"rt_usec":1449.4,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":3555,"utime":10.08,"rtime":10.16,"ut_ops":352.7,"rt_ops":349.9,"ut_usec":2835.4,"rt_usec":2858.3,"etime":1.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1684,"utime":9.62,"rtime":9.65,"ut_ops":175.1,"rt_ops":174.4,"ut_usec":5712.6,"rt_usec":5732.9,"etime":1.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":842,"utime":9.65,"rtime":9.68,"ut_ops":87.3,"rt_ops":87.0,"ut_usec":11460.8,"rt_usec":11497.3,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":399,"utime":9.31,"rtime":9.32,"ut_ops":42.9,"rt_ops":42.8,"ut_usec":23333.3,"rt_usec":23369.6,"etime":0.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":199,"utime":9.42,"rtime":9.43,"ut_ops":21.1,"rt_ops":21.1,"ut_usec":47336.7,"rt_usec":47409.2,"etime":0.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":99,"utime":9.67,"rtime":9.69,"ut_ops":10.2,"rt_ops":10.2,"ut_usec":97676.8,"rt_usec":97921.9,"etime":0.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":52,"utime":10.35,"rtime":10.39,"ut_ops":5.0,"rt_ops":5.0,"ut_usec":199038.5,"rt_usec":199756.3,"etime":0.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":93090,"utime":10.2,"rtime":11.23,"ut_ops":9126.5,"rt_ops":8289.9,"ut_usec":109.6,"rt_usec":120.6,"etime":0.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":68266,"utime":10.05,"rtime":10.74,"ut_ops":6792.6,"rt_ops":6354.6,"ut_usec":147.2,"rt_usec":157.4,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":39384,"utime":8.93,"rtime":9.38,"ut_ops":4410.3,"rt_ops":4198.6,"ut_usec":226.7,"rt_usec":238.2,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":25599,"utime":9.81,"rtime":10.13,"ut_ops":2609.5,"rt_ops":2526.9,"ut_usec":383.2,"rt_usec":395.7,"etime":0.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":14222,"utime":9.96,"rtime":10.13,"ut_ops":1427.9,"rt_ops":1403.5,"ut_usec":700.3,"rt_usec":712.5,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":7111,"utime":9.6,"rtime":9.7,"ut_ops":740.7,"rt_ops":733.0,"ut_usec":1350.0,"rt_usec":1364.3,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":3764,"utime":10.07,"rtime":10.13,"ut_ops":373.8,"rt_ops":371.7,"ut_usec":2675.3,"rt_usec":2690.1,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1777,"utime":9.54,"rtime":9.57,"ut_ops":186.3,"rt_ops":185.6,"ut_usec":5368.6,"rt_usec":5386.5,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":888,"utime":9.7,"rtime":9.72,"ut_ops":91.5,"rt_ops":91.3,"ut_usec":10923.4,"rt_usec":10949.4,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":421,"utime":9.35,"rtime":9.36,"ut_ops":45.0,"rt_ops":45.0,"ut_usec":22209.0,"rt_usec":22239.2,"etime":0.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":222,"utime":10.03,"rtime":10.04,"ut_ops":22.1,"rt_ops":22.1,"ut_usec":45180.2,"rt_usec":45230.8,"etime":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":99,"utime":9.27,"rtime":9.28,"ut_ops":10.7,"rt_ops":10.7,"ut_usec":93636.4,"rt_usec":93762.9,"etime":0.62,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":49,"utime":9.58,"rtime":9.6,"ut_ops":5.1,"rt_ops":5.1,"ut_usec":195510.2,"rt_usec":195978.1,"etime":0.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":24,"utime":9.56,"rtime":9.61,"ut_ops":2.5,"rt_ops":2.5,"ut_usec":398333.3,"rt_usec":400522.2,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":11,"utime":9.26,"rtime":9.33,"ut_ops":1.2,"rt_ops":1.2,"ut_usec":841818.2,"rt_usec":848153.8,"etime":1.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":5,"utime":8.46,"rtime":8.53,"ut_ops":0.6,"rt_ops":0.6,"ut_usec":1692000.0,"rt_usec":1706726.6,"etime":2.32,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1050","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":78769,"utime":9.12,"rtime":10.0,"ut_ops":8637.0,"rt_ops":7876.3,"ut_usec":115.8,"rt_usec":127.0,"etime":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":60235,"utime":9.84,"rtime":10.5,"ut_ops":6121.4,"rt_ops":5738.1,"ut_usec":163.4,"rt_usec":174.3,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":36571,"utime":9.44,"rtime":9.86,"ut_ops":3874.0,"rt_ops":3709.5,"ut_usec":258.1,"rt_usec":269.6,"etime":1.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":23272,"utime":10.12,"rtime":10.38,"ut_ops":2299.6,"rt_ops":2240.9,"ut_usec":434.9,"rt_usec":446.2,"etime":0.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":12799,"utime":10.33,"rtime":10.5,"ut_ops":1239.0,"rt_ops":1219.3,"ut_usec":807.1,"rt_usec":820.1,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":6399,"utime":10.13,"rtime":10.23,"ut_ops":631.7,"rt_ops":625.3,"ut_usec":1583.1,"rt_usec":1599.3,"etime":0.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":3199,"utime":9.8,"rtime":9.84,"ut_ops":326.4,"rt_ops":325.0,"ut_usec":3063.5,"rt_usec":3076.9,"etime":0.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1599,"utime":9.88,"rtime":9.9,"ut_ops":161.8,"rt_ops":161.5,"ut_usec":6178.9,"rt_usec":6193.6,"etime":0.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":842,"utime":10.52,"rtime":10.54,"ut_ops":80.0,"rt_ops":79.9,"ut_usec":12494.1,"rt_usec":12521.5,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":380,"utime":9.49,"rtime":9.52,"ut_ops":40.0,"rt_ops":39.9,"ut_usec":24973.7,"rt_usec":25056.3,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":199,"utime":10.15,"rtime":10.15,"ut_ops":19.6,"rt_ops":19.6,"ut_usec":51005.0,"rt_usec":51024.1,"etime":0.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":99,"utime":10.3,"rtime":10.31,"ut_ops":9.6,"rt_ops":9.6,"ut_usec":104040.4,"rt_usec":104141.2,"etime":0.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":47,"utime":9.79,"rtime":9.81,"ut_ops":4.8,"rt_ops":4.8,"ut_usec":208297.9,"rt_usec":208698.6,"etime":0.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":85333,"utime":9.91,"rtime":10.86,"ut_ops":8610.8,"rt_ops":7855.9,"ut_usec":116.1,"rt_usec":127.3,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":53894,"utime":10.37,"rtime":10.96,"ut_ops":5197.1,"rt_ops":4916.7,"ut_usec":192.4,"rt_usec":203.4,"etime":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":19692,"utime":9.98,"rtime":10.2,"ut_ops":1973.1,"rt_ops":1929.9,"ut_usec":506.8,"rt_usec":518.2,"etime":0.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":5818,"utime":10.39,"rtime":10.46,"ut_ops":560.0,"rt_ops":556.2,"ut_usec":1785.8,"rt_usec":1798.0,"etime":0.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1333,"utime":9.17,"rtime":9.19,"ut_ops":145.4,"rt_ops":145.0,"ut_usec":6879.2,"rt_usec":6896.1,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":363,"utime":10.0,"rtime":10.01,"ut_ops":36.3,"rt_ops":36.3,"ut_usec":27548.2,"rt_usec":27563.1,"etime":0.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":90,"utime":10.24,"rtime":10.26,"ut_ops":8.8,"rt_ops":8.8,"ut_usec":113777.8,"rt_usec":114015.6,"etime":0.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":85333,"utime":9.87,"rtime":10.78,"ut_ops":8645.7,"rt_ops":7913.8,"ut_usec":115.7,"rt_usec":126.4,"etime":1.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":39384,"utime":10.22,"rtime":10.68,"ut_ops":3853.6,"rt_ops":3686.5,"ut_usec":259.5,"rt_usec":271.3,"etime":0.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":7529,"utime":10.49,"rtime":10.6,"ut_ops":717.7,"rt_ops":710.1,"ut_usec":1393.3,"rt_usec":1408.3,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":941,"utime":9.91,"rtime":9.96,"ut_ops":95.0,"rt_ops":94.5,"ut_usec":10531.3,"rt_usec":10581.1,"etime":0.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":117,"utime":10.11,"rtime":10.11,"ut_ops":11.6,"rt_ops":11.6,"ut_usec":86410.3,"rt_usec":86428.1,"etime":0.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":85333,"utime":9.9,"rtime":10.82,"ut_ops":8619.5,"rt_ops":7889.6,"ut_usec":116.0,"rt_usec":126.7,"etime":0.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":23272,"utime":8.98,"rtime":9.28,"ut_ops":2591.5,"rt_ops":2507.0,"ut_usec":385.9,"rt_usec":398.9,"etime":0.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":2133,"utime":10.1,"rtime":10.14,"ut_ops":211.2,"rt_ops":210.4,"ut_usec":4735.1,"rt_usec":4752.5,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":133,"utime":10.1,"rtime":10.11,"ut_ops":13.2,"rt_ops":13.2,"ut_usec":75939.8,"rt_usec":76007.9,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":85333,"utime":9.85,"rtime":10.72,"ut_ops":8663.2,"rt_ops":7958.9,"ut_usec":115.4,"rt_usec":125.6,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":15999,"utime":10.68,"rtime":10.89,"ut_ops":1498.0,"rt_ops":1469.4,"ut_usec":667.5,"rt_usec":680.6,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":571,"utime":10.15,"rtime":10.19,"ut_ops":56.3,"rt_ops":56.0,"ut_usec":17775.8,"rt_usec":17848.0,"etime":0.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":85333,"utime":9.88,"rtime":10.77,"ut_ops":8636.9,"rt_ops":7921.9,"ut_usec":115.8,"rt_usec":126.2,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":68266,"utime":10.73,"rtime":11.49,"ut_ops":6362.2,"rt_ops":5942.3,"ut_usec":157.2,"rt_usec":168.3,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":39384,"utime":9.65,"rtime":10.07,"ut_ops":4081.2,"rt_ops":3912.5,"ut_usec":245.0,"rt_usec":255.6,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":23272,"utime":9.49,"rtime":9.75,"ut_ops":2452.3,"rt_ops":2388.0,"ut_usec":407.8,"rt_usec":418.8,"etime":0.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":12799,"utime":9.58,"rtime":9.78,"ut_ops":1336.0,"rt_ops":1309.3,"ut_usec":748.5,"rt_usec":763.8,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":6736,"utime":9.66,"rtime":9.74,"ut_ops":697.3,"rt_ops":691.6,"ut_usec":1434.1,"rt_usec":1445.9,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":3368,"utime":9.75,"rtime":9.8,"ut_ops":345.4,"rt_ops":343.6,"ut_usec":2894.9,"rt_usec":2910.5,"etime":0.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1777,"utime":10.38,"rtime":10.4,"ut_ops":171.2,"rt_ops":170.8,"ut_usec":5841.3,"rt_usec":5854.8,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":842,"utime":10.08,"rtime":10.1,"ut_ops":83.5,"rt_ops":83.4,"ut_usec":11971.5,"rt_usec":11990.8,"etime":0.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":399,"utime":9.76,"rtime":9.79,"ut_ops":40.9,"rt_ops":40.7,"ut_usec":24461.2,"rt_usec":24548.0,"etime":0.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":200,"utime":9.89,"rtime":9.93,"ut_ops":20.2,"rt_ops":20.2,"ut_usec":49450.0,"rt_usec":49627.4,"etime":0.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":90,"utime":9.63,"rtime":9.64,"ut_ops":9.3,"rt_ops":9.3,"ut_usec":107000.0,"rt_usec":107135.6,"etime":0.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":50,"utime":9.59,"rtime":9.64,"ut_ops":5.2,"rt_ops":5.2,"ut_usec":191800.0,"rt_usec":192750.4,"etime":0.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":23,"utime":9.51,"rtime":9.55,"ut_ops":2.4,"rt_ops":2.4,"ut_usec":413478.3,"rt_usec":415153.6,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":12,"utime":9.88,"rtime":9.97,"ut_ops":1.2,"rt_ops":1.2,"ut_usec":823333.3,"rt_usec":831227.3,"etime":1.4,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":4,"utime":8.08,"rtime":8.15,"ut_ops":0.5,"rt_ops":0.5,"ut_usec":2020000.0,"rt_usec":2037448.0,"etime":2.59,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":85333,"utime":9.25,"rtime":10.13,"ut_ops":9225.2,"rt_ops":8422.4,"ut_usec":108.4,"rt_usec":118.7,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":56888,"utime":10.06,"rtime":10.68,"ut_ops":5654.9,"rt_ops":5325.3,"ut_usec":176.8,"rt_usec":187.8,"etime":0.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":23272,"utime":10.45,"rtime":10.74,"ut_ops":2227.0,"rt_ops":2167.0,"ut_usec":449.0,"rt_usec":461.5,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":6399,"utime":9.7,"rtime":9.8,"ut_ops":659.7,"rt_ops":653.1,"ut_usec":1515.9,"rt_usec":1531.2,"etime":0.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1599,"utime":9.44,"rtime":9.46,"ut_ops":169.4,"rt_ops":168.9,"ut_usec":5903.7,"rt_usec":5919.3,"etime":0.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":399,"utime":9.63,"rtime":9.67,"ut_ops":41.4,"rt_ops":41.3,"ut_usec":24135.3,"rt_usec":24236.2,"etime":0.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":99,"utime":9.81,"rtime":9.86,"ut_ops":10.1,"rt_ops":10.0,"ut_usec":99090.9,"rt_usec":99576.4,"etime":0.63,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":7,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":23,"utime":9.65,"rtime":9.7,"ut_ops":2.4,"rt_ops":2.4,"ut_usec":419565.2,"rt_usec":421809.9,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":4,"power":8,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":5,"utime":9.0,"rtime":9.06,"ut_ops":0.6,"rt_ops":0.6,"ut_usec":1800000.0,"rt_usec":1812873.2,"etime":2.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":93090,"utime":10.13,"rtime":11.17,"ut_ops":9189.5,"rt_ops":8337.4,"ut_usec":108.8,"rt_usec":119.9,"etime":0.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":46545,"utime":10.78,"rtime":11.31,"ut_ops":4317.7,"rt_ops":4114.4,"ut_usec":231.6,"rt_usec":243.0,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":7999,"utime":9.58,"rtime":9.68,"ut_ops":835.0,"rt_ops":826.0,"ut_usec":1197.6,"rt_usec":1210.6,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1142,"utime":10.49,"rtime":10.52,"ut_ops":108.9,"rt_ops":108.6,"ut_usec":9185.6,"rt_usec":9209.9,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":133,"utime":9.92,"rtime":9.93,"ut_ops":13.4,"rt_ops":13.4,"ut_usec":74586.5,"rt_usec":74662.2,"etime":0.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":93090,"utime":10.1,"rtime":11.06,"ut_ops":9216.8,"rt_ops":8416.9,"ut_usec":108.5,"rt_usec":118.8,"etime":0.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":30117,"utime":10.24,"rtime":10.6,"ut_ops":2941.1,"rt_ops":2842.3,"ut_usec":340.0,"rt_usec":351.8,"etime":0.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":2461,"utime":9.83,"rtime":9.87,"ut_ops":250.4,"rt_ops":249.5,"ut_usec":3994.3,"rt_usec":4008.8,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":142,"utime":9.14,"rtime":9.15,"ut_ops":15.5,"rt_ops":15.5,"ut_usec":64366.2,"rt_usec":64446.1,"etime":0.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":16,"power":4,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":8,"utime":10.16,"rtime":10.23,"ut_ops":0.8,"rt_ops":0.8,"ut_usec":1270000.0,"rt_usec":1278537.6,"etime":1.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":85333,"utime":9.25,"rtime":10.17,"ut_ops":9225.2,"rt_ops":8389.7,"ut_usec":108.4,"rt_usec":119.2,"etime":0.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":18285,"utime":10.1,"rtime":10.33,"ut_ops":1810.4,"rt_ops":1770.4,"ut_usec":552.4,"rt_usec":564.8,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":666,"utime":9.87,"rtime":9.89,"ut_ops":67.5,"rt_ops":67.4,"ut_usec":14819.8,"rt_usec":14844.4,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":32,"power":3,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":19,"utime":9.86,"rtime":9.91,"ut_ops":1.9,"rt_ops":1.9,"ut_usec":518947.4,"rt_usec":521328.0,"etime":1.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1114","tag":"base_ruby_nest_full"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51199,"utime":10.19,"rtime":17.71,"ut_ops":5024.4,"rt_ops":2890.3,"ut_usec":199.0,"rt_usec":346.0,"etime":0.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":53894,"utime":10.37,"rtime":18.07,"ut_ops":5197.1,"rt_ops":2982.4,"ut_usec":192.4,"rt_usec":335.3,"etime":1.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"utime":8.86,"rtime":15.89,"ut_ops":5253.4,"rt_ops":2928.6,"ut_usec":190.4,"rt_usec":341.5,"etime":1.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51200,"utime":9.58,"rtime":16.56,"ut_ops":5344.5,"rt_ops":3091.5,"ut_usec":187.1,"rt_usec":323.5,"etime":1.25,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":53894,"utime":10.19,"rtime":18.35,"ut_ops":5288.9,"rt_ops":2937.4,"ut_usec":189.1,"rt_usec":340.4,"etime":1.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51199,"utime":9.91,"rtime":17.36,"ut_ops":5166.4,"rt_ops":2948.9,"ut_usec":193.6,"rt_usec":339.1,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51199,"utime":10.05,"rtime":17.87,"ut_ops":5094.4,"rt_ops":2864.9,"ut_usec":196.3,"rt_usec":349.1,"etime":0.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51199,"utime":9.58,"rtime":17.45,"ut_ops":5344.4,"rt_ops":2934.2,"ut_usec":187.1,"rt_usec":340.8,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"utime":8.74,"rtime":15.79,"ut_ops":5325.5,"rt_ops":2947.6,"ut_usec":187.8,"rt_usec":339.3,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":53894,"utime":10.82,"rtime":19.49,"ut_ops":4981.0,"rt_ops":2764.8,"ut_usec":200.8,"rt_usec":361.7,"etime":1.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51199,"utime":10.98,"rtime":20.24,"ut_ops":4662.9,"rt_ops":2530.1,"ut_usec":214.5,"rt_usec":395.2,"etime":1.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"utime":9.92,"rtime":18.64,"ut_ops":4692.0,"rt_ops":2497.5,"ut_usec":213.1,"rt_usec":400.4,"etime":0.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"utime":10.94,"rtime":20.46,"ut_ops":4254.6,"rt_ops":2274.8,"ut_usec":235.0,"rt_usec":439.6,"etime":1.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":39384,"utime":10.18,"rtime":19.67,"ut_ops":3868.8,"rt_ops":2002.2,"ut_usec":258.5,"rt_usec":499.4,"etime":1.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":28444,"utime":9.16,"rtime":17.73,"ut_ops":3105.2,"rt_ops":1604.2,"ut_usec":322.0,"rt_usec":623.3,"etime":1.24,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":23272,"utime":10.78,"rtime":20.33,"ut_ops":2158.8,"rt_ops":1144.5,"ut_usec":463.2,"rt_usec":873.7,"etime":0.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":48761,"utime":8.99,"rtime":16.11,"ut_ops":5423.9,"rt_ops":3027.2,"ut_usec":184.4,"rt_usec":330.3,"etime":1.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":48761,"utime":9.3,"rtime":16.35,"ut_ops":5243.1,"rt_ops":2983.1,"ut_usec":190.7,"rt_usec":335.2,"etime":1.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"utime":11.07,"rtime":19.93,"ut_ops":4868.5,"rt_ops":2704.1,"ut_usec":205.4,"rt_usec":369.8,"etime":1.2,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"utime":8.71,"rtime":15.42,"ut_ops":5343.9,"rt_ops":3018.0,"ut_usec":187.1,"rt_usec":331.3,"etime":1.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"utime":10.25,"rtime":18.18,"ut_ops":5258.0,"rt_ops":2964.0,"ut_usec":190.2,"rt_usec":337.4,"etime":1.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"utime":10.13,"rtime":18.07,"ut_ops":5320.2,"rt_ops":2981.9,"ut_usec":188.0,"rt_usec":335.4,"etime":1.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"utime":10.94,"rtime":19.3,"ut_ops":4926.3,"rt_ops":2792.5,"ut_usec":203.0,"rt_usec":358.1,"etime":1.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":44521,"utime":8.44,"rtime":15.16,"ut_ops":5275.0,"rt_ops":2936.7,"ut_usec":189.6,"rt_usec":340.5,"etime":1.4,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":51200,"utime":10.58,"rtime":19.04,"ut_ops":4839.3,"rt_ops":2689.4,"ut_usec":206.6,"rt_usec":371.8,"etime":1.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"utime":9.68,"rtime":17.45,"ut_ops":4808.4,"rt_ops":2667.4,"ut_usec":208.0,"rt_usec":374.9,"etime":0.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"utime":9.18,"rtime":16.45,"ut_ops":5070.3,"rt_ops":2828.6,"ut_usec":197.2,"rt_usec":353.5,"etime":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"utime":9.54,"rtime":17.33,"ut_ops":4878.9,"rt_ops":2686.1,"ut_usec":205.0,"rt_usec":372.3,"etime":0.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":39384,"utime":9.41,"rtime":17.42,"ut_ops":4185.3,"rt_ops":2260.9,"ut_usec":238.9,"rt_usec":442.3,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":39384,"utime":10.32,"rtime":19.33,"ut_ops":3816.3,"rt_ops":2037.4,"ut_usec":262.0,"rt_usec":490.8,"etime":1.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":28444,"utime":10.17,"rtime":30.75,"ut_ops":2796.9,"rt_ops":925.0,"ut_usec":357.5,"rt_usec":1081.1,"etime":1.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":19692,"utime":10.51,"rtime":19.0,"ut_ops":1873.6,"rt_ops":1036.7,"ut_usec":533.7,"rt_usec":964.6,"etime":0.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":51199,"utime":9.89,"rtime":17.49,"ut_ops":5176.8,"rt_ops":2927.0,"ut_usec":193.2,"rt_usec":341.7,"etime":1.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":51199,"utime":10.17,"rtime":17.56,"ut_ops":5034.3,"rt_ops":2915.6,"ut_usec":198.6,"rt_usec":343.0,"etime":1.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":46545,"utime":9.39,"rtime":16.5,"ut_ops":4956.9,"rt_ops":2821.6,"ut_usec":201.7,"rt_usec":354.4,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":42666,"utime":10.24,"rtime":17.71,"ut_ops":4166.6,"rt_ops":2409.0,"ut_usec":240.0,"rt_usec":415.1,"etime":1.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":36571,"utime":8.83,"rtime":14.13,"ut_ops":4141.7,"rt_ops":2588.2,"ut_usec":241.4,"rt_usec":386.4,"etime":1.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":31999,"utime":10.52,"rtime":15.48,"ut_ops":3041.7,"rt_ops":2067.5,"ut_usec":328.8,"rt_usec":483.7,"etime":1.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":23272,"utime":10.95,"rtime":16.43,"ut_ops":2125.3,"rt_ops":1416.7,"ut_usec":470.5,"rt_usec":705.9,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":12800,"utime":9.89,"rtime":13.47,"ut_ops":1294.2,"rt_ops":949.9,"ut_usec":772.7,"rt_usec":1052.7,"etime":1.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":7529,"utime":10.13,"rtime":13.4,"ut_ops":743.2,"rt_ops":561.7,"ut_usec":1345.5,"rt_usec":1780.2,"etime":1.02,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":4266,"utime":10.07,"rtime":12.47,"ut_ops":423.6,"rt_ops":342.1,"ut_usec":2360.5,"rt_usec":2923.4,"etime":1.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":2133,"utime":9.8,"rtime":11.3,"ut_ops":217.7,"rt_ops":188.8,"ut_usec":4594.5,"rt_usec":5295.8,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1142,"utime":9.88,"rtime":11.01,"ut_ops":115.6,"rt_ops":103.8,"ut_usec":8651.5,"rt_usec":9637.1,"etime":0.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":571,"utime":9.73,"rtime":10.65,"ut_ops":58.7,"rt_ops":53.6,"ut_usec":17040.3,"rt_usec":18650.6,"etime":0.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":285,"utime":9.82,"rtime":10.57,"ut_ops":29.0,"rt_ops":27.0,"ut_usec":34456.1,"rt_usec":37089.8,"etime":0.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":142,"utime":10.02,"rtime":10.72,"ut_ops":14.2,"rt_ops":13.2,"ut_usec":70563.4,"rt_usec":75496.8,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":51200,"utime":9.61,"rtime":16.61,"ut_ops":5327.8,"rt_ops":3081.8,"ut_usec":187.7,"rt_usec":324.5,"etime":1.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":51200,"utime":9.65,"rtime":16.8,"ut_ops":5305.7,"rt_ops":3047.4,"ut_usec":188.5,"rt_usec":328.2,"etime":1.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":51199,"utime":9.62,"rtime":16.77,"ut_ops":5322.1,"rt_ops":3053.8,"ut_usec":187.9,"rt_usec":327.5,"etime":1.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":51199,"utime":10.17,"rtime":18.03,"ut_ops":5034.3,"rt_ops":2839.6,"ut_usec":198.6,"rt_usec":352.2,"etime":1.25,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":46545,"utime":9.88,"rtime":17.53,"ut_ops":4711.0,"rt_ops":2655.2,"ut_usec":212.3,"rt_usec":376.6,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":46545,"utime":9.42,"rtime":16.51,"ut_ops":4941.1,"rt_ops":2819.4,"ut_usec":202.4,"rt_usec":354.7,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":46545,"utime":10.16,"rtime":16.78,"ut_ops":4581.2,"rt_ops":2774.4,"ut_usec":218.3,"rt_usec":360.4,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":42666,"utime":10.04,"rtime":16.32,"ut_ops":4249.6,"rt_ops":2614.0,"ut_usec":235.3,"rt_usec":382.6,"etime":0.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":36571,"utime":10.65,"rtime":17.02,"ut_ops":3433.9,"rt_ops":2149.2,"ut_usec":291.2,"rt_usec":465.3,"etime":0.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":25599,"utime":9.87,"rtime":15.72,"ut_ops":2593.6,"rt_ops":1628.5,"ut_usec":385.6,"rt_usec":614.1,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":18285,"utime":10.57,"rtime":15.92,"ut_ops":1729.9,"rt_ops":1148.8,"ut_usec":578.1,"rt_usec":870.5,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":9846,"utime":9.7,"rtime":13.84,"ut_ops":1015.1,"rt_ops":711.4,"ut_usec":985.2,"rt_usec":1405.6,"etime":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":5333,"utime":9.91,"rtime":17.42,"ut_ops":538.1,"rt_ops":306.1,"ut_usec":1858.2,"rt_usec":3266.7,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2666,"utime":10.14,"rtime":13.08,"ut_ops":262.9,"rt_ops":203.8,"ut_usec":3803.5,"rt_usec":4906.5,"etime":1.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1599,"utime":9.87,"rtime":12.59,"ut_ops":162.0,"rt_ops":127.0,"ut_usec":6172.6,"rt_usec":7871.2,"etime":0.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":666,"utime":9.2,"rtime":11.2,"ut_ops":72.4,"rt_ops":59.5,"ut_usec":13813.8,"rt_usec":16817.9,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":363,"utime":10.24,"rtime":11.98,"ut_ops":35.4,"rt_ops":30.3,"ut_usec":28209.4,"rt_usec":33002.9,"etime":0.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":181,"utime":10.71,"rtime":12.87,"ut_ops":16.9,"rt_ops":14.1,"ut_usec":59171.3,"rt_usec":71099.6,"etime":0.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":53894,"utime":9.38,"rtime":17.17,"ut_ops":5745.6,"rt_ops":3139.6,"ut_usec":174.0,"rt_usec":318.5,"etime":1.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":51199,"utime":9.77,"rtime":17.75,"ut_ops":5240.4,"rt_ops":2884.6,"ut_usec":190.8,"rt_usec":346.7,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":42666,"utime":9.29,"rtime":16.88,"ut_ops":4592.7,"rt_ops":2527.2,"ut_usec":217.7,"rt_usec":395.7,"etime":0.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":42666,"utime":11.1,"rtime":20.2,"ut_ops":3843.8,"rt_ops":2112.1,"ut_usec":260.2,"rt_usec":473.5,"etime":0.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":28444,"utime":8.95,"rtime":14.97,"ut_ops":3178.1,"rt_ops":1900.0,"ut_usec":314.7,"rt_usec":526.3,"etime":1.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":21333,"utime":9.76,"rtime":15.02,"ut_ops":2185.8,"rt_ops":1420.5,"ut_usec":457.5,"rt_usec":704.0,"etime":1.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":13473,"utime":9.95,"rtime":14.19,"ut_ops":1354.1,"rt_ops":949.7,"ut_usec":738.5,"rt_usec":1053.0,"etime":1.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":7529,"utime":9.61,"rtime":12.89,"ut_ops":783.5,"rt_ops":584.1,"ut_usec":1276.4,"rt_usec":1712.1,"etime":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4266,"utime":10.04,"rtime":12.22,"ut_ops":424.9,"rt_ops":349.0,"ut_usec":2353.5,"rt_usec":2865.2,"etime":0.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":2133,"utime":9.4,"rtime":10.93,"ut_ops":226.9,"rt_ops":195.2,"ut_usec":4406.9,"rt_usec":5122.1,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1142,"utime":9.75,"rtime":10.89,"ut_ops":117.1,"rt_ops":104.9,"ut_usec":8537.7,"rt_usec":9535.5,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":571,"utime":9.71,"rtime":10.63,"ut_ops":58.8,"rt_ops":53.7,"ut_usec":17005.3,"rt_usec":18611.8,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":285,"utime":9.65,"rtime":10.38,"ut_ops":29.5,"rt_ops":27.5,"ut_usec":33859.6,"rt_usec":36414.8,"etime":0.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":46545,"utime":8.57,"rtime":16.7,"ut_ops":5431.2,"rt_ops":2786.3,"ut_usec":184.1,"rt_usec":358.9,"etime":0.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":51199,"utime":10.0,"rtime":18.65,"ut_ops":5119.9,"rt_ops":2744.9,"ut_usec":195.3,"rt_usec":364.3,"etime":0.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":51199,"utime":9.86,"rtime":18.62,"ut_ops":5192.6,"rt_ops":2749.1,"ut_usec":192.6,"rt_usec":363.8,"etime":1.29,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":51199,"utime":9.72,"rtime":17.76,"ut_ops":5267.4,"rt_ops":2883.4,"ut_usec":189.8,"rt_usec":346.8,"etime":1.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":51199,"utime":10.04,"rtime":17.84,"ut_ops":5099.5,"rt_ops":2870.7,"ut_usec":196.1,"rt_usec":348.3,"etime":0.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":46545,"utime":10.19,"rtime":17.63,"ut_ops":4567.7,"rt_ops":2640.3,"ut_usec":218.9,"rt_usec":378.7,"etime":0.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":39384,"utime":10.39,"rtime":17.49,"ut_ops":3790.6,"rt_ops":2251.3,"ut_usec":263.8,"rt_usec":444.2,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":30117,"utime":9.44,"rtime":15.15,"ut_ops":3190.4,"rt_ops":1988.4,"ut_usec":313.4,"rt_usec":502.9,"etime":1.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":23272,"utime":10.52,"rtime":16.16,"ut_ops":2212.2,"rt_ops":1440.3,"ut_usec":452.0,"rt_usec":694.3,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":14222,"utime":9.76,"rtime":13.81,"ut_ops":1457.2,"rt_ops":1030.0,"ut_usec":686.3,"rt_usec":970.9,"etime":1.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":8533,"utime":10.12,"rtime":14.04,"ut_ops":843.2,"rt_ops":607.8,"ut_usec":1186.0,"rt_usec":1645.4,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":4571,"utime":10.02,"rtime":12.9,"ut_ops":456.2,"rt_ops":354.3,"ut_usec":2192.1,"rt_usec":2822.1,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":2461,"utime":10.27,"rtime":12.65,"ut_ops":239.6,"rt_ops":194.5,"ut_usec":4173.1,"rt_usec":5141.0,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1142,"utime":9.99,"rtime":11.74,"ut_ops":114.3,"rt_ops":97.3,"ut_usec":8747.8,"rt_usec":10281.7,"etime":0.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":500,"utime":10.06,"rtime":11.62,"ut_ops":49.7,"rt_ops":43.0,"ut_usec":20120.0,"rt_usec":23241.2,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":235,"utime":9.95,"rtime":11.24,"ut_ops":23.6,"rt_ops":20.9,"ut_usec":42340.4,"rt_usec":47820.3,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1215","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":34133,"utime":10.37,"rtime":15.82,"ut_ops":3291.5,"rt_ops":2158.0,"ut_usec":303.8,"rt_usec":463.4,"etime":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":31999,"utime":9.67,"rtime":14.63,"ut_ops":3309.1,"rt_ops":2187.6,"ut_usec":302.2,"rt_usec":457.1,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":34133,"utime":10.5,"rtime":15.8,"ut_ops":3250.8,"rt_ops":2160.6,"ut_usec":307.6,"rt_usec":462.8,"etime":1.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":31999,"utime":10.31,"rtime":15.88,"ut_ops":3103.7,"rt_ops":2014.7,"ut_usec":322.2,"rt_usec":496.3,"etime":1.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":32000,"utime":10.03,"rtime":15.27,"ut_ops":3190.4,"rt_ops":2095.4,"ut_usec":313.4,"rt_usec":477.2,"etime":1.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":32000,"utime":9.99,"rtime":15.32,"ut_ops":3203.2,"rt_ops":2088.9,"ut_usec":312.2,"rt_usec":478.7,"etime":1.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":32000,"utime":10.19,"rtime":15.65,"ut_ops":3140.3,"rt_ops":2044.6,"ut_usec":318.4,"rt_usec":489.1,"etime":1.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":30117,"utime":9.43,"rtime":14.48,"ut_ops":3193.7,"rt_ops":2079.2,"ut_usec":313.1,"rt_usec":481.0,"etime":1.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":30117,"utime":10.09,"rtime":15.43,"ut_ops":2984.8,"rt_ops":1951.5,"ut_usec":335.0,"rt_usec":512.4,"etime":1.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":30117,"utime":9.8,"rtime":14.64,"ut_ops":3073.2,"rt_ops":2057.7,"ut_usec":325.4,"rt_usec":486.0,"etime":1.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":26947,"utime":9.95,"rtime":15.99,"ut_ops":2708.2,"rt_ops":1685.2,"ut_usec":369.2,"rt_usec":593.4,"etime":1.3,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":24380,"utime":9.68,"rtime":15.6,"ut_ops":2518.6,"rt_ops":1562.5,"ut_usec":397.0,"rt_usec":640.0,"etime":1.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":23272,"utime":10.21,"rtime":16.18,"ut_ops":2279.3,"rt_ops":1437.9,"ut_usec":438.7,"rt_usec":695.5,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":17066,"utime":10.05,"rtime":15.19,"ut_ops":1698.1,"rt_ops":1123.4,"ut_usec":588.9,"rt_usec":890.2,"etime":1.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":11636,"utime":10.25,"rtime":14.95,"ut_ops":1135.2,"rt_ops":778.3,"ut_usec":880.9,"rt_usec":1284.8,"etime":1.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":7529,"utime":9.99,"rtime":14.33,"ut_ops":753.7,"rt_ops":525.6,"ut_usec":1326.9,"rt_usec":1902.8,"etime":1.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":34133,"utime":10.81,"rtime":16.38,"ut_ops":3157.5,"rt_ops":2083.7,"ut_usec":316.7,"rt_usec":479.9,"etime":0.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":32000,"utime":9.62,"rtime":14.4,"ut_ops":3326.4,"rt_ops":2222.3,"ut_usec":300.6,"rt_usec":450.0,"etime":1.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":32000,"utime":9.52,"rtime":14.05,"ut_ops":3361.3,"rt_ops":2278.0,"ut_usec":297.5,"rt_usec":439.0,"etime":1.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":34133,"utime":10.93,"rtime":16.89,"ut_ops":3122.9,"rt_ops":2021.2,"ut_usec":320.2,"rt_usec":494.8,"etime":0.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":30117,"utime":9.66,"rtime":15.09,"ut_ops":3117.7,"rt_ops":1996.1,"ut_usec":320.7,"rt_usec":501.0,"etime":1.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":32000,"utime":9.83,"rtime":14.57,"ut_ops":3255.3,"rt_ops":2196.3,"ut_usec":307.2,"rt_usec":455.3,"etime":1.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":31999,"utime":9.65,"rtime":14.1,"ut_ops":3316.0,"rt_ops":2270.0,"ut_usec":301.6,"rt_usec":440.5,"etime":1.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":34133,"utime":10.5,"rtime":15.86,"ut_ops":3250.8,"rt_ops":2151.5,"ut_usec":307.6,"rt_usec":464.8,"etime":1.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":32000,"utime":9.99,"rtime":14.66,"ut_ops":3203.2,"rt_ops":2182.7,"ut_usec":312.2,"rt_usec":458.1,"etime":1.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":30117,"utime":9.91,"rtime":14.67,"ut_ops":3039.1,"rt_ops":2053.0,"ut_usec":329.1,"rt_usec":487.1,"etime":1.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":30117,"utime":10.3,"rtime":15.65,"ut_ops":2924.0,"rt_ops":1924.8,"ut_usec":342.0,"rt_usec":519.5,"etime":1.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":25599,"utime":10.05,"rtime":15.43,"ut_ops":2547.2,"rt_ops":1659.3,"ut_usec":392.6,"rt_usec":602.7,"etime":1.25,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":23272,"utime":10.6,"rtime":16.43,"ut_ops":2195.5,"rt_ops":1416.8,"ut_usec":455.5,"rt_usec":705.8,"etime":1.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":17066,"utime":9.67,"rtime":14.3,"ut_ops":1764.8,"rt_ops":1193.2,"ut_usec":566.6,"rt_usec":838.1,"etime":1.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":11636,"utime":10.16,"rtime":14.7,"ut_ops":1145.3,"rt_ops":791.3,"ut_usec":873.2,"rt_usec":1263.7,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":7111,"utime":9.83,"rtime":13.99,"ut_ops":723.4,"rt_ops":508.3,"ut_usec":1382.4,"rt_usec":1967.5,"etime":0.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":30117,"utime":9.91,"rtime":14.52,"ut_ops":3039.1,"rt_ops":2073.5,"ut_usec":329.1,"rt_usec":482.3,"etime":1.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":28444,"utime":9.97,"rtime":14.65,"ut_ops":2853.0,"rt_ops":1942.1,"ut_usec":350.5,"rt_usec":514.9,"etime":1.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":23272,"utime":9.29,"rtime":13.83,"ut_ops":2505.1,"rt_ops":1682.6,"ut_usec":399.2,"rt_usec":594.3,"etime":1.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":21333,"utime":9.45,"rtime":13.12,"ut_ops":2257.5,"rt_ops":1625.6,"ut_usec":443.0,"rt_usec":615.2,"etime":0.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":17066,"utime":9.91,"rtime":14.01,"ut_ops":1722.1,"rt_ops":1217.8,"ut_usec":580.7,"rt_usec":821.2,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":11636,"utime":9.72,"rtime":13.24,"ut_ops":1197.1,"rt_ops":878.5,"ut_usec":835.3,"rt_usec":1138.3,"etime":0.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":7529,"utime":10.11,"rtime":13.13,"ut_ops":744.7,"rt_ops":573.5,"ut_usec":1342.8,"rt_usec":1743.7,"etime":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":4266,"utime":9.98,"rtime":12.31,"ut_ops":427.5,"rt_ops":346.5,"ut_usec":2339.4,"rt_usec":2886.4,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":2285,"utime":9.89,"rtime":11.42,"ut_ops":231.0,"rt_ops":200.2,"ut_usec":4328.2,"rt_usec":4995.9,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1230,"utime":10.25,"rtime":11.35,"ut_ops":120.0,"rt_ops":108.4,"ut_usec":8333.3,"rt_usec":9226.7,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":615,"utime":9.98,"rtime":10.87,"ut_ops":61.6,"rt_ops":56.6,"ut_usec":16227.6,"rt_usec":17674.9,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":307,"utime":10.07,"rtime":10.79,"ut_ops":30.5,"rt_ops":28.4,"ut_usec":32801.3,"rt_usec":35157.6,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":142,"utime":9.5,"rtime":10.29,"ut_ops":14.9,"rt_ops":13.8,"ut_usec":66901.4,"rt_usec":72446.4,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":76,"utime":10.27,"rtime":10.93,"ut_ops":7.4,"rt_ops":7.0,"ut_usec":135131.6,"rt_usec":143855.4,"etime":0.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":34,"utime":9.39,"rtime":10.04,"ut_ops":3.6,"rt_ops":3.4,"ut_usec":276176.5,"rt_usec":295382.6,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":31999,"utime":10.56,"rtime":15.78,"ut_ops":3030.2,"rt_ops":2028.0,"ut_usec":330.0,"rt_usec":493.1,"etime":1.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":26947,"utime":9.87,"rtime":15.17,"ut_ops":2730.2,"rt_ops":1776.1,"ut_usec":366.3,"rt_usec":563.0,"etime":1.23,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":25600,"utime":9.74,"rtime":14.44,"ut_ops":2628.3,"rt_ops":1773.0,"ut_usec":380.5,"rt_usec":564.0,"etime":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":23272,"utime":10.31,"rtime":15.13,"ut_ops":2257.2,"rt_ops":1537.8,"ut_usec":443.0,"rt_usec":650.3,"etime":0.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":17066,"utime":9.78,"rtime":14.04,"ut_ops":1745.0,"rt_ops":1215.9,"ut_usec":573.1,"rt_usec":822.4,"etime":0.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":12799,"utime":10.57,"rtime":14.86,"ut_ops":1210.9,"rt_ops":861.1,"ut_usec":825.8,"rt_usec":1161.3,"etime":1.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":7529,"utime":9.97,"rtime":13.76,"ut_ops":755.2,"rt_ops":547.3,"ut_usec":1324.2,"rt_usec":1827.1,"etime":0.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":4571,"utime":10.52,"rtime":13.05,"ut_ops":434.5,"rt_ops":350.2,"ut_usec":2301.5,"rt_usec":2855.8,"etime":1.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2461,"utime":10.45,"rtime":12.22,"ut_ops":235.5,"rt_ops":201.4,"ut_usec":4246.2,"rt_usec":4964.2,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1230,"utime":10.07,"rtime":11.34,"ut_ops":122.1,"rt_ops":108.4,"ut_usec":8187.0,"rt_usec":9221.0,"etime":0.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":615,"utime":9.87,"rtime":10.81,"ut_ops":62.3,"rt_ops":56.9,"ut_usec":16048.8,"rt_usec":17583.1,"etime":0.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":285,"utime":9.3,"rtime":10.21,"ut_ops":30.6,"rt_ops":27.9,"ut_usec":32631.6,"rt_usec":35825.9,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":133,"utime":9.04,"rtime":9.82,"ut_ops":14.7,"rt_ops":13.5,"ut_usec":67969.9,"rt_usec":73858.5,"etime":0.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":66,"utime":9.64,"rtime":10.3,"ut_ops":6.8,"rt_ops":6.4,"ut_usec":146060.6,"rt_usec":156031.5,"etime":0.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":41,"utime":10.02,"rtime":10.67,"ut_ops":4.1,"rt_ops":3.8,"ut_usec":244390.2,"rt_usec":260193.8,"etime":0.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":18,"utime":9.57,"rtime":10.16,"ut_ops":1.9,"rt_ops":1.8,"ut_usec":531666.7,"rt_usec":564424.4,"etime":1.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":10,"utime":10.11,"rtime":10.74,"ut_ops":1.0,"rt_ops":0.9,"ut_usec":1011000.0,"rt_usec":1073797.5,"etime":1.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":4,"utime":8.03,"rtime":8.61,"ut_ops":0.5,"rt_ops":0.5,"ut_usec":2007500.0,"rt_usec":2152860.0,"etime":2.58,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":34133,"utime":9.98,"rtime":15.78,"ut_ops":3420.1,"rt_ops":2163.1,"ut_usec":292.4,"rt_usec":462.3,"etime":1.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":32000,"utime":10.28,"rtime":15.77,"ut_ops":3112.8,"rt_ops":2028.6,"ut_usec":321.2,"rt_usec":493.0,"etime":1.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":25599,"utime":10.76,"rtime":15.62,"ut_ops":2379.1,"rt_ops":1639.2,"ut_usec":420.3,"rt_usec":610.1,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":17066,"utime":9.82,"rtime":13.52,"ut_ops":1737.9,"rt_ops":1262.3,"ut_usec":575.4,"rt_usec":792.2,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":10666,"utime":9.96,"rtime":13.84,"ut_ops":1070.9,"rt_ops":770.8,"ut_usec":933.8,"rt_usec":1297.3,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":6399,"utime":10.45,"rtime":13.64,"ut_ops":612.3,"rt_ops":469.1,"ut_usec":1633.1,"rt_usec":2131.9,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":3199,"utime":9.66,"rtime":11.67,"ut_ops":331.2,"rt_ops":274.2,"ut_usec":3019.7,"rt_usec":3647.6,"etime":1.14,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1599,"utime":9.37,"rtime":10.82,"ut_ops":170.7,"rt_ops":147.8,"ut_usec":5859.9,"rt_usec":6768.2,"etime":0.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":799,"utime":9.24,"rtime":10.35,"ut_ops":86.5,"rt_ops":77.2,"ut_usec":11564.5,"rt_usec":12955.3,"etime":0.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":421,"utime":9.81,"rtime":10.62,"ut_ops":42.9,"rt_ops":39.6,"ut_usec":23301.7,"rt_usec":25236.2,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":210,"utime":9.89,"rtime":10.64,"ut_ops":21.2,"rt_ops":19.7,"ut_usec":47095.2,"rt_usec":50647.5,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":90,"utime":8.64,"rtime":9.27,"ut_ops":10.4,"rt_ops":9.7,"ut_usec":96000.0,"rt_usec":102988.3,"etime":0.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":49,"utime":9.66,"rtime":10.3,"ut_ops":5.1,"rt_ops":4.8,"ut_usec":197142.9,"rt_usec":210265.1,"etime":0.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":34133,"utime":9.93,"rtime":15.7,"ut_ops":3437.4,"rt_ops":2174.3,"ut_usec":290.9,"rt_usec":459.9,"etime":0.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":31999,"utime":10.9,"rtime":16.77,"ut_ops":2935.7,"rt_ops":1908.3,"ut_usec":340.6,"rt_usec":524.0,"etime":1.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":23272,"utime":9.29,"rtime":13.56,"ut_ops":2505.1,"rt_ops":1715.8,"ut_usec":399.2,"rt_usec":582.8,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":18285,"utime":10.31,"rtime":14.39,"ut_ops":1773.5,"rt_ops":1270.7,"ut_usec":563.9,"rt_usec":787.0,"etime":0.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":11636,"utime":10.27,"rtime":14.13,"ut_ops":1133.0,"rt_ops":823.6,"ut_usec":882.6,"rt_usec":1214.1,"etime":0.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":6399,"utime":9.79,"rtime":12.79,"ut_ops":653.6,"rt_ops":500.3,"ut_usec":1529.9,"rt_usec":1998.7,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":3368,"utime":9.5,"rtime":11.65,"ut_ops":354.5,"rt_ops":289.0,"ut_usec":2820.7,"rt_usec":3460.1,"etime":0.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1882,"utime":10.35,"rtime":11.72,"ut_ops":181.8,"rt_ops":160.5,"ut_usec":5499.5,"rt_usec":6229.3,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":941,"utime":10.28,"rtime":11.27,"ut_ops":91.5,"rt_ops":83.5,"ut_usec":10924.5,"rt_usec":11981.4,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":470,"utime":10.35,"rtime":11.18,"ut_ops":45.4,"rt_ops":42.0,"ut_usec":22021.3,"rt_usec":23794.8,"etime":0.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":222,"utime":9.87,"rtime":10.64,"ut_ops":22.5,"rt_ops":20.9,"ut_usec":44459.5,"rt_usec":47928.0,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":105,"utime":9.57,"rtime":10.18,"ut_ops":11.0,"rt_ops":10.3,"ut_usec":91142.9,"rt_usec":96998.8,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":52,"utime":9.81,"rtime":10.49,"ut_ops":5.3,"rt_ops":5.0,"ut_usec":188653.8,"rt_usec":201674.2,"etime":0.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":25,"utime":9.75,"rtime":10.39,"ut_ops":2.6,"rt_ops":2.4,"ut_usec":390000.0,"rt_usec":415610.4,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":11,"utime":9.21,"rtime":9.82,"ut_ops":1.2,"rt_ops":1.1,"ut_usec":837272.7,"rt_usec":892487.5,"etime":1.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":5,"utime":8.36,"rtime":9.01,"ut_ops":0.6,"rt_ops":0.6,"ut_usec":1672000.0,"rt_usec":1801408.1,"etime":2.28,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1248","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":53894,"utime":10.7,"rtime":19.34,"ut_ops":5036.8,"rt_ops":2787.0,"ut_usec":198.5,"rt_usec":358.8,"etime":1.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":48761,"utime":9.01,"rtime":16.02,"ut_ops":5411.9,"rt_ops":3043.3,"ut_usec":184.8,"rt_usec":328.6,"etime":1.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51199,"utime":10.63,"rtime":19.39,"ut_ops":4816.5,"rt_ops":2640.9,"ut_usec":207.6,"rt_usec":378.7,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51199,"utime":10.45,"rtime":18.57,"ut_ops":4899.4,"rt_ops":2756.4,"ut_usec":204.1,"rt_usec":362.8,"etime":1.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51199,"utime":10.3,"rtime":18.57,"ut_ops":4970.8,"rt_ops":2756.6,"ut_usec":201.2,"rt_usec":362.8,"etime":1.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"utime":9.35,"rtime":16.78,"ut_ops":4978.1,"rt_ops":2774.3,"ut_usec":200.9,"rt_usec":360.5,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":48761,"utime":9.93,"rtime":17.78,"ut_ops":4910.5,"rt_ops":2742.2,"ut_usec":203.6,"rt_usec":364.7,"etime":1.25,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"utime":8.77,"rtime":16.17,"ut_ops":5307.3,"rt_ops":2879.4,"ut_usec":188.4,"rt_usec":347.3,"etime":1.44,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":53894,"utime":10.79,"rtime":19.31,"ut_ops":4994.8,"rt_ops":2791.6,"ut_usec":200.2,"rt_usec":358.2,"etime":1.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"utime":9.8,"rtime":17.89,"ut_ops":4749.5,"rt_ops":2601.7,"ut_usec":210.5,"rt_usec":384.4,"etime":0.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"utime":9.19,"rtime":16.57,"ut_ops":5064.7,"rt_ops":2808.7,"ut_usec":197.4,"rt_usec":356.0,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"utime":9.84,"rtime":18.53,"ut_ops":4730.2,"rt_ops":2512.0,"ut_usec":211.4,"rt_usec":398.1,"etime":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":42666,"utime":9.69,"rtime":17.8,"ut_ops":4403.1,"rt_ops":2397.4,"ut_usec":227.1,"rt_usec":417.1,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":42666,"utime":10.61,"rtime":20.99,"ut_ops":4021.3,"rt_ops":2032.3,"ut_usec":248.7,"rt_usec":492.0,"etime":1.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":30117,"utime":9.59,"rtime":20.08,"ut_ops":3140.5,"rt_ops":1499.6,"ut_usec":318.4,"rt_usec":666.9,"etime":1.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":23272,"utime":10.69,"rtime":20.51,"ut_ops":2177.0,"rt_ops":1134.9,"ut_usec":459.4,"rt_usec":881.1,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"utime":10.5,"rtime":18.69,"ut_ops":5132.8,"rt_ops":2882.8,"ut_usec":194.8,"rt_usec":346.9,"etime":1.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"utime":11.06,"rtime":19.97,"ut_ops":4872.9,"rt_ops":2698.6,"ut_usec":205.2,"rt_usec":370.6,"etime":1.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"utime":9.96,"rtime":17.69,"ut_ops":5411.0,"rt_ops":3045.8,"ut_usec":184.8,"rt_usec":328.3,"etime":1.4,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"utime":9.94,"rtime":17.61,"ut_ops":5421.9,"rt_ops":3060.8,"ut_usec":184.4,"rt_usec":326.7,"etime":1.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":48761,"utime":8.92,"rtime":15.16,"ut_ops":5466.5,"rt_ops":3216.1,"ut_usec":182.9,"rt_usec":310.9,"etime":1.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":51199,"utime":10.43,"rtime":18.41,"ut_ops":4908.8,"rt_ops":2780.6,"ut_usec":203.7,"rt_usec":359.6,"etime":1.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"utime":9.09,"rtime":15.53,"ut_ops":5120.5,"rt_ops":2997.6,"ut_usec":195.3,"rt_usec":333.6,"etime":1.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":51199,"utime":10.18,"rtime":17.66,"ut_ops":5029.4,"rt_ops":2899.1,"ut_usec":198.8,"rt_usec":344.9,"etime":1.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"utime":9.81,"rtime":17.82,"ut_ops":4744.6,"rt_ops":2611.3,"ut_usec":210.8,"rt_usec":383.0,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"utime":9.28,"rtime":16.89,"ut_ops":5015.6,"rt_ops":2755.0,"ut_usec":199.4,"rt_usec":363.0,"etime":1.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"utime":9.88,"rtime":17.59,"ut_ops":4711.0,"rt_ops":2646.1,"ut_usec":212.3,"rt_usec":377.9,"etime":0.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"utime":10.08,"rtime":18.25,"ut_ops":4617.6,"rt_ops":2550.1,"ut_usec":216.6,"rt_usec":392.1,"etime":1.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":42666,"utime":10.5,"rtime":20.38,"ut_ops":4063.4,"rt_ops":2093.8,"ut_usec":246.1,"rt_usec":477.6,"etime":1.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":42666,"utime":11.72,"rtime":22.43,"ut_ops":3640.4,"rt_ops":1902.5,"ut_usec":274.7,"rt_usec":525.6,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":25599,"utime":9.18,"rtime":21.27,"ut_ops":2788.6,"rt_ops":1203.7,"ut_usec":358.6,"rt_usec":830.8,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":19692,"utime":10.41,"rtime":18.75,"ut_ops":1891.6,"rt_ops":1050.3,"ut_usec":528.6,"rt_usec":952.1,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":51199,"utime":10.72,"rtime":19.3,"ut_ops":4776.0,"rt_ops":2653.2,"ut_usec":209.4,"rt_usec":376.9,"etime":0.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":51199,"utime":10.93,"rtime":19.32,"ut_ops":4684.3,"rt_ops":2649.5,"ut_usec":213.5,"rt_usec":377.4,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":42666,"utime":8.56,"rtime":15.2,"ut_ops":4984.3,"rt_ops":2807.4,"ut_usec":200.6,"rt_usec":356.2,"etime":1.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":42666,"utime":9.51,"rtime":16.48,"ut_ops":4486.4,"rt_ops":2589.4,"ut_usec":222.9,"rt_usec":386.2,"etime":0.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":42666,"utime":10.2,"rtime":16.29,"ut_ops":4182.9,"rt_ops":2619.7,"ut_usec":239.1,"rt_usec":381.7,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":31999,"utime":9.86,"rtime":14.94,"ut_ops":3245.3,"rt_ops":2142.3,"ut_usec":308.1,"rt_usec":466.8,"etime":1.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":21333,"utime":9.61,"rtime":14.07,"ut_ops":2219.9,"rt_ops":1516.6,"ut_usec":450.5,"rt_usec":659.4,"etime":0.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":13473,"utime":9.58,"rtime":13.48,"ut_ops":1406.4,"rt_ops":999.1,"ut_usec":711.1,"rt_usec":1000.9,"etime":1.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":7999,"utime":9.81,"rtime":13.32,"ut_ops":815.4,"rt_ops":600.6,"ut_usec":1226.4,"rt_usec":1664.9,"etime":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":4571,"utime":10.29,"rtime":12.91,"ut_ops":444.2,"rt_ops":353.9,"ut_usec":2251.1,"rt_usec":2825.4,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":2285,"utime":9.79,"rtime":11.31,"ut_ops":233.4,"rt_ops":202.0,"ut_usec":4284.5,"rt_usec":4950.1,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1066,"utime":8.92,"rtime":10.19,"ut_ops":119.5,"rt_ops":104.6,"ut_usec":8367.7,"rt_usec":9556.2,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":615,"utime":10.18,"rtime":11.2,"ut_ops":60.4,"rt_ops":54.9,"ut_usec":16552.8,"rt_usec":18204.0,"etime":0.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":307,"utime":10.08,"rtime":10.97,"ut_ops":30.5,"rt_ops":28.0,"ut_usec":32833.9,"rt_usec":35728.7,"etime":0.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":142,"utime":9.29,"rtime":10.0,"ut_ops":15.3,"rt_ops":14.2,"ut_usec":65422.5,"rt_usec":70446.2,"etime":0.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":51199,"utime":9.44,"rtime":16.64,"ut_ops":5423.6,"rt_ops":3076.1,"ut_usec":184.4,"rt_usec":325.1,"etime":1.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":46545,"utime":8.81,"rtime":15.18,"ut_ops":5283.2,"rt_ops":3066.5,"ut_usec":189.3,"rt_usec":326.1,"etime":0.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":53894,"utime":11.1,"rtime":19.94,"ut_ops":4855.3,"rt_ops":2702.5,"ut_usec":206.0,"rt_usec":370.0,"etime":1.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":51199,"utime":9.58,"rtime":16.94,"ut_ops":5344.4,"rt_ops":3021.9,"ut_usec":187.1,"rt_usec":330.9,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":53894,"utime":10.11,"rtime":17.35,"ut_ops":5330.8,"rt_ops":3106.5,"ut_usec":187.6,"rt_usec":321.9,"etime":1.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":46545,"utime":9.24,"rtime":15.87,"ut_ops":5037.3,"rt_ops":2933.1,"ut_usec":198.5,"rt_usec":340.9,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":46545,"utime":10.71,"rtime":18.5,"ut_ops":4345.9,"rt_ops":2516.6,"ut_usec":230.1,"rt_usec":397.4,"etime":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":39384,"utime":10.12,"rtime":17.06,"ut_ops":3891.7,"rt_ops":2308.7,"ut_usec":257.0,"rt_usec":433.1,"etime":1.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":34133,"utime":9.57,"rtime":15.04,"ut_ops":3566.7,"rt_ops":2269.1,"ut_usec":280.4,"rt_usec":440.7,"etime":1.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":25599,"utime":9.75,"rtime":15.45,"ut_ops":2625.5,"rt_ops":1657.4,"ut_usec":380.9,"rt_usec":603.4,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":17066,"utime":9.84,"rtime":15.26,"ut_ops":1734.3,"rt_ops":1118.4,"ut_usec":576.6,"rt_usec":894.1,"etime":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":9846,"utime":9.52,"rtime":14.1,"ut_ops":1034.2,"rt_ops":698.4,"ut_usec":966.9,"rt_usec":1431.9,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":5818,"utime":10.52,"rtime":18.97,"ut_ops":553.0,"rt_ops":306.6,"ut_usec":1808.2,"rt_usec":3261.3,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2666,"utime":10.33,"rtime":12.68,"ut_ops":258.1,"rt_ops":210.3,"ut_usec":3874.7,"rt_usec":4756.1,"etime":0.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1599,"utime":9.74,"rtime":12.35,"ut_ops":164.2,"rt_ops":129.4,"ut_usec":6091.3,"rt_usec":7725.0,"etime":0.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":799,"utime":10.8,"rtime":13.03,"ut_ops":74.0,"rt_ops":61.3,"ut_usec":13516.9,"rt_usec":16304.8,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":363,"utime":10.0,"rtime":11.71,"ut_ops":36.3,"rt_ops":31.0,"ut_usec":27548.2,"rt_usec":32260.9,"etime":0.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":166,"utime":10.07,"rtime":12.08,"ut_ops":16.5,"rt_ops":13.7,"ut_usec":60662.7,"rt_usec":72776.3,"etime":0.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":51199,"utime":8.75,"rtime":16.19,"ut_ops":5851.3,"rt_ops":3161.6,"ut_usec":170.9,"rt_usec":316.3,"etime":0.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":53894,"utime":9.8,"rtime":17.66,"ut_ops":5499.4,"rt_ops":3051.2,"ut_usec":181.8,"rt_usec":327.7,"etime":1.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":51199,"utime":10.58,"rtime":19.2,"ut_ops":4839.2,"rt_ops":2666.0,"ut_usec":206.6,"rt_usec":375.1,"etime":1.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":36571,"utime":8.86,"rtime":15.27,"ut_ops":4127.7,"rt_ops":2395.0,"ut_usec":242.3,"rt_usec":417.5,"etime":0.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":30117,"utime":9.67,"rtime":15.7,"ut_ops":3114.5,"rt_ops":1918.7,"ut_usec":321.1,"rt_usec":521.2,"etime":1.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":19692,"utime":9.24,"rtime":13.89,"ut_ops":2131.2,"rt_ops":1417.9,"ut_usec":469.2,"rt_usec":705.3,"etime":0.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":13473,"utime":10.06,"rtime":14.26,"ut_ops":1339.3,"rt_ops":944.6,"ut_usec":746.7,"rt_usec":1058.6,"etime":1.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":7529,"utime":9.71,"rtime":12.97,"ut_ops":775.4,"rt_ops":580.6,"ut_usec":1289.7,"rt_usec":1722.5,"etime":1.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":3764,"utime":9.21,"rtime":11.13,"ut_ops":408.7,"rt_ops":338.2,"ut_usec":2446.9,"rt_usec":2957.1,"etime":1.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":2285,"utime":10.11,"rtime":11.66,"ut_ops":226.0,"rt_ops":196.0,"ut_usec":4424.5,"rt_usec":5101.0,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1066,"utime":9.34,"rtime":10.56,"ut_ops":114.1,"rt_ops":101.0,"ut_usec":8761.7,"rt_usec":9902.5,"etime":0.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":615,"utime":10.53,"rtime":11.58,"ut_ops":58.4,"rt_ops":53.1,"ut_usec":17122.0,"rt_usec":18833.8,"etime":0.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":307,"utime":10.3,"rtime":11.11,"ut_ops":29.8,"rt_ops":27.6,"ut_usec":33550.5,"rt_usec":36197.5,"etime":1.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":53894,"utime":9.75,"rtime":17.83,"ut_ops":5527.6,"rt_ops":3022.0,"ut_usec":180.9,"rt_usec":330.9,"etime":1.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":53894,"utime":9.94,"rtime":17.96,"ut_ops":5421.9,"rt_ops":3000.5,"ut_usec":184.4,"rt_usec":333.3,"etime":1.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":53894,"utime":9.94,"rtime":18.3,"ut_ops":5421.9,"rt_ops":2944.2,"ut_usec":184.4,"rt_usec":339.6,"etime":1.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":51199,"utime":9.66,"rtime":17.64,"ut_ops":5300.1,"rt_ops":2902.1,"ut_usec":188.7,"rt_usec":344.6,"etime":0.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":51199,"utime":10.18,"rtime":17.45,"ut_ops":5029.4,"rt_ops":2934.4,"ut_usec":198.8,"rt_usec":340.8,"etime":1.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":46545,"utime":10.26,"rtime":18.15,"ut_ops":4536.5,"rt_ops":2565.0,"ut_usec":220.4,"rt_usec":389.9,"etime":0.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":36571,"utime":9.42,"rtime":15.88,"ut_ops":3882.3,"rt_ops":2302.5,"ut_usec":257.6,"rt_usec":434.3,"etime":1.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":30117,"utime":9.28,"rtime":15.11,"ut_ops":3245.4,"rt_ops":1993.6,"ut_usec":308.1,"rt_usec":501.6,"etime":1.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":23272,"utime":10.05,"rtime":15.12,"ut_ops":2315.6,"rt_ops":1539.4,"ut_usec":431.8,"rt_usec":649.6,"etime":0.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":15058,"utime":10.1,"rtime":14.42,"ut_ops":1490.9,"rt_ops":1044.5,"ut_usec":670.7,"rt_usec":957.4,"etime":1.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":8533,"utime":9.87,"rtime":13.36,"ut_ops":864.5,"rt_ops":638.6,"ut_usec":1156.7,"rt_usec":1566.0,"etime":0.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":4923,"utime":10.26,"rtime":13.26,"ut_ops":479.8,"rt_ops":371.2,"ut_usec":2084.1,"rt_usec":2694.2,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":2666,"utime":10.77,"rtime":12.88,"ut_ops":247.5,"rt_ops":207.0,"ut_usec":4039.8,"rt_usec":4831.3,"etime":0.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1230,"utime":10.48,"rtime":11.91,"ut_ops":117.4,"rt_ops":103.3,"ut_usec":8520.3,"rt_usec":9684.6,"etime":0.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":533,"utime":10.79,"rtime":12.32,"ut_ops":49.4,"rt_ops":43.2,"ut_usec":20243.9,"rt_usec":23121.9,"etime":0.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":235,"utime":9.46,"rtime":10.81,"ut_ops":24.8,"rt_ops":21.7,"ut_usec":40255.3,"rt_usec":46016.2,"etime":0.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120503-1327","tag":"base_c"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":32000,"utime":9.9,"rtime":15.08,"ut_ops":3232.3,"rt_ops":2122.3,"ut_usec":309.4,"rt_usec":471.2,"etime":1.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":31999,"utime":9.83,"rtime":14.67,"ut_ops":3255.2,"rt_ops":2180.6,"ut_usec":307.2,"rt_usec":458.6,"etime":1.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":34133,"utime":10.55,"rtime":15.89,"ut_ops":3235.4,"rt_ops":2148.2,"ut_usec":309.1,"rt_usec":465.5,"etime":0.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":31999,"utime":9.92,"rtime":14.91,"ut_ops":3225.7,"rt_ops":2145.6,"ut_usec":310.0,"rt_usec":466.1,"etime":1.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":31999,"utime":10.21,"rtime":15.3,"ut_ops":3134.1,"rt_ops":2091.1,"ut_usec":319.1,"rt_usec":478.2,"etime":1.3,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":32000,"utime":10.37,"rtime":15.51,"ut_ops":3085.8,"rt_ops":2062.9,"ut_usec":324.1,"rt_usec":484.8,"etime":1.14,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":31999,"utime":10.06,"rtime":14.77,"ut_ops":3180.8,"rt_ops":2166.6,"ut_usec":314.4,"rt_usec":461.6,"etime":1.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":30117,"utime":9.4,"rtime":13.97,"ut_ops":3203.9,"rt_ops":2156.1,"ut_usec":312.1,"rt_usec":463.8,"etime":1.25,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":30117,"utime":10.08,"rtime":15.01,"ut_ops":2987.8,"rt_ops":2006.9,"ut_usec":334.7,"rt_usec":498.3,"etime":1.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":28444,"utime":9.91,"rtime":14.59,"ut_ops":2870.2,"rt_ops":1949.8,"ut_usec":348.4,"rt_usec":512.9,"etime":1.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":26947,"utime":10.01,"rtime":15.3,"ut_ops":2692.0,"rt_ops":1761.2,"ut_usec":371.5,"rt_usec":567.8,"etime":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":23272,"utime":9.29,"rtime":14.99,"ut_ops":2505.1,"rt_ops":1552.4,"ut_usec":399.2,"rt_usec":644.2,"etime":0.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":23272,"utime":10.49,"rtime":16.1,"ut_ops":2218.5,"rt_ops":1445.5,"ut_usec":450.8,"rt_usec":691.8,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":18285,"utime":10.71,"rtime":16.08,"ut_ops":1707.3,"rt_ops":1136.8,"ut_usec":585.7,"rt_usec":879.6,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":10666,"utime":9.57,"rtime":13.97,"ut_ops":1114.5,"rt_ops":763.6,"ut_usec":897.2,"rt_usec":1309.6,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":7111,"utime":9.83,"rtime":13.9,"ut_ops":723.4,"rt_ops":511.6,"ut_usec":1382.4,"rt_usec":1954.6,"etime":1.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":34133,"utime":10.33,"rtime":14.96,"ut_ops":3304.3,"rt_ops":2281.8,"ut_usec":302.6,"rt_usec":438.2,"etime":0.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":34133,"utime":10.3,"rtime":14.83,"ut_ops":3313.9,"rt_ops":2302.1,"ut_usec":301.8,"rt_usec":434.4,"etime":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":32000,"utime":9.93,"rtime":14.58,"ut_ops":3222.6,"rt_ops":2194.3,"ut_usec":310.3,"rt_usec":455.7,"etime":0.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":34133,"utime":10.71,"rtime":16.11,"ut_ops":3187.0,"rt_ops":2118.4,"ut_usec":313.8,"rt_usec":472.1,"etime":0.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":32000,"utime":9.91,"rtime":14.56,"ut_ops":3229.1,"rt_ops":2197.1,"ut_usec":309.7,"rt_usec":455.1,"etime":1.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":32000,"utime":10.05,"rtime":15.44,"ut_ops":3184.1,"rt_ops":2072.0,"ut_usec":314.1,"rt_usec":482.6,"etime":1.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":32000,"utime":10.06,"rtime":15.33,"ut_ops":3180.9,"rt_ops":2088.0,"ut_usec":314.4,"rt_usec":478.9,"etime":1.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":32000,"utime":9.95,"rtime":15.07,"ut_ops":3216.1,"rt_ops":2123.2,"ut_usec":310.9,"rt_usec":471.0,"etime":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":30117,"utime":10.28,"rtime":15.77,"ut_ops":2929.7,"rt_ops":1909.8,"ut_usec":341.3,"rt_usec":523.6,"etime":1.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":31999,"utime":10.99,"rtime":16.78,"ut_ops":2911.6,"rt_ops":1907.5,"ut_usec":343.4,"rt_usec":524.3,"etime":1.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":26947,"utime":9.3,"rtime":13.97,"ut_ops":2897.5,"rt_ops":1929.5,"ut_usec":345.1,"rt_usec":518.3,"etime":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":25599,"utime":9.8,"rtime":15.51,"ut_ops":2612.1,"rt_ops":1650.3,"ut_usec":382.8,"rt_usec":605.9,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":21333,"utime":10.06,"rtime":15.86,"ut_ops":2120.6,"rt_ops":1344.8,"ut_usec":471.6,"rt_usec":743.6,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":17066,"utime":10.07,"rtime":14.82,"ut_ops":1694.7,"rt_ops":1151.5,"ut_usec":590.1,"rt_usec":868.4,"etime":1.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":10666,"utime":9.56,"rtime":13.99,"ut_ops":1115.7,"rt_ops":762.5,"ut_usec":896.3,"rt_usec":1311.5,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":7111,"utime":10.01,"rtime":14.22,"ut_ops":710.4,"rt_ops":500.0,"ut_usec":1407.7,"rt_usec":2000.2,"etime":1.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":30117,"utime":10.09,"rtime":14.58,"ut_ops":2984.8,"rt_ops":2065.5,"ut_usec":335.0,"rt_usec":484.1,"etime":1.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":28444,"utime":9.91,"rtime":14.34,"ut_ops":2870.2,"rt_ops":1983.2,"ut_usec":348.4,"rt_usec":504.2,"etime":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":25599,"utime":9.69,"rtime":13.37,"ut_ops":2641.8,"rt_ops":1914.2,"ut_usec":378.5,"rt_usec":522.4,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":23272,"utime":11.13,"rtime":16.48,"ut_ops":2090.9,"rt_ops":1412.5,"ut_usec":478.3,"rt_usec":708.0,"etime":0.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":16000,"utime":9.4,"rtime":13.36,"ut_ops":1702.1,"rt_ops":1197.3,"ut_usec":587.5,"rt_usec":835.2,"etime":0.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":10666,"utime":9.38,"rtime":12.94,"ut_ops":1137.1,"rt_ops":824.5,"ut_usec":879.4,"rt_usec":1212.8,"etime":0.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":6736,"utime":9.18,"rtime":12.24,"ut_ops":733.8,"rt_ops":550.2,"ut_usec":1362.8,"rt_usec":1817.4,"etime":1.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3999,"utime":9.68,"rtime":11.77,"ut_ops":413.1,"rt_ops":339.8,"ut_usec":2420.6,"rt_usec":2943.3,"etime":0.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":2285,"utime":10.04,"rtime":11.53,"ut_ops":227.6,"rt_ops":198.2,"ut_usec":4393.9,"rt_usec":5044.5,"etime":0.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1142,"utime":9.79,"rtime":11.05,"ut_ops":116.6,"rt_ops":103.3,"ut_usec":8572.7,"rt_usec":9677.2,"etime":0.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":615,"utime":10.11,"rtime":11.12,"ut_ops":60.8,"rt_ops":55.3,"ut_usec":16439.0,"rt_usec":18080.9,"etime":0.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":307,"utime":10.13,"rtime":11.01,"ut_ops":30.3,"rt_ops":27.9,"ut_usec":32996.7,"rt_usec":35874.4,"etime":0.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":142,"utime":9.44,"rtime":10.09,"ut_ops":15.0,"rt_ops":14.1,"ut_usec":66478.9,"rt_usec":71073.1,"etime":0.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":71,"utime":9.59,"rtime":10.25,"ut_ops":7.4,"rt_ops":6.9,"ut_usec":135070.4,"rt_usec":144430.5,"etime":0.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":35,"utime":9.72,"rtime":10.41,"ut_ops":3.6,"rt_ops":3.4,"ut_usec":277714.3,"rt_usec":297449.1,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":28444,"utime":9.85,"rtime":14.64,"ut_ops":2887.7,"rt_ops":1943.3,"ut_usec":346.3,"rt_usec":514.6,"etime":1.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":25599,"utime":9.24,"rtime":13.55,"ut_ops":2770.5,"rt_ops":1889.8,"ut_usec":361.0,"rt_usec":529.2,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":25599,"utime":10.27,"rtime":15.01,"ut_ops":2492.6,"rt_ops":1705.8,"ut_usec":401.2,"rt_usec":586.3,"etime":0.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":23272,"utime":10.56,"rtime":14.49,"ut_ops":2203.8,"rt_ops":1606.0,"ut_usec":453.8,"rt_usec":622.7,"etime":0.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":16000,"utime":9.36,"rtime":12.54,"ut_ops":1709.4,"rt_ops":1275.6,"ut_usec":585.0,"rt_usec":783.9,"etime":1.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":11636,"utime":10.1,"rtime":13.59,"ut_ops":1152.1,"rt_ops":856.0,"ut_usec":868.0,"rt_usec":1168.3,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":7529,"utime":9.99,"rtime":13.44,"ut_ops":753.7,"rt_ops":560.2,"ut_usec":1326.9,"rt_usec":1785.1,"etime":0.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":4571,"utime":10.47,"rtime":12.93,"ut_ops":436.6,"rt_ops":353.5,"ut_usec":2290.5,"rt_usec":2828.9,"etime":0.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2285,"utime":9.77,"rtime":11.53,"ut_ops":233.9,"rt_ops":198.2,"ut_usec":4275.7,"rt_usec":5045.4,"etime":0.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1142,"utime":9.32,"rtime":10.37,"ut_ops":122.5,"rt_ops":110.2,"ut_usec":8161.1,"rt_usec":9078.3,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":615,"utime":9.85,"rtime":10.7,"ut_ops":62.4,"rt_ops":57.5,"ut_usec":16016.3,"rt_usec":17390.7,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":307,"utime":10.57,"rtime":11.55,"ut_ops":29.0,"rt_ops":26.6,"ut_usec":34430.0,"rt_usec":37611.1,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":142,"utime":9.59,"rtime":10.26,"ut_ops":14.8,"rt_ops":13.8,"ut_usec":67535.2,"rt_usec":72288.0,"etime":0.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":71,"utime":10.45,"rtime":11.08,"ut_ops":6.8,"rt_ops":6.4,"ut_usec":147183.1,"rt_usec":156028.9,"etime":0.71,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":40,"utime":9.73,"rtime":10.38,"ut_ops":4.1,"rt_ops":3.9,"ut_usec":243250.0,"rt_usec":259379.4,"etime":0.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":18,"utime":9.79,"rtime":10.48,"ut_ops":1.8,"rt_ops":1.7,"ut_usec":543888.9,"rt_usec":582337.4,"etime":1.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":9,"utime":9.05,"rtime":9.69,"ut_ops":1.0,"rt_ops":0.9,"ut_usec":1005555.6,"rt_usec":1076346.7,"etime":1.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":4,"utime":8.16,"rtime":8.81,"ut_ops":0.5,"rt_ops":0.5,"ut_usec":2040000.0,"rt_usec":2202680.2,"etime":2.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":36571,"utime":10.46,"rtime":16.11,"ut_ops":3496.3,"rt_ops":2270.7,"ut_usec":286.0,"rt_usec":440.4,"etime":1.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":30117,"utime":10.04,"rtime":14.76,"ut_ops":2999.7,"rt_ops":2040.9,"ut_usec":333.4,"rt_usec":490.0,"etime":1.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":23272,"utime":9.77,"rtime":13.81,"ut_ops":2382.0,"rt_ops":1685.7,"ut_usec":419.8,"rt_usec":593.2,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":17066,"utime":10.14,"rtime":13.7,"ut_ops":1683.0,"rt_ops":1245.8,"ut_usec":594.2,"rt_usec":802.7,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":10666,"utime":10.11,"rtime":14.03,"ut_ops":1055.0,"rt_ops":760.1,"ut_usec":947.9,"rt_usec":1315.7,"etime":0.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":5818,"utime":9.48,"rtime":12.51,"ut_ops":613.7,"rt_ops":465.0,"ut_usec":1629.4,"rt_usec":2150.7,"etime":1.22,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":3199,"utime":9.7,"rtime":11.79,"ut_ops":329.8,"rt_ops":271.3,"ut_usec":3032.2,"rt_usec":3685.4,"etime":0.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1684,"utime":10.09,"rtime":11.5,"ut_ops":166.9,"rt_ops":146.4,"ut_usec":5991.7,"rt_usec":6830.0,"etime":0.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":842,"utime":10.0,"rtime":11.05,"ut_ops":84.2,"rt_ops":76.2,"ut_usec":11876.5,"rt_usec":13122.3,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":421,"utime":10.02,"rtime":10.95,"ut_ops":42.0,"rt_ops":38.4,"ut_usec":23800.5,"rt_usec":26017.7,"etime":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":199,"utime":9.74,"rtime":10.45,"ut_ops":20.4,"rt_ops":19.0,"ut_usec":48944.7,"rt_usec":52527.6,"etime":0.71,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":99,"utime":9.91,"rtime":10.71,"ut_ops":10.0,"rt_ops":9.2,"ut_usec":100101.0,"rt_usec":108179.8,"etime":0.64,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":49,"utime":9.87,"rtime":10.54,"ut_ops":5.0,"rt_ops":4.6,"ut_usec":201428.6,"rt_usec":215150.9,"etime":0.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":34133,"utime":9.99,"rtime":15.58,"ut_ops":3416.7,"rt_ops":2190.8,"ut_usec":292.7,"rt_usec":456.4,"etime":0.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":30117,"utime":10.13,"rtime":15.45,"ut_ops":2973.1,"rt_ops":1949.4,"ut_usec":336.4,"rt_usec":513.0,"etime":1.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":23272,"utime":9.43,"rtime":13.62,"ut_ops":2467.9,"rt_ops":1708.3,"ut_usec":405.2,"rt_usec":585.4,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":18285,"utime":10.46,"rtime":14.14,"ut_ops":1748.1,"rt_ops":1293.0,"ut_usec":572.1,"rt_usec":773.4,"etime":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":10666,"utime":9.64,"rtime":13.3,"ut_ops":1106.4,"rt_ops":802.0,"ut_usec":903.8,"rt_usec":1246.9,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":6399,"utime":9.99,"rtime":12.73,"ut_ops":640.5,"rt_ops":502.5,"ut_usec":1561.2,"rt_usec":1990.0,"etime":0.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":3368,"utime":9.65,"rtime":11.82,"ut_ops":349.0,"rt_ops":284.9,"ut_usec":2865.2,"rt_usec":3510.2,"etime":1.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1777,"utime":9.95,"rtime":11.42,"ut_ops":178.6,"rt_ops":155.6,"ut_usec":5599.3,"rt_usec":6425.6,"etime":0.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":941,"utime":10.35,"rtime":11.33,"ut_ops":90.9,"rt_ops":83.0,"ut_usec":10998.9,"rt_usec":12045.5,"etime":1.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":399,"utime":8.87,"rtime":9.68,"ut_ops":45.0,"rt_ops":41.2,"ut_usec":22230.6,"rt_usec":24248.7,"etime":0.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":199,"utime":9.03,"rtime":9.82,"ut_ops":22.0,"rt_ops":20.3,"ut_usec":45376.9,"rt_usec":49332.3,"etime":0.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":111,"utime":10.19,"rtime":10.91,"ut_ops":10.9,"rt_ops":10.2,"ut_usec":91801.8,"rt_usec":98325.9,"etime":0.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":52,"utime":9.83,"rtime":10.51,"ut_ops":5.3,"rt_ops":4.9,"ut_usec":189038.5,"rt_usec":202058.7,"etime":0.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":25,"utime":9.87,"rtime":10.49,"ut_ops":2.5,"rt_ops":2.4,"ut_usec":394800.0,"rt_usec":419514.0,"etime":0.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":11,"utime":9.43,"rtime":10.09,"ut_ops":1.2,"rt_ops":1.1,"ut_usec":857272.7,"rt_usec":916834.3,"etime":1.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":5,"utime":8.41,"rtime":9.06,"ut_ops":0.6,"rt_ops":0.6,"ut_usec":1682000.0,"rt_usec":1811763.5,"etime":2.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120503-1357","tag":"base_ruby"}
];

498
bench/exp_series.rb Normal file
View File

@ -0,0 +1,498 @@
#!/usr/bin/env ruby
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
require 'rubygems'
require 'getoptlong'
require 'json'
require 'benchmark'
require 'test-unit'
def set_mode(mode)
case mode
when 'c'
ENV.delete('TEST_MODE')
ENV['C_EXT'] = 'TRUE'
when 'ruby'
ENV['TEST_MODE'] = 'TRUE'
ENV.delete('C_EXT')
else
raise 'mode must be c or ruby'
end
return mode
end
$description = 'Exploratory/Experimental/Exponential tests for Ruby-driver performance tuning'
$calibration_runtime = 0.5
$target_runtime = 15.0
$db_name = 'benchmark'
$collection_name = 'exp_series'
$mode = set_mode('c')
$hostname = `uname -n`[/([^.]*)/,1]
$osname = `uname -s`.strip
$tag = `git log -1 --format=oneline`.split[0]
$date = Time.now.strftime('%Y%m%d-%H%M')
$file_name_opt = nil
options_with_help = [
[ '--help', '-h', GetoptLong::NO_ARGUMENT, '', 'show help' ],
[ '--file', '-f', GetoptLong::OPTIONAL_ARGUMENT, ' file', 'output file name' ],
[ '--mode', '-m', GetoptLong::OPTIONAL_ARGUMENT, ' mode', 'set mode to "c" or "ruby" (c)' ],
[ '--tag', '-t', GetoptLong::OPTIONAL_ARGUMENT, ' tag', 'set tag for run, default is git commit key' ]
]
options = options_with_help.collect{|option|option[0...3]}
GetoptLong.new(*options).each do |opt, arg|
case opt
when '--help'
puts "#{$0} -- #{$description}\n"
puts "usage: #{$0} [performance-options] [-- test-unit-options]"
puts "example: #{$0} --mode c --tag with-c-ext -- --verbose verbose --name test_insert"
puts "performance-options:"
options_with_help.each{|option| puts "#{option[0]}#{option[3]}, #{option[1]}#{option[3]}\n\t#{option[4]}"}
exit 0
when '--file'
$file_name_opt = arg
when '--mode'
$mode = set_mode(arg)
when '--tag'
$tag = arg
end
end
$file_name = $file_name_opt ? $file_name_opt : "exp_series_#{$date}_#{$tag}_#{$mode}.js"
require 'mongo' # must be after option processing
class Hash
def store_embedded(key, value)
case key
when /([^.]*)\.(.*)/
store($1, Hash.new) unless fetch($1, nil)
self[$1].store_embedded($2, value)
else
store(key, value)
end
end
end
def sys_info
h = Hash.new
if FileTest.executable?('/usr/sbin/sysctl')
text = `/usr/sbin/sysctl -a kern.ostype kern.version kern.hostname hw.machine hw.model hw.cputype hw.cpusubtype hw.busfrequency hw.cpufrequency hw.memsize hw.physicalcpu hw.logicalcpu hw.packages`
values = text.split(/\n/).collect{|line| /([^:]*) *[:=] *(.*)/.match(line)[1..2]}
h = Hash.new
values.each{|key, value| h.store_embedded(key, value) }
end
return h
end
class TestExpPerformance < Test::Unit::TestCase
setup :setup_test_set
teardown :teardown_test_set
def array_nest(base, level, obj)
return obj if level == 0
return Array.new(base, array_nest(base, level - 1, obj))
end
def test__array_nest
assert_equal(1, array_nest(2,0,1))
assert_equal([1, 1], array_nest(2,1,1))
assert_equal([[1, 1], [1, 1]], array_nest(2,2,1))
assert_equal([[[1, 1], [1, 1]], [[1, 1], [1, 1]]], array_nest(2,3,1))
assert_equal(1, array_nest(4,0,1))
assert_equal([1, 1, 1, 1], array_nest(4,1,1))
assert_equal([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], array_nest(4,2,1))
assert_equal(1, array_nest(8,0,1))
assert_equal([1, 1, 1, 1, 1, 1, 1, 1], array_nest(8,1,1))
end
def hash_nest(base, level, obj)
return obj if level == 0
h = Hash.new
(0...base).each{|i| h[i.to_s] = hash_nest(base, level - 1, obj)}
return h
end
def test__hash_nest
assert_equal(1, hash_nest(2, 0, 1))
assert_equal({"0"=>1, "1"=>1}, hash_nest(2, 1, 1))
assert_equal({"0"=>{"0"=>1, "1"=>1}, "1"=>{"0"=>1, "1"=>1}}, hash_nest(2, 2, 1))
assert_equal({"0"=>{"0"=>{"0"=>1, "1"=>1}, "1"=>{"0"=>1, "1"=>1}},
"1"=>{"0"=>{"0"=>1, "1"=>1}, "1"=>{"0"=>1, "1"=>1}}}, hash_nest(2, 3, 1))
assert_equal(1, hash_nest(4,0,1))
assert_equal({"0"=>1, "1"=>1, "2"=>1, "3"=>1}, hash_nest(4,1,1))
assert_equal({"0"=>{"0"=>1, "1"=>1, "2"=>1, "3"=>1},
"1"=>{"0"=>1, "1"=>1, "2"=>1, "3"=>1},
"2"=>{"0"=>1, "1"=>1, "2"=>1, "3"=>1},
"3"=>{"0"=>1, "1"=>1, "2"=>1, "3"=>1}}, hash_nest(4,2,1))
assert_equal(1, hash_nest(8,0,1))
assert_equal({"0"=>1, "1"=>1, "2"=>1, "3"=>1, "4"=>1, "5"=>1, "6"=>1, "7"=>1}, hash_nest(8,1,1))
end
def multi_doc(multi_power, doc)
return doc if multi_power == -1
return (2 ** multi_power).times.collect{doc.dup}
end
def test_multi_doc
doc = {'a' => 1}
assert_equal({"a"=>1}, multi_doc(-1, doc))
assert_equal([{"a"=>1}], multi_doc(0, doc))
assert_equal([{"a"=>1}, {"a"=>1}], multi_doc(1, doc))
assert_equal([{"a"=>1}, {"a"=>1}, {"a"=>1}, {"a"=>1}], multi_doc(2, doc))
assert_equal(8, multi_doc(3, doc).size)
assert_equal(16, multi_doc(4, doc).size)
assert_equal(32, multi_doc(5, doc).size)
mdoc = multi_doc(2, doc)
mdoc[0]['b'] = 2
assert_equal([{"a"=>1, "b"=>2}, {"a"=>1}, {"a"=>1}, {"a"=>1}], mdoc, 'non-dup doc will fail for insert many safe')
end
# Performance Tuning Engineering
## Completed
### How to measure and compare pure Ruby versus C extension performance
## Current Work Items
### Profiling of C extension
## Overall Strategy
### Prioritize/Review Ruby 1.9.3, JRuby 1.6.7, Ruby 1.8.7
### Run spectrum of exploratory performance tests
### Graph results with flot in HTML wrapper - http://code.google.com/p/flot/
### Select test for profiling
### Find where time is being spent
### Construct specific performance test
### Iteratively tune specific performance test
### Iterate selection of test for profiling
## Notes
### Start with Create/insert, writing comes first
### Then Read/find, reading comes next. both findOne and find-cursor
### Update is primarily server load with minimal driver load for conditions
### Delete/remove is primarily server load with minimal driver load for conditions
## Benefits
### Performance Improvements
### Knowledge of Ruby driver and techniques
### Perhaps architecture and design improvements
### Lessons transferable to other drivers
## HW Info
### Linux - /proc/cpuinfo
### Mac OS X - sysctl -a hw
def setup_test_set
@conn = Mongo::Connection.new
@conn.drop_database($db_name)
@db = @conn.db($db_name)
@coll = @db.collection($collection_name)
@coll.remove
@results = []
puts
puts JSON.pretty_generate({'mode' => $mode , 'hostname' => $hostname, 'osname' => $osname, 'date' => $date, 'tag' => $tag})
puts JSON.pretty_generate(sys_info)
end
def teardown_test_set
# consider inserting the results into a database collection
# Test::Unit::TestCase pollutes STDOUT, so write to a file
File.open($file_name, 'a'){|f|
f.puts(@results.to_json.gsub(/\[/, "").gsub(/}[\],]/, "},\n")) if @results != []
}
@conn.drop_database($db_name)
end
def estimate_iterations(db, coll, doc, setup, teardown)
start_time = Time.now
iterations = 1
utime = 0.0
while utime <= $calibration_runtime do
iterations *= 2
setup.call(db, coll, doc, iterations)
btms = Benchmark.measure do
(0...iterations).each do
yield
end
end
utime = btms.utime
teardown.call(db, coll)
end
etime = (Time.now - start_time)
return [(iterations.to_f * $target_runtime / utime).to_i, etime]
end
def measure_iterations(db, coll, doc, setup, teardown, iterations)
setup.call(db, coll, doc, iterations)
btms = Benchmark.measure { iterations.times { yield } }
teardown.call(db, coll)
return [btms.utime, btms.real]
end
def valuate(db, coll, doc, setup, teardown)
@conn.drop_database($db_name) # hack to reduce paging
iterations, etime = estimate_iterations(db, coll, doc, setup, teardown) { yield }
@conn.drop_database($db_name) # hack to reduce paging
utime, rtime = measure_iterations(db, coll, doc, setup, teardown, iterations) { yield }
return [iterations, utime, rtime, etime]
end
def power_test(args)
base, power_enum, multi_enum, generator, setup, operation, teardown = args
generator, setup, operation, teardown = method(generator), method(setup), method(operation), method(teardown)
return power_enum.collect do |power|
multi_enum.collect do |multi_power|
status = 'OK'
size, doc = generator.call(base, power)
doc = multi_doc(multi_power, doc)
multi_size = (doc.class == Array) ? doc.size : 1;
iterations, utime, rtime, etime = begin
valuate(@db, @coll, doc, setup, teardown) { operation.call(@coll, doc) }
rescue Mongo::InvalidOperation => e
status = "#{e.class}: #{e.message}"
[0, 1.0, 1.0, 1.0]
end
multi_iterations = multi_size.to_f * iterations.to_f
user_ops = (multi_iterations / utime.to_f).round(1)
real_ops = (multi_iterations / rtime.to_f).round(1)
result = {
'base' => base,
'power' => power,
'size' => size,
'exp2' => Math.log2(size).to_i,
'multi_power' => multi_power,
'multi_size' => multi_size,
'generator' => generator.name.to_s,
'operation' => operation.name.to_s,
'iterations' => iterations,
'user_time' => utime.round(2),
'real_time' => rtime.round(2),
'user_ops' => user_ops.nan? ? 0 : user_ops,
'real_ops' => real_ops.nan? ? 0 : real_ops,
'user_usec' => (1000000.0 * utime.to_f / [multi_iterations, 1].max).round(1),
'real_usec' => (1000000.0 * rtime.to_f / [multi_iterations, 1].max).round(1),
'est_time' => etime.round(2),
'mode' => $mode,
'hostname' => $hostname,
'osname' => $osname,
'date' => $date,
'tag' => $tag,
'status' => status,
# 'nbench-int' => nbench.int, # thinking
}
STDERR.puts result.to_json #result.inspect
STDERR.flush
result
end
end.flatten
end
def value_string_size(base, power)
n = base ** power
return [n, {n.to_s => ('*' * n)}]
end
def key_string_size(base, power)
n = base ** power
return [n, {('*' * n) => n}]
end
def hash_size_fixnum(base, power)
n = base ** power
h = Hash.new
(0...n).each { |i| h[i.to_s] = i }
return [n, {n.to_s => h}] # embedded like array_size_fixnum
end
def array_size_fixnum(base, power)
n = base ** power
return [n, {n.to_s => Array.new(n, n)}]
end
def array_nest_fixnum(base, power)
n = base ** power
return [n, {n.to_s => array_nest(base, power, n)}]
end
def hash_nest_fixnum(base, power)
n = base ** power
return [n, {n.to_s => hash_nest(base, power, n)}]
end
def null_setup(db, coll, doc, iterations)
end
def default_teardown(db, coll)
coll.remove
raise 'coll not removed' if coll.size > 0
end
def clear_ids(doc) # delete :_id to really insert, required for safe
if doc.class == Array
doc.each{|d|d.delete(:_id)}
else
doc.delete(:_id)
end
end
def insert(coll, doc)
clear_ids(doc)
coll.insert(doc) # note that insert stores :_id in doc and subsequent inserts are updates
end
def insert_safe(coll, doc)
clear_ids(doc)
coll.insert(doc, :safe => true) # note that insert stores :_id in doc and subsequent inserts with :_id are updates
end
def find_one_setup(db, coll, doc, iterations)
insert(coll, doc)
end
def find_one(coll, doc)
h = coll.find_one
raise "find_one failed" unless h
end
def find_many_setup(db, coll, doc, iterations)
(0...(iterations - coll.size)).each{insert(coll, doc)} #TODO - insert many
@cursor = coll.find
@queries = 1
end
def find_many(coll, doc)
h = @cursor.next
unless h
@cursor = coll.find
@queries += 1
@cursor.next
end
end
def find_many_teardown(db, coll)
puts "queries: #{@queries}" if @queries > 1
default_teardown(db, coll)
end
def test_null
# just setup/teardown for options parsing and sys_info
end
def test_array_fast
[
[2, (0..14), (-1..-1), :array_size_fixnum, :null_setup, :insert, :default_teardown],
[2, (0..17), (-1..-1), :hash_size_fixnum, :null_setup, :insert, :default_teardown],
[2, (0..12), (-1..-1), :array_nest_fixnum, :null_setup, :insert, :default_teardown],
[2, (0..15), (-1..-1), :hash_nest_fixnum, :null_setup, :insert, :default_teardown],
].each{|args| @results += power_test(args)}
end
def test_insert_one
[
[2, (0..15), (-1..-1), :value_string_size, :null_setup, :insert, :default_teardown],
[2, (0..15), (-1..-1), :key_string_size, :null_setup, :insert, :default_teardown],
[2, (0..14), (-1..-1), :array_size_fixnum, :null_setup, :insert, :default_teardown],
[2, (0..17), (-1..-1), :hash_size_fixnum, :null_setup, :insert, :default_teardown],
[2, (0..12), (-1..-1), :array_nest_fixnum, :null_setup, :insert, :default_teardown],
[2, (0..15), (-1..-1), :hash_nest_fixnum, :null_setup, :insert, :default_teardown],
].each{|args| @results += power_test(args)}
end
def test_insert_one_safe
[
[2, (0..15), (-1..-1), :value_string_size, :null_setup, :insert_safe, :default_teardown],
[2, (0..15), (-1..-1), :key_string_size, :null_setup, :insert_safe, :default_teardown],
[2, (0..14), (-1..-1), :array_size_fixnum, :null_setup, :insert_safe, :default_teardown],
[2, (0..17), (-1..-1), :hash_size_fixnum, :null_setup, :insert_safe, :default_teardown],
[2, (0..12), (-1..-1), :array_nest_fixnum, :null_setup, :insert_safe, :default_teardown],
[2, (0..15), (-1..-1), :hash_nest_fixnum, :null_setup, :insert_safe, :default_teardown],
].each{|args| @results += power_test(args)}
end
def test_insert_many
sizes = [0, 2, 4, 6, 8, 10, 12]
multi = [0, 2, 4, 6, 8, 10, 12]
[
[2, sizes, multi, :value_string_size, :null_setup, :insert, :default_teardown],
[2, sizes, multi, :key_string_size, :null_setup, :insert, :default_teardown],
[2, sizes, multi, :hash_size_fixnum, :null_setup, :insert, :default_teardown],
[2, sizes, multi, :array_size_fixnum, :null_setup, :insert, :default_teardown],
[2, sizes, multi, :array_nest_fixnum, :null_setup, :insert, :default_teardown],
[2, sizes, multi, :hash_nest_fixnum, :null_setup, :insert, :default_teardown],
].each{|args| @results += power_test(args)}
end
def test_insert_many_safe
sizes = [0, 2, 4, 6, 8, 10, 12]
multi = [0, 2, 4, 6, 8, 10, 12]
[
[2, sizes, multi, :value_string_size, :null_setup, :insert_safe, :default_teardown],
[2, sizes, multi, :key_string_size, :null_setup, :insert_safe, :default_teardown],
[2, sizes, multi, :hash_size_fixnum, :null_setup, :insert_safe, :default_teardown],
[2, sizes, multi, :array_size_fixnum, :null_setup, :insert_safe, :default_teardown],
[2, sizes, multi, :array_nest_fixnum, :null_setup, :insert_safe, :default_teardown],
[2, sizes, multi, :hash_nest_fixnum, :null_setup, :insert_safe, :default_teardown],
].each{|args| @results += power_test(args)}
end
def test_find_one
[
[2, (0..15), (-1..-1), :value_string_size, :find_one_setup, :find_one, :default_teardown],
[2, (0..15), (-1..-1), :key_string_size, :find_one_setup, :find_one, :default_teardown],
[2, (0..14), (-1..-1), :array_size_fixnum, :find_one_setup, :find_one, :default_teardown],
[2, (0..17), (-1..-1), :hash_size_fixnum, :find_one_setup, :find_one, :default_teardown],
[2, (0..12), (-1..-1), :array_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
[2, (0..15), (-1..-1), :hash_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
].each{|args| @results += power_test(args)}
end
def test_find_many
[
[2, (0..15), (-1..-1), :value_string_size, :find_many_setup, :find_many, :find_many_teardown],
[2, (0..15), (-1..-1), :key_string_size, :find_many_setup, :find_many, :find_many_teardown],
[2, (0..14), (-1..-1), :array_size_fixnum, :find_many_setup, :find_many, :find_many_teardown],
[2, (0..17), (-1..-1), :hash_size_fixnum, :find_many_setup, :find_many, :find_many_teardown],
[2, (0..12), (-1..-1), :array_nest_fixnum, :find_many_setup, :find_many, :find_many_teardown],
[2, (0..15), (-1..-1), :hash_nest_fixnum, :find_many_setup, :find_many, :find_many_teardown],
].each{|args| @results += power_test(args)}
end
def test_insert_one_nest_full
[
[4, (0..6), (-1..-1), :array_nest_fixnum, :null_setup, :insert, :default_teardown],
[8, (0..4), (-1..-1), :array_nest_fixnum, :null_setup, :insert, :default_teardown],
[16, (0..3), (-1..-1), :array_nest_fixnum, :null_setup, :insert, :default_teardown],
[32, (0..2), (-1..-1), :array_nest_fixnum, :null_setup, :insert, :default_teardown],
[4, (0..8), (-1..-1), :hash_nest_fixnum, :null_setup, :insert, :default_teardown],
[8, (0..4), (-1..-1), :hash_nest_fixnum, :null_setup, :insert, :default_teardown],
[16, (0..4), (-1..-1), :hash_nest_fixnum, :null_setup, :insert, :default_teardown],
[32, (0..3), (-1..-1), :hash_nest_fixnum, :null_setup, :insert, :default_teardown],
].each{|args| @results += power_test(args)}
end
def test_find_one_nest_full
[
[4, (0..6), (-1..-1), :array_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
[8, (0..4), (-1..-1), :array_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
[16, (0..3), (-1..-1), :array_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
[32, (0..2), (-1..-1), :array_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
[4, (0..8), (-1..-1), :hash_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
[8, (0..4), (-1..-1), :hash_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
[16, (0..4), (-1..-1), :hash_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
[32, (0..3), (-1..-1), :hash_nest_fixnum, :find_one_setup, :find_one, :default_teardown],
].each{|args| @results += power_test(args)}
end
def xtest_update
[
# pending
].each{|args| @results += power_test(args)}
end
def xtest_remove
[
# pending
].each{|args| @results += power_test(args)}
end
# synthesized mix, real-world data pending
end

View File

@ -0,0 +1,190 @@
exp_series_suite_find_c = [
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":94523,"user_time":16.15,"real_time":27.14,"user_ops":5852.8,"real_ops":3482.6,"user_usec":170.9,"real_usec":287.1,"est_time":2.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":89043,"user_time":15.93,"real_time":27.51,"user_ops":5589.6,"real_ops":3236.6,"user_usec":178.9,"real_usec":309.0,"est_time":2.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":89043,"user_time":15.03,"real_time":25.27,"user_ops":5924.4,"real_ops":3523.8,"user_usec":168.8,"real_usec":283.8,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":87771,"user_time":14.45,"real_time":23.69,"user_ops":6074.1,"real_ops":3704.5,"user_usec":164.6,"real_usec":269.9,"est_time":2.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":83027,"user_time":14.53,"real_time":24.83,"user_ops":5714.2,"real_ops":3343.8,"user_usec":175.0,"real_usec":299.1,"est_time":3.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":89043,"user_time":14.52,"real_time":23.8,"user_ops":6132.4,"real_ops":3741.2,"user_usec":163.1,"real_usec":267.3,"est_time":2.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":84164,"user_time":13.67,"real_time":22.15,"user_ops":6156.8,"real_ops":3800.3,"user_usec":162.4,"real_usec":263.1,"est_time":3.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":91701,"user_time":15.99,"real_time":27.21,"user_ops":5734.9,"real_ops":3370.0,"user_usec":174.4,"real_usec":296.7,"est_time":2.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":90352,"user_time":15.19,"real_time":25.6,"user_ops":5948.1,"real_ops":3530.0,"user_usec":168.1,"real_usec":283.3,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":83027,"user_time":13.63,"real_time":22.04,"user_ops":6091.5,"real_ops":3766.3,"user_usec":164.2,"real_usec":265.5,"est_time":3.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":87771,"user_time":15.7,"real_time":27.0,"user_ops":5590.5,"real_ops":3250.7,"user_usec":178.9,"real_usec":307.6,"est_time":2.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":79792,"user_time":14.59,"real_time":25.63,"user_ops":5469.0,"real_ops":3113.0,"user_usec":182.9,"real_usec":321.2,"est_time":3.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":85333,"user_time":15.82,"real_time":27.56,"user_ops":5394.0,"real_ops":3096.0,"user_usec":185.4,"real_usec":323.0,"est_time":3.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":83027,"user_time":15.31,"real_time":26.18,"user_ops":5423.1,"real_ops":3171.7,"user_usec":184.4,"real_usec":315.3,"est_time":3.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":83027,"user_time":15.44,"real_time":26.74,"user_ops":5377.4,"real_ops":3104.6,"user_usec":186.0,"real_usec":322.1,"est_time":3.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":69818,"user_time":15.28,"real_time":27.12,"user_ops":4569.2,"real_ops":2574.5,"user_usec":218.9,"real_usec":388.4,"est_time":3.57,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":89043,"user_time":15.42,"real_time":26.24,"user_ops":5774.5,"real_ops":3393.4,"user_usec":173.2,"real_usec":294.7,"est_time":2.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":90352,"user_time":15.89,"real_time":27.21,"user_ops":5686.1,"real_ops":3320.0,"user_usec":175.9,"real_usec":301.2,"est_time":2.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":89043,"user_time":15.05,"real_time":25.3,"user_ops":5916.5,"real_ops":3519.9,"user_usec":169.0,"real_usec":284.1,"est_time":2.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":83027,"user_time":14.27,"real_time":24.27,"user_ops":5818.3,"real_ops":3421.2,"user_usec":171.9,"real_usec":292.3,"est_time":2.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":84164,"user_time":14.32,"real_time":24.1,"user_ops":5877.4,"real_ops":3492.9,"user_usec":170.1,"real_usec":286.3,"est_time":2.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":89043,"user_time":14.85,"real_time":24.52,"user_ops":5996.2,"real_ops":3630.9,"user_usec":166.8,"real_usec":275.4,"est_time":2.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":87771,"user_time":14.79,"real_time":24.61,"user_ops":5934.5,"real_ops":3565.9,"user_usec":168.5,"real_usec":280.4,"est_time":2.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":81920,"user_time":13.93,"real_time":23.39,"user_ops":5880.8,"real_ops":3502.0,"user_usec":170.0,"real_usec":285.5,"est_time":2.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":91701,"user_time":15.47,"real_time":26.15,"user_ops":5927.7,"real_ops":3506.3,"user_usec":168.7,"real_usec":285.2,"est_time":2.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":86535,"user_time":14.31,"real_time":23.17,"user_ops":6047.2,"real_ops":3734.9,"user_usec":165.4,"real_usec":267.7,"est_time":2.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":87771,"user_time":14.49,"real_time":23.13,"user_ops":6057.3,"real_ops":3794.9,"user_usec":165.1,"real_usec":263.5,"est_time":2.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":80842,"user_time":14.88,"real_time":25.83,"user_ops":5432.9,"real_ops":3130.0,"user_usec":184.1,"real_usec":319.5,"est_time":3.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":87771,"user_time":15.21,"real_time":24.66,"user_ops":5770.6,"real_ops":3558.9,"user_usec":173.3,"real_usec":281.0,"est_time":2.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":84164,"user_time":16.02,"real_time":27.57,"user_ops":5253.7,"real_ops":3053.1,"user_usec":190.3,"real_usec":327.5,"est_time":3.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":78769,"user_time":14.59,"real_time":24.2,"user_ops":5398.8,"real_ops":3254.5,"user_usec":185.2,"real_usec":307.3,"est_time":3.24,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":64673,"user_time":14.92,"real_time":26.19,"user_ops":4334.7,"real_ops":2469.3,"user_usec":230.7,"real_usec":405.0,"est_time":3.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":90352,"user_time":15.31,"real_time":25.76,"user_ops":5901.5,"real_ops":3507.0,"user_usec":169.4,"real_usec":285.1,"est_time":2.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":94523,"user_time":16.28,"real_time":27.5,"user_ops":5806.1,"real_ops":3436.8,"user_usec":172.2,"real_usec":291.0,"est_time":2.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":87771,"user_time":14.95,"real_time":25.01,"user_ops":5871.0,"real_ops":3509.0,"user_usec":170.3,"real_usec":285.0,"est_time":3.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":87771,"user_time":14.97,"real_time":25.18,"user_ops":5863.1,"real_ops":3485.3,"user_usec":170.6,"real_usec":286.9,"est_time":2.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":81920,"user_time":13.63,"real_time":22.24,"user_ops":6010.3,"real_ops":3684.1,"user_usec":166.4,"real_usec":271.4,"est_time":3.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":87771,"user_time":15.92,"real_time":27.32,"user_ops":5513.3,"real_ops":3212.7,"user_usec":181.4,"real_usec":311.3,"est_time":2.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":80842,"user_time":14.4,"real_time":23.97,"user_ops":5614.0,"real_ops":3372.6,"user_usec":178.1,"real_usec":296.5,"est_time":3.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":85333,"user_time":15.17,"real_time":25.24,"user_ops":5625.1,"real_ops":3380.7,"user_usec":177.8,"real_usec":295.8,"est_time":2.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":80842,"user_time":15.61,"real_time":26.27,"user_ops":5178.9,"real_ops":3077.1,"user_usec":193.1,"real_usec":325.0,"est_time":3.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":75851,"user_time":14.84,"real_time":24.1,"user_ops":5111.3,"real_ops":3147.8,"user_usec":195.6,"real_usec":317.7,"est_time":3.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":63999,"user_time":14.71,"real_time":24.19,"user_ops":4350.7,"real_ops":2645.4,"user_usec":229.8,"real_usec":378.0,"est_time":3.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":52965,"user_time":15.39,"real_time":24.18,"user_ops":3441.5,"real_ops":2190.3,"user_usec":290.6,"real_usec":456.6,"est_time":2.53,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":39384,"user_time":15.13,"real_time":22.03,"user_ops":2603.0,"real_ops":1787.4,"user_usec":384.2,"real_usec":559.5,"est_time":3.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":24000,"user_time":14.82,"real_time":20.73,"user_ops":1619.4,"real_ops":1157.6,"user_usec":617.5,"real_usec":863.9,"est_time":2.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":13473,"user_time":13.43,"real_time":21.09,"user_ops":1003.2,"real_ops":638.9,"user_usec":996.8,"real_usec":1565.1,"est_time":3.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":93090,"user_time":16.09,"real_time":27.0,"user_ops":5785.6,"real_ops":3447.6,"user_usec":172.8,"real_usec":290.1,"est_time":2.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":87771,"user_time":14.68,"real_time":23.72,"user_ops":5979.0,"real_ops":3699.9,"user_usec":167.3,"real_usec":270.3,"est_time":2.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":79792,"user_time":14.69,"real_time":25.26,"user_ops":5431.7,"real_ops":3159.0,"user_usec":184.1,"real_usec":316.6,"est_time":3.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":84164,"user_time":15.53,"real_time":26.31,"user_ops":5419.4,"real_ops":3198.5,"user_usec":184.5,"real_usec":312.6,"est_time":2.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":76800,"user_time":14.86,"real_time":24.96,"user_ops":5168.2,"real_ops":3076.4,"user_usec":193.5,"real_usec":325.1,"est_time":3.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":75851,"user_time":15.58,"real_time":25.43,"user_ops":4868.5,"real_ops":2982.4,"user_usec":205.4,"real_usec":335.3,"est_time":3.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":69818,"user_time":15.38,"real_time":23.16,"user_ops":4539.5,"real_ops":3014.9,"user_usec":220.3,"real_usec":331.7,"est_time":3.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":54857,"user_time":15.28,"real_time":22.3,"user_ops":3590.1,"real_ops":2459.8,"user_usec":278.5,"real_usec":406.5,"est_time":2.18,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":40960,"user_time":15.39,"real_time":20.43,"user_ops":2661.5,"real_ops":2004.7,"user_usec":375.7,"real_usec":498.8,"est_time":2.53,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":26033,"user_time":15.54,"real_time":20.56,"user_ops":1675.2,"real_ops":1266.3,"user_usec":596.9,"real_usec":789.7,"est_time":2.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":14769,"user_time":14.94,"real_time":19.41,"user_ops":988.6,"real_ops":760.9,"user_usec":1011.6,"real_usec":1314.2,"est_time":1.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":7680,"user_time":15.18,"real_time":18.45,"user_ops":505.9,"real_ops":416.2,"user_usec":1976.6,"real_usec":2402.8,"est_time":2.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":5189,"user_time":15.08,"real_time":17.77,"user_ops":344.1,"real_ops":292.0,"user_usec":2906.1,"real_usec":3424.8,"est_time":2.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":2526,"user_time":14.85,"real_time":16.74,"user_ops":170.1,"real_ops":150.9,"user_usec":5878.9,"real_usec":6627.4,"est_time":2.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":1078,"user_time":14.8,"real_time":15.94,"user_ops":72.8,"real_ops":67.6,"user_usec":13729.1,"real_usec":14787.2,"est_time":2.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":571,"user_time":15.04,"real_time":16.33,"user_ops":38.0,"real_ops":35.0,"user_usec":26339.8,"real_usec":28595.3,"est_time":2.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":282,"user_time":14.64,"real_time":15.94,"user_ops":19.3,"real_ops":17.7,"user_usec":51914.9,"real_usec":56518.5,"est_time":2.31,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":148,"user_time":15.83,"real_time":17.39,"user_ops":9.3,"real_ops":8.5,"user_usec":106959.5,"real_usec":117510.9,"est_time":2.42,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":90352,"user_time":14.82,"real_time":26.03,"user_ops":6096.6,"real_ops":3470.4,"user_usec":164.0,"real_usec":288.1,"est_time":3.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":100721,"user_time":16.54,"real_time":29.02,"user_ops":6089.5,"real_ops":3470.3,"user_usec":164.2,"real_usec":288.2,"est_time":2.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":100721,"user_time":16.53,"real_time":28.6,"user_ops":6093.2,"real_ops":3521.6,"user_usec":164.1,"real_usec":284.0,"est_time":2.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":94523,"user_time":15.31,"real_time":26.54,"user_ops":6173.9,"real_ops":3562.1,"user_usec":162.0,"real_usec":280.7,"est_time":2.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":93090,"user_time":15.03,"real_time":26.19,"user_ops":6193.6,"real_ops":3554.0,"user_usec":161.5,"real_usec":281.4,"est_time":2.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":86535,"user_time":14.83,"real_time":25.84,"user_ops":5835.1,"real_ops":3349.5,"user_usec":171.4,"real_usec":298.6,"est_time":3.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":93090,"user_time":16.78,"real_time":29.02,"user_ops":5547.7,"real_ops":3207.4,"user_usec":180.3,"real_usec":311.8,"est_time":2.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":87771,"user_time":16.65,"real_time":28.36,"user_ops":5271.5,"real_ops":3095.1,"user_usec":189.7,"real_usec":323.1,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":74926,"user_time":14.79,"real_time":23.02,"user_ops":5066.0,"real_ops":3254.4,"user_usec":197.4,"real_usec":307.3,"est_time":3.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":62060,"user_time":15.02,"real_time":22.92,"user_ops":4131.8,"real_ops":2708.2,"user_usec":242.0,"real_usec":369.3,"est_time":3.56,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":48000,"user_time":15.09,"real_time":21.05,"user_ops":3180.9,"real_ops":2280.5,"user_usec":314.4,"real_usec":438.5,"est_time":2.46,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":31999,"user_time":15.0,"real_time":20.42,"user_ops":2133.3,"real_ops":1566.8,"user_usec":468.8,"real_usec":638.3,"est_time":3.29,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":19200,"user_time":15.37,"real_time":20.83,"user_ops":1249.2,"real_ops":921.7,"user_usec":800.5,"real_usec":1084.9,"est_time":3.2,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":87771,"user_time":14.11,"real_time":24.2,"user_ops":6220.5,"real_ops":3626.2,"user_usec":160.8,"real_usec":275.8,"est_time":2.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":86535,"user_time":13.99,"real_time":24.0,"user_ops":6185.5,"real_ops":3606.0,"user_usec":161.7,"real_usec":277.3,"est_time":3.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":91701,"user_time":16.18,"real_time":28.34,"user_ops":5667.6,"real_ops":3235.6,"user_usec":176.4,"real_usec":309.1,"est_time":2.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":86535,"user_time":15.4,"real_time":25.96,"user_ops":5619.2,"real_ops":3332.9,"user_usec":178.0,"real_usec":300.0,"est_time":2.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":79792,"user_time":15.7,"real_time":25.74,"user_ops":5082.3,"real_ops":3099.5,"user_usec":196.8,"real_usec":322.6,"est_time":2.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":65361,"user_time":14.84,"real_time":23.13,"user_ops":4404.4,"real_ops":2826.2,"user_usec":227.0,"real_usec":353.8,"est_time":3.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":53894,"user_time":15.34,"real_time":21.53,"user_ops":3513.3,"real_ops":2503.4,"user_usec":284.6,"real_usec":399.4,"est_time":2.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":35310,"user_time":14.95,"real_time":20.41,"user_ops":2361.9,"real_ops":1729.8,"user_usec":423.4,"real_usec":578.1,"est_time":2.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":22260,"user_time":14.75,"real_time":18.23,"user_ops":1509.2,"real_ops":1221.0,"user_usec":662.6,"real_usec":819.0,"est_time":2.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":13016,"user_time":14.95,"real_time":18.93,"user_ops":870.6,"real_ops":687.4,"user_usec":1148.6,"real_usec":1454.7,"est_time":1.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":6736,"user_time":14.32,"real_time":17.55,"user_ops":470.4,"real_ops":383.7,"user_usec":2125.9,"real_usec":2606.1,"est_time":1.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":3692,"user_time":15.05,"real_time":17.2,"user_ops":245.3,"real_ops":214.6,"user_usec":4076.4,"real_usec":4658.8,"est_time":1.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":1846,"user_time":15.1,"real_time":16.57,"user_ops":122.3,"real_ops":111.4,"user_usec":8179.8,"real_usec":8974.0,"est_time":1.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":872,"user_time":14.76,"real_time":15.87,"user_ops":59.1,"real_ops":55.0,"user_usec":16926.6,"real_usec":18194.1,"est_time":1.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":461,"user_time":15.53,"real_time":16.6,"user_ops":29.7,"real_ops":27.8,"user_usec":33687.6,"real_usec":36003.6,"est_time":1.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":226,"user_time":15.88,"real_time":16.87,"user_ops":14.2,"real_ops":13.4,"user_usec":70265.5,"real_usec":74626.6,"est_time":1.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2251","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":599414,"user_time":18.49,"real_time":23.3,"user_ops":32418.3,"real_ops":25726.1,"user_usec":30.8,"real_usec":38.9,"est_time":9.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":630153,"user_time":19.33,"real_time":24.36,"user_ops":32599.7,"real_ops":25866.3,"user_usec":30.7,"real_usec":38.7,"est_time":9.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":630153,"user_time":19.21,"real_time":24.27,"user_ops":32803.4,"real_ops":25968.5,"user_usec":30.5,"real_usec":38.5,"est_time":9.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":630153,"user_time":18.48,"real_time":23.49,"user_ops":34099.2,"real_ops":26826.6,"user_usec":29.3,"real_usec":37.3,"est_time":9.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":638337,"user_time":17.82,"real_time":22.94,"user_ops":35821.4,"real_ops":27823.1,"user_usec":27.9,"real_usec":35.9,"est_time":9.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":622177,"user_time":17.25,"real_time":22.21,"user_ops":36068.2,"real_ops":28010.6,"user_usec":27.7,"real_usec":35.7,"est_time":9.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":599414,"user_time":15.98,"real_time":20.82,"user_ops":37510.3,"real_ops":28783.9,"user_usec":26.7,"real_usec":34.7,"est_time":9.53,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":578258,"user_time":15.68,"real_time":20.42,"user_ops":36878.7,"real_ops":28318.3,"user_usec":27.1,"real_usec":35.3,"est_time":9.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":558545,"user_time":15.18,"real_time":19.9,"user_ops":36794.8,"real_ops":28068.2,"user_usec":27.2,"real_usec":35.6,"est_time":9.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":585142,"user_time":15.25,"real_time":20.47,"user_ops":38370.0,"real_ops":28579.2,"user_usec":26.1,"real_usec":35.0,"est_time":10.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":564965,"user_time":14.87,"real_time":20.58,"user_ops":37993.6,"real_ops":27453.1,"user_usec":26.3,"real_usec":36.4,"est_time":10.45,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":528516,"user_time":14.98,"real_time":21.51,"user_ops":35281.4,"real_ops":24573.8,"user_usec":28.3,"real_usec":40.7,"est_time":11.45,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":455111,"user_time":15.32,"real_time":22.96,"user_ops":29707.0,"real_ops":19825.2,"user_usec":33.7,"real_usec":50.4,"est_time":7.64,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":366805,"user_time":15.64,"real_time":24.91,"user_ops":23453.0,"real_ops":14725.1,"user_usec":42.6,"real_usec":67.9,"est_time":9.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":245760,"user_time":14.89,"real_time":25.33,"user_ops":16505.0,"real_ops":9703.5,"user_usec":60.6,"real_usec":103.1,"est_time":13.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":157538,"user_time":14.33,"real_time":26.57,"user_ops":10993.6,"real_ops":5928.6,"user_usec":91.0,"real_usec":168.7,"est_time":10.56,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":614400,"user_time":18.18,"real_time":23.14,"user_ops":33795.4,"real_ops":26549.0,"user_usec":29.6,"real_usec":37.7,"est_time":9.36,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":638337,"user_time":18.49,"real_time":23.69,"user_ops":34523.4,"real_ops":26944.1,"user_usec":29.0,"real_usec":37.1,"est_time":9.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":664216,"user_time":19.6,"real_time":24.98,"user_ops":33888.6,"real_ops":26586.3,"user_usec":29.5,"real_usec":37.6,"est_time":9.46,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":606814,"user_time":17.26,"real_time":22.08,"user_ops":35157.2,"real_ops":27479.6,"user_usec":28.4,"real_usec":36.4,"est_time":9.54,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":646736,"user_time":17.74,"real_time":22.86,"user_ops":36456.4,"real_ops":28288.3,"user_usec":27.4,"real_usec":35.4,"est_time":9.45,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":585142,"user_time":16.15,"real_time":20.94,"user_ops":36231.7,"real_ops":27950.3,"user_usec":27.6,"real_usec":35.8,"est_time":9.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":585142,"user_time":15.77,"real_time":20.5,"user_ops":37104.8,"real_ops":28550.2,"user_usec":27.0,"real_usec":35.0,"est_time":9.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":558545,"user_time":15.97,"real_time":20.53,"user_ops":34974.6,"real_ops":27209.0,"user_usec":28.6,"real_usec":36.8,"est_time":9.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":571534,"user_time":15.32,"real_time":20.25,"user_ops":37306.4,"real_ops":28217.3,"user_usec":26.8,"real_usec":35.4,"est_time":9.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":585142,"user_time":15.27,"real_time":20.5,"user_ops":38319.7,"real_ops":28545.8,"user_usec":26.1,"real_usec":35.0,"est_time":10.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":558545,"user_time":14.94,"real_time":20.72,"user_ops":37385.9,"real_ops":26950.5,"user_usec":26.7,"real_usec":37.1,"est_time":10.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":522893,"user_time":15.05,"real_time":21.54,"user_ops":34743.7,"real_ops":24270.8,"user_usec":28.8,"real_usec":41.2,"est_time":11.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":438857,"user_time":14.81,"real_time":22.18,"user_ops":29632.5,"real_ops":19782.6,"user_usec":33.7,"real_usec":50.5,"est_time":7.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":351085,"user_time":14.74,"real_time":23.77,"user_ops":23818.5,"real_ops":14769.1,"user_usec":42.0,"real_usec":67.7,"est_time":9.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":250775,"user_time":15.1,"real_time":25.63,"user_ops":16607.6,"real_ops":9784.4,"user_usec":60.2,"real_usec":102.2,"est_time":14.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":151703,"user_time":14.49,"real_time":25.69,"user_ops":10469.5,"real_ops":5905.2,"user_usec":95.5,"real_usec":169.3,"est_time":11.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":592192,"user_time":16.81,"real_time":21.57,"user_ops":35228.6,"real_ops":27457.3,"user_usec":28.4,"real_usec":36.4,"est_time":9.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":638337,"user_time":17.81,"real_time":22.93,"user_ops":35841.5,"real_ops":27844.0,"user_usec":27.9,"real_usec":35.9,"est_time":10.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":585142,"user_time":16.5,"real_time":21.25,"user_ops":35463.2,"real_ops":27534.2,"user_usec":28.2,"real_usec":36.3,"est_time":10.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":578258,"user_time":16.01,"real_time":20.71,"user_ops":36118.6,"real_ops":27915.2,"user_usec":27.7,"real_usec":35.8,"est_time":11.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":546133,"user_time":15.22,"real_time":19.68,"user_ops":35882.6,"real_ops":27747.1,"user_usec":27.9,"real_usec":36.0,"est_time":14.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":546133,"user_time":15.77,"real_time":20.41,"user_ops":34631.1,"real_ops":26754.7,"user_usec":28.9,"real_usec":37.4,"est_time":19.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":511999,"user_time":15.21,"real_time":19.84,"user_ops":33662.0,"real_ops":25809.4,"user_usec":29.7,"real_usec":38.7,"est_time":29.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":455111,"user_time":14.97,"real_time":19.68,"user_ops":30401.5,"real_ops":23129.9,"user_usec":32.9,"real_usec":43.2,"est_time":24.4,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":372363,"user_time":14.91,"real_time":19.69,"user_ops":24974.0,"real_ops":18911.2,"user_usec":40.0,"real_usec":52.9,"est_time":41.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":270065,"user_time":15.02,"real_time":19.8,"user_ops":17980.4,"real_ops":13641.9,"user_usec":55.6,"real_usec":73.3,"est_time":76.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":173070,"user_time":15.27,"real_time":20.12,"user_ops":11334.0,"real_ops":8602.8,"user_usec":88.2,"real_usec":116.2,"est_time":77.76,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":96000,"user_time":14.58,"real_time":19.2,"user_ops":6584.4,"real_ops":5000.9,"user_usec":151.9,"real_usec":200.0,"est_time":76.42,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":56888,"user_time":15.02,"real_time":20.05,"user_ops":3787.5,"real_ops":2837.0,"user_usec":264.0,"real_usec":352.5,"est_time":74.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":30117,"user_time":15.08,"real_time":20.06,"user_ops":1997.1,"real_ops":1501.6,"user_usec":500.7,"real_usec":666.0,"est_time":72.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":15058,"user_time":13.65,"real_time":20.31,"user_ops":1103.2,"real_ops":741.6,"user_usec":906.5,"real_usec":1348.5,"est_time":73.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":571534,"user_time":16.85,"real_time":21.56,"user_ops":33918.9,"real_ops":26508.8,"user_usec":29.5,"real_usec":37.7,"est_time":9.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":564965,"user_time":16.6,"real_time":21.21,"user_ops":34034.0,"real_ops":26636.7,"user_usec":29.4,"real_usec":37.5,"est_time":9.58,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":512000,"user_time":15.67,"real_time":19.89,"user_ops":32673.9,"real_ops":25735.6,"user_usec":30.6,"real_usec":38.9,"est_time":9.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":481882,"user_time":16.14,"real_time":20.14,"user_ops":29856.4,"real_ops":23929.3,"user_usec":33.5,"real_usec":41.8,"est_time":5.24,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":431157,"user_time":17.23,"real_time":20.92,"user_ops":25023.6,"real_ops":20611.8,"user_usec":40.0,"real_usec":48.5,"est_time":5.6,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":336657,"user_time":17.55,"real_time":20.59,"user_ops":19182.7,"real_ops":16352.8,"user_usec":52.1,"real_usec":61.2,"est_time":6.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":183402,"user_time":14.02,"real_time":15.86,"user_ops":13081.5,"real_ops":11564.5,"user_usec":76.4,"real_usec":86.5,"est_time":4.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":155544,"user_time":17.73,"real_time":19.65,"user_ops":8772.9,"real_ops":7914.1,"user_usec":114.0,"real_usec":126.4,"est_time":4.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":84164,"user_time":16.58,"real_time":17.94,"user_ops":5076.2,"real_ops":4692.3,"user_usec":197.0,"real_usec":213.1,"est_time":3.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":48761,"user_time":17.6,"real_time":18.73,"user_ops":2770.5,"real_ops":2603.7,"user_usec":360.9,"real_usec":384.1,"est_time":3.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":22925,"user_time":15.68,"real_time":16.53,"user_ops":1462.1,"real_ops":1386.6,"user_usec":684.0,"real_usec":721.2,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":12387,"user_time":16.76,"real_time":17.52,"user_ops":739.1,"real_ops":706.9,"user_usec":1353.0,"real_usec":1414.6,"est_time":2.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":5120,"user_time":14.07,"real_time":14.63,"user_ops":363.9,"real_ops":350.0,"user_usec":2748.0,"real_usec":2857.4,"est_time":2.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":3047,"user_time":18.55,"real_time":19.25,"user_ops":164.3,"real_ops":158.3,"user_usec":6088.0,"real_usec":6317.9,"est_time":2.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":1432,"user_time":16.8,"real_time":17.46,"user_ops":85.2,"real_ops":82.0,"user_usec":11731.8,"real_usec":12192.7,"est_time":2.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":716,"user_time":16.62,"real_time":17.29,"user_ops":43.1,"real_ops":41.4,"user_usec":23212.3,"real_usec":24155.0,"est_time":2.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":328,"user_time":16.23,"real_time":16.94,"user_ops":20.2,"real_ops":19.4,"user_usec":49481.7,"real_usec":51657.1,"est_time":2.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":151,"user_time":15.31,"real_time":15.96,"user_ops":9.9,"real_ops":9.5,"user_usec":101390.7,"real_usec":105724.6,"est_time":2.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":630153,"user_time":17.2,"real_time":22.25,"user_ops":36636.8,"real_ops":28325.0,"user_usec":27.3,"real_usec":35.3,"est_time":9.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":606814,"user_time":16.12,"real_time":20.92,"user_ops":37643.5,"real_ops":29010.3,"user_usec":26.6,"real_usec":34.5,"est_time":10.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":606814,"user_time":15.8,"real_time":20.64,"user_ops":38405.9,"real_ops":29398.2,"user_usec":26.0,"real_usec":34.0,"est_time":11.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":552269,"user_time":14.87,"real_time":19.34,"user_ops":37139.8,"real_ops":28556.1,"user_usec":26.9,"real_usec":35.0,"est_time":13.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":546133,"user_time":14.88,"real_time":19.45,"user_ops":36702.5,"real_ops":28083.9,"user_usec":27.2,"real_usec":35.6,"est_time":17.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":501551,"user_time":14.84,"real_time":19.26,"user_ops":33797.2,"real_ops":26036.4,"user_usec":29.6,"real_usec":38.4,"est_time":25.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":438857,"user_time":15.82,"real_time":20.08,"user_ops":27740.6,"real_ops":21857.6,"user_usec":36.0,"real_usec":45.8,"est_time":21.32,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":356173,"user_time":16.32,"real_time":20.33,"user_ops":21824.3,"real_ops":17516.2,"user_usec":45.8,"real_usec":57.1,"est_time":37.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":240941,"user_time":16.07,"real_time":19.63,"user_ops":14993.2,"real_ops":12276.6,"user_usec":66.7,"real_usec":81.5,"est_time":34.57,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":141241,"user_time":14.3,"real_time":17.19,"user_ops":9877.0,"real_ops":8214.3,"user_usec":101.2,"real_usec":121.7,"est_time":67.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":81920,"user_time":14.61,"real_time":17.3,"user_ops":5607.1,"real_ops":4735.5,"user_usec":178.3,"real_usec":211.2,"est_time":62.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":44521,"user_time":14.89,"real_time":17.31,"user_ops":2990.0,"real_ops":2572.0,"user_usec":334.4,"real_usec":388.8,"est_time":64.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":22588,"user_time":14.59,"real_time":16.88,"user_ops":1548.2,"real_ops":1338.2,"user_usec":645.9,"real_usec":747.2,"est_time":63.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":622177,"user_time":16.94,"real_time":21.9,"user_ops":36728.3,"real_ops":28407.7,"user_usec":27.2,"real_usec":35.2,"est_time":9.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":564965,"user_time":16.4,"real_time":21.0,"user_ops":34449.1,"real_ops":26905.7,"user_usec":29.0,"real_usec":37.2,"est_time":9.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":481882,"user_time":16.35,"real_time":20.43,"user_ops":29472.9,"real_ops":23583.8,"user_usec":33.9,"real_usec":42.4,"est_time":10.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":396387,"user_time":17.74,"real_time":21.27,"user_ops":22344.3,"real_ops":18632.3,"user_usec":44.8,"real_usec":53.7,"est_time":5.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":245760,"user_time":15.36,"real_time":17.86,"user_ops":16000.0,"real_ops":13756.8,"user_usec":62.5,"real_usec":72.7,"est_time":6.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":178086,"user_time":17.83,"real_time":20.01,"user_ops":9988.0,"real_ops":8901.0,"user_usec":100.1,"real_usec":112.3,"est_time":4.63,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":93090,"user_time":15.85,"real_time":17.33,"user_ops":5873.2,"real_ops":5370.2,"user_usec":170.3,"real_usec":186.2,"est_time":3.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":57962,"user_time":17.56,"real_time":18.9,"user_ops":3300.8,"real_ops":3067.3,"user_usec":303.0,"real_usec":326.0,"est_time":2.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":28183,"user_time":16.19,"real_time":17.16,"user_ops":1740.8,"real_ops":1642.2,"user_usec":574.5,"real_usec":608.9,"est_time":4.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":14628,"user_time":16.56,"real_time":17.39,"user_ops":883.3,"real_ops":841.0,"user_usec":1132.1,"real_usec":1189.1,"est_time":4.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":6564,"user_time":14.58,"real_time":15.25,"user_ops":450.2,"real_ops":430.5,"user_usec":2221.2,"real_usec":2323.0,"est_time":4.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":3622,"user_time":15.86,"real_time":16.55,"user_ops":228.4,"real_ops":218.9,"user_usec":4378.8,"real_usec":4569.3,"est_time":3.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":1777,"user_time":15.45,"real_time":16.11,"user_ops":115.0,"real_ops":110.3,"user_usec":8694.4,"real_usec":9066.5,"est_time":3.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":932,"user_time":16.53,"real_time":17.25,"user_ops":56.4,"real_ops":54.0,"user_usec":17736.1,"real_usec":18510.8,"est_time":3.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":428,"user_time":14.45,"real_time":15.16,"user_ops":29.6,"real_ops":28.2,"user_usec":33761.7,"real_usec":35418.7,"est_time":3.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":218,"user_time":15.4,"real_time":16.06,"user_ops":14.2,"real_ops":13.6,"user_usec":70642.2,"real_usec":73674.4,"est_time":3.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-2332","tag":"suite_find","status":"OK"},
]; // 360 minutes

View File

@ -0,0 +1,190 @@
exp_series_suite_find_ruby = [
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":70620,"user_time":15.02,"real_time":23.64,"user_ops":4701.7,"real_ops":2986.9,"user_usec":212.7,"real_usec":334.8,"est_time":3.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":72282,"user_time":15.03,"real_time":22.92,"user_ops":4809.2,"real_ops":3153.3,"user_usec":207.9,"real_usec":317.1,"est_time":3.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":67516,"user_time":14.48,"real_time":22.76,"user_ops":4662.7,"real_ops":2966.5,"user_usec":214.5,"real_usec":337.1,"est_time":3.43,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":73142,"user_time":15.75,"real_time":24.61,"user_ops":4643.9,"real_ops":2972.6,"user_usec":215.3,"real_usec":336.4,"est_time":3.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":66782,"user_time":14.57,"real_time":22.58,"user_ops":4583.5,"real_ops":2957.6,"user_usec":218.2,"real_usec":338.1,"est_time":3.35,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":69818,"user_time":15.12,"real_time":23.29,"user_ops":4617.6,"real_ops":2998.3,"user_usec":216.6,"real_usec":333.5,"est_time":3.4,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":64000,"user_time":14.05,"real_time":21.35,"user_ops":4555.2,"real_ops":2998.2,"user_usec":219.5,"real_usec":333.5,"est_time":3.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":64000,"user_time":15.21,"real_time":23.15,"user_ops":4207.8,"real_ops":2764.9,"user_usec":237.7,"real_usec":361.7,"est_time":3.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":57962,"user_time":14.56,"real_time":21.6,"user_ops":3980.9,"real_ops":2683.4,"user_usec":251.2,"real_usec":372.7,"est_time":2.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":54857,"user_time":15.04,"real_time":20.87,"user_ops":3647.4,"real_ops":2628.1,"user_usec":274.2,"real_usec":380.5,"est_time":2.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":42666,"user_time":14.89,"real_time":20.76,"user_ops":2865.4,"real_ops":2055.6,"user_usec":349.0,"real_usec":486.5,"est_time":2.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":30415,"user_time":14.8,"real_time":19.71,"user_ops":2055.1,"real_ops":1543.3,"user_usec":486.6,"real_usec":648.0,"est_time":3.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":20480,"user_time":15.13,"real_time":18.52,"user_ops":1353.6,"real_ops":1106.0,"user_usec":738.8,"real_usec":904.1,"est_time":2.32,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":11636,"user_time":14.6,"real_time":18.3,"user_ops":797.0,"real_ops":636.0,"user_usec":1254.7,"real_usec":1572.4,"est_time":2.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":6508,"user_time":14.72,"real_time":17.81,"user_ops":442.1,"real_ops":365.5,"user_usec":2261.8,"real_usec":2736.1,"est_time":1.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_one","iterations":3555,"user_time":14.67,"real_time":16.77,"user_ops":242.3,"real_ops":212.0,"user_usec":4126.6,"real_usec":4718.0,"est_time":1.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":73142,"user_time":15.32,"real_time":24.33,"user_ops":4774.3,"real_ops":3006.8,"user_usec":209.5,"real_usec":332.6,"est_time":3.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":69033,"user_time":14.31,"real_time":22.29,"user_ops":4824.1,"real_ops":3097.4,"user_usec":207.3,"real_usec":322.9,"est_time":3.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":68266,"user_time":14.92,"real_time":24.02,"user_ops":4575.5,"real_ops":2842.6,"user_usec":218.6,"real_usec":351.8,"est_time":3.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":66782,"user_time":14.6,"real_time":22.72,"user_ops":4574.1,"real_ops":2939.3,"user_usec":218.6,"real_usec":340.2,"est_time":3.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":63340,"user_time":14.81,"real_time":23.34,"user_ops":4276.8,"real_ops":2713.5,"user_usec":233.8,"real_usec":368.5,"est_time":3.59,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":57962,"user_time":14.65,"real_time":22.01,"user_ops":3956.5,"real_ops":2633.7,"user_usec":252.8,"real_usec":379.7,"est_time":2.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":52965,"user_time":15.88,"real_time":23.13,"user_ops":3335.3,"real_ops":2290.3,"user_usec":299.8,"real_usec":436.6,"est_time":2.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":39384,"user_time":15.09,"real_time":20.69,"user_ops":2609.9,"real_ops":1903.4,"user_usec":383.2,"real_usec":525.4,"est_time":2.62,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":27428,"user_time":15.19,"real_time":19.47,"user_ops":1805.7,"real_ops":1408.6,"user_usec":553.8,"real_usec":709.9,"est_time":1.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":16695,"user_time":14.78,"real_time":18.37,"user_ops":1129.6,"real_ops":908.9,"user_usec":885.3,"real_usec":1100.2,"est_time":2.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":9846,"user_time":15.17,"real_time":18.74,"user_ops":649.0,"real_ops":525.5,"user_usec":1540.7,"real_usec":1903.0,"est_time":2.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":5333,"user_time":15.02,"real_time":17.05,"user_ops":355.1,"real_ops":312.8,"user_usec":2816.4,"real_usec":3196.7,"est_time":2.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":2782,"user_time":14.92,"real_time":16.2,"user_ops":186.5,"real_ops":171.7,"user_usec":5363.0,"real_usec":5824.3,"est_time":2.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":1432,"user_time":15.0,"real_time":15.95,"user_ops":95.5,"real_ops":89.8,"user_usec":10474.9,"real_usec":11140.6,"est_time":1.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":727,"user_time":15.09,"real_time":15.83,"user_ops":48.2,"real_ops":45.9,"user_usec":20756.5,"real_usec":21774.4,"est_time":1.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_one","iterations":358,"user_time":15.01,"real_time":15.71,"user_ops":23.9,"real_ops":22.8,"user_usec":41927.4,"real_usec":43870.2,"est_time":1.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":63340,"user_time":14.93,"real_time":22.36,"user_ops":4242.5,"real_ops":2832.5,"user_usec":235.7,"real_usec":353.0,"est_time":3.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":60235,"user_time":14.47,"real_time":20.96,"user_ops":4162.8,"real_ops":2873.2,"user_usec":240.2,"real_usec":348.0,"est_time":2.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":53894,"user_time":14.68,"real_time":21.67,"user_ops":3671.3,"real_ops":2486.6,"user_usec":272.4,"real_usec":402.1,"est_time":2.36,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":50360,"user_time":15.39,"real_time":21.41,"user_ops":3272.3,"real_ops":2352.0,"user_usec":305.6,"real_usec":425.2,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":37012,"user_time":14.98,"real_time":20.12,"user_ops":2470.8,"real_ops":1839.8,"user_usec":404.7,"real_usec":543.5,"est_time":2.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":24774,"user_time":14.42,"real_time":18.28,"user_ops":1718.0,"real_ops":1355.1,"user_usec":582.1,"real_usec":738.0,"est_time":2.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":16168,"user_time":14.98,"real_time":18.0,"user_ops":1079.3,"real_ops":898.0,"user_usec":926.5,"real_usec":1113.6,"est_time":2.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":9035,"user_time":14.99,"real_time":17.83,"user_ops":602.7,"real_ops":506.6,"user_usec":1659.1,"real_usec":1973.9,"est_time":2.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":4626,"user_time":14.89,"real_time":16.96,"user_ops":310.7,"real_ops":272.7,"user_usec":3218.8,"real_usec":3667.2,"est_time":2.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":2341,"user_time":14.82,"real_time":16.04,"user_ops":158.0,"real_ops":145.9,"user_usec":6330.6,"real_usec":6852.0,"est_time":2.32,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":1185,"user_time":14.89,"real_time":15.9,"user_ops":79.6,"real_ops":74.5,"user_usec":12565.4,"real_usec":13416.7,"est_time":2.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":564,"user_time":15.13,"real_time":15.91,"user_ops":37.3,"real_ops":35.5,"user_usec":26826.2,"real_usec":28208.3,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":266,"user_time":14.91,"real_time":15.67,"user_ops":17.8,"real_ops":17.0,"user_usec":56052.6,"real_usec":58898.0,"est_time":2.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":150,"user_time":14.88,"real_time":15.55,"user_ops":10.1,"real_ops":9.6,"user_usec":99200.0,"real_usec":103697.3,"est_time":2.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_one","iterations":69,"user_time":14.67,"real_time":15.39,"user_ops":4.7,"real_ops":4.5,"user_usec":212608.7,"real_usec":223008.5,"est_time":2.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":64673,"user_time":14.26,"real_time":21.98,"user_ops":4535.3,"real_ops":2942.1,"user_usec":220.5,"real_usec":339.9,"est_time":3.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":62693,"user_time":14.3,"real_time":21.86,"user_ops":4384.1,"real_ops":2868.2,"user_usec":228.1,"real_usec":348.6,"est_time":3.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":60831,"user_time":15.16,"real_time":22.73,"user_ops":4012.6,"real_ops":2676.7,"user_usec":249.2,"real_usec":373.6,"est_time":3.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":54857,"user_time":15.96,"real_time":23.66,"user_ops":3437.2,"real_ops":2318.7,"user_usec":290.9,"real_usec":431.3,"est_time":2.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":42082,"user_time":15.49,"real_time":21.46,"user_ops":2716.7,"real_ops":1961.3,"user_usec":368.1,"real_usec":509.9,"est_time":2.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":28981,"user_time":15.06,"real_time":19.42,"user_ops":1924.4,"real_ops":1492.6,"user_usec":519.7,"real_usec":670.0,"est_time":1.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":18506,"user_time":15.08,"real_time":18.16,"user_ops":1227.2,"real_ops":1019.0,"user_usec":814.9,"real_usec":981.4,"est_time":2.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":10378,"user_time":15.11,"real_time":18.7,"user_ops":686.8,"real_ops":554.9,"user_usec":1456.0,"real_usec":1802.1,"est_time":2.36,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":5333,"user_time":14.78,"real_time":17.13,"user_ops":360.8,"real_ops":311.4,"user_usec":2771.4,"real_usec":3211.8,"est_time":2.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":2742,"user_time":14.83,"real_time":16.2,"user_ops":184.9,"real_ops":169.3,"user_usec":5408.5,"real_usec":5906.9,"est_time":2.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":1371,"user_time":14.81,"real_time":15.78,"user_ops":92.6,"real_ops":86.9,"user_usec":10802.3,"real_usec":11512.5,"est_time":2.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":648,"user_time":14.68,"real_time":15.45,"user_ops":44.1,"real_ops":41.9,"user_usec":22654.3,"real_usec":23842.1,"est_time":2.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":315,"user_time":14.76,"real_time":15.49,"user_ops":21.3,"real_ops":20.3,"user_usec":46857.1,"real_usec":49183.5,"est_time":2.35,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":151,"user_time":14.78,"real_time":15.52,"user_ops":10.2,"real_ops":9.7,"user_usec":97880.8,"real_usec":102799.6,"est_time":2.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":68,"user_time":14.82,"real_time":15.54,"user_ops":4.6,"real_ops":4.4,"user_usec":217941.2,"real_usec":228548.0,"est_time":2.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":34,"user_time":14.66,"real_time":15.4,"user_ops":2.3,"real_ops":2.2,"user_usec":431176.5,"real_usec":452949.9,"est_time":2.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":16,"user_time":13.88,"real_time":14.62,"user_ops":1.2,"real_ops":1.1,"user_usec":867500.0,"real_usec":913500.5,"est_time":3.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_one","iterations":7,"user_time":12.83,"real_time":13.57,"user_ops":0.5,"real_ops":0.5,"user_usec":1832857.1,"real_usec":1939141.4,"est_time":6.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":75851,"user_time":14.6,"real_time":23.47,"user_ops":5195.3,"real_ops":3232.1,"user_usec":192.5,"real_usec":309.4,"est_time":3.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":63340,"user_time":14.94,"real_time":23.35,"user_ops":4239.6,"real_ops":2712.9,"user_usec":235.9,"real_usec":368.6,"est_time":3.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":49548,"user_time":14.48,"real_time":19.87,"user_ops":3421.8,"real_ops":2493.3,"user_usec":292.2,"real_usec":401.1,"est_time":2.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":34133,"user_time":15.2,"real_time":19.95,"user_ops":2245.6,"real_ops":1711.0,"user_usec":445.3,"real_usec":584.5,"est_time":2.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":20480,"user_time":15.28,"real_time":19.17,"user_ops":1340.3,"real_ops":1068.3,"user_usec":746.1,"real_usec":936.1,"est_time":2.41,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":11294,"user_time":14.89,"real_time":18.44,"user_ops":758.5,"real_ops":612.6,"user_usec":1318.4,"real_usec":1632.3,"est_time":2.32,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":5907,"user_time":14.68,"real_time":17.18,"user_ops":402.4,"real_ops":343.8,"user_usec":2485.2,"real_usec":2908.4,"est_time":2.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":3047,"user_time":15.09,"real_time":16.69,"user_ops":201.9,"real_ops":182.6,"user_usec":4952.4,"real_usec":5477.0,"est_time":1.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":1523,"user_time":14.94,"real_time":16.03,"user_ops":101.9,"real_ops":95.0,"user_usec":9809.6,"real_usec":10524.8,"est_time":1.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":749,"user_time":14.85,"real_time":15.67,"user_ops":50.4,"real_ops":47.8,"user_usec":19826.4,"real_usec":20922.2,"est_time":1.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":369,"user_time":14.91,"real_time":15.64,"user_ops":24.7,"real_ops":23.6,"user_usec":40406.5,"real_usec":42372.0,"est_time":1.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":181,"user_time":14.9,"real_time":15.81,"user_ops":12.1,"real_ops":11.5,"user_usec":82320.4,"real_usec":87329.3,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":88,"user_time":14.82,"real_time":15.5,"user_ops":5.9,"real_ops":5.7,"user_usec":168409.1,"real_usec":176182.2,"est_time":1.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":78769,"user_time":14.77,"real_time":23.14,"user_ops":5333.0,"real_ops":3403.8,"user_usec":187.5,"real_usec":293.8,"est_time":3.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":69818,"user_time":15.44,"real_time":23.06,"user_ops":4521.9,"real_ops":3027.4,"user_usec":221.1,"real_usec":330.3,"est_time":3.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":52965,"user_time":15.62,"real_time":22.52,"user_ops":3390.8,"real_ops":2352.0,"user_usec":294.9,"real_usec":425.2,"est_time":2.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":34909,"user_time":14.74,"real_time":18.85,"user_ops":2368.3,"real_ops":1851.8,"user_usec":422.2,"real_usec":540.0,"est_time":2.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":21333,"user_time":15.1,"real_time":18.6,"user_ops":1412.8,"real_ops":1146.9,"user_usec":707.8,"real_usec":871.9,"est_time":2.3,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":12000,"user_time":15.31,"real_time":19.32,"user_ops":783.8,"real_ops":621.1,"user_usec":1275.8,"real_usec":1610.2,"est_time":2.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":6295,"user_time":14.98,"real_time":17.52,"user_ops":420.2,"real_ops":359.3,"user_usec":2379.7,"real_usec":2783.5,"est_time":2.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":3200,"user_time":14.9,"real_time":16.52,"user_ops":214.8,"real_ops":193.8,"user_usec":4656.3,"real_usec":5161.3,"est_time":1.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":1600,"user_time":14.89,"real_time":16.04,"user_ops":107.5,"real_ops":99.8,"user_usec":9306.3,"real_usec":10022.2,"est_time":1.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":786,"user_time":14.85,"real_time":15.73,"user_ops":52.9,"real_ops":50.0,"user_usec":18893.1,"real_usec":20013.9,"est_time":1.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":387,"user_time":15.0,"real_time":15.69,"user_ops":25.8,"real_ops":24.7,"user_usec":38759.7,"real_usec":40540.7,"est_time":2.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":190,"user_time":15.14,"real_time":15.8,"user_ops":12.5,"real_ops":12.0,"user_usec":79684.2,"real_usec":83147.9,"est_time":1.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":89,"user_time":14.75,"real_time":15.45,"user_ops":6.0,"real_ops":5.8,"user_usec":165730.3,"real_usec":173608.2,"est_time":1.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":43,"user_time":15.08,"real_time":15.77,"user_ops":2.9,"real_ops":2.7,"user_usec":350697.7,"real_usec":366805.3,"est_time":1.65,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":18,"user_time":14.41,"real_time":15.17,"user_ops":1.2,"real_ops":1.2,"user_usec":800555.6,"real_usec":842573.8,"est_time":3.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":9,"user_time":14.48,"real_time":15.19,"user_ops":0.6,"real_ops":0.6,"user_usec":1608888.9,"real_usec":1687343.6,"est_time":5.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1216","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":243326,"user_time":18.18,"real_time":20.43,"user_ops":13384.3,"real_ops":11910.5,"user_usec":74.7,"real_usec":84.0,"est_time":7.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":261446,"user_time":20.01,"real_time":22.4,"user_ops":13065.8,"real_ops":11672.0,"user_usec":76.5,"real_usec":85.7,"est_time":7.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":258694,"user_time":20.21,"real_time":22.59,"user_ops":12800.3,"real_ops":11450.5,"user_usec":78.1,"real_usec":87.3,"est_time":7.65,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":234057,"user_time":18.7,"real_time":20.85,"user_ops":12516.4,"real_ops":11224.4,"user_usec":79.9,"real_usec":89.1,"est_time":7.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":240941,"user_time":18.89,"real_time":21.13,"user_ops":12754.9,"real_ops":11401.0,"user_usec":78.4,"real_usec":87.7,"est_time":4.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":236307,"user_time":19.21,"real_time":21.37,"user_ops":12301.2,"real_ops":11059.9,"user_usec":81.3,"real_usec":90.4,"est_time":4.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":208271,"user_time":17.92,"real_time":19.85,"user_ops":11622.3,"real_ops":10490.3,"user_usec":86.0,"real_usec":95.3,"est_time":4.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":180705,"user_time":16.85,"real_time":18.63,"user_ops":10724.3,"real_ops":9701.7,"user_usec":93.2,"real_usec":103.1,"est_time":4.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":144564,"user_time":16.04,"real_time":17.48,"user_ops":9012.7,"real_ops":8272.1,"user_usec":111.0,"real_usec":120.9,"est_time":5.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":107789,"user_time":15.65,"real_time":16.86,"user_ops":6887.5,"real_ops":6394.4,"user_usec":145.2,"real_usec":156.4,"est_time":3.14,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":69818,"user_time":15.0,"real_time":15.84,"user_ops":4654.5,"real_ops":4408.9,"user_usec":214.8,"real_usec":226.8,"est_time":4.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":41513,"user_time":14.69,"real_time":15.36,"user_ops":2825.9,"real_ops":2703.0,"user_usec":353.9,"real_usec":370.0,"est_time":3.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":25180,"user_time":14.97,"real_time":15.53,"user_ops":1682.0,"real_ops":1621.3,"user_usec":594.5,"real_usec":616.8,"est_time":2.43,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":13241,"user_time":14.82,"real_time":15.24,"user_ops":893.5,"real_ops":868.9,"user_usec":1119.3,"real_usec":1150.9,"est_time":2.21,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":6857,"user_time":14.89,"real_time":15.65,"user_ops":460.5,"real_ops":438.3,"user_usec":2171.5,"real_usec":2281.6,"est_time":2.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"find_many","iterations":3692,"user_time":15.0,"real_time":15.7,"user_ops":246.1,"real_ops":235.1,"user_usec":4062.8,"real_usec":4252.9,"est_time":2.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":273066,"user_time":17.66,"real_time":20.11,"user_ops":15462.4,"real_ops":13581.9,"user_usec":64.7,"real_usec":73.6,"est_time":7.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":285767,"user_time":18.86,"real_time":21.47,"user_ops":15152.0,"real_ops":13310.7,"user_usec":66.0,"real_usec":75.1,"est_time":7.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":267130,"user_time":18.16,"real_time":20.59,"user_ops":14709.8,"real_ops":12973.1,"user_usec":68.0,"real_usec":77.1,"est_time":7.2,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":240941,"user_time":17.57,"real_time":19.74,"user_ops":13713.2,"real_ops":12205.5,"user_usec":72.9,"real_usec":81.9,"est_time":3.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":219428,"user_time":18.42,"real_time":20.41,"user_ops":11912.5,"real_ops":10748.6,"user_usec":83.9,"real_usec":93.0,"est_time":4.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":170666,"user_time":17.27,"real_time":18.87,"user_ops":9882.2,"real_ops":9042.3,"user_usec":101.2,"real_usec":110.6,"est_time":4.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":121663,"user_time":17.82,"real_time":18.99,"user_ops":6827.3,"real_ops":6406.1,"user_usec":146.5,"real_usec":156.1,"est_time":5.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":79792,"user_time":17.3,"real_time":18.08,"user_ops":4612.3,"real_ops":4412.3,"user_usec":216.8,"real_usec":226.6,"est_time":3.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":45176,"user_time":16.24,"real_time":16.72,"user_ops":2781.8,"real_ops":2701.9,"user_usec":359.5,"real_usec":370.1,"est_time":2.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":25180,"user_time":15.97,"real_time":16.28,"user_ops":1576.7,"real_ops":1546.7,"user_usec":634.2,"real_usec":646.5,"est_time":2.48,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":13016,"user_time":15.22,"real_time":15.4,"user_ops":855.2,"real_ops":845.3,"user_usec":1169.3,"real_usec":1183.0,"est_time":2.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":6736,"user_time":15.3,"real_time":15.47,"user_ops":440.3,"real_ops":435.3,"user_usec":2271.4,"real_usec":2297.2,"est_time":1.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":3428,"user_time":15.29,"real_time":15.35,"user_ops":224.2,"real_ops":223.3,"user_usec":4460.3,"real_usec":4478.6,"est_time":1.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":1714,"user_time":15.15,"real_time":15.2,"user_ops":113.1,"real_ops":112.7,"user_usec":8839.0,"real_usec":8869.4,"est_time":1.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":872,"user_time":15.32,"real_time":15.35,"user_ops":56.9,"real_ops":56.8,"user_usec":17568.8,"real_usec":17598.3,"est_time":1.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"find_many","iterations":436,"user_time":15.32,"real_time":15.51,"user_ops":28.5,"real_ops":28.1,"user_usec":35137.6,"real_usec":35575.5,"est_time":1.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":189046,"user_time":17.99,"real_time":19.77,"user_ops":10508.4,"real_ops":9563.4,"user_usec":95.2,"real_usec":104.6,"est_time":4.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":175542,"user_time":18.3,"real_time":19.96,"user_ops":9592.5,"real_ops":8795.3,"user_usec":104.2,"real_usec":113.7,"est_time":5.23,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":139636,"user_time":18.26,"real_time":19.64,"user_ops":7647.1,"real_ops":7108.6,"user_usec":130.8,"real_usec":140.7,"est_time":6.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":107789,"user_time":17.87,"real_time":18.94,"user_ops":6031.8,"real_ops":5691.4,"user_usec":165.8,"real_usec":175.7,"est_time":4.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":69033,"user_time":16.9,"real_time":17.62,"user_ops":4084.8,"real_ops":3918.3,"user_usec":244.8,"real_usec":255.2,"est_time":5.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":40960,"user_time":16.69,"real_time":17.15,"user_ops":2454.2,"real_ops":2389.0,"user_usec":407.5,"real_usec":418.6,"est_time":5.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":22260,"user_time":15.73,"real_time":16.0,"user_ops":1415.1,"real_ops":1391.3,"user_usec":706.6,"real_usec":718.8,"est_time":4.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":11462,"user_time":15.52,"real_time":15.67,"user_ops":738.5,"real_ops":731.4,"user_usec":1354.0,"real_usec":1367.3,"est_time":3.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":5647,"user_time":15.36,"real_time":15.46,"user_ops":367.6,"real_ops":365.3,"user_usec":2720.0,"real_usec":2737.4,"est_time":3.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":2823,"user_time":15.4,"real_time":15.46,"user_ops":183.3,"real_ops":182.6,"user_usec":5455.2,"real_usec":5476.7,"est_time":4.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":1411,"user_time":15.17,"real_time":15.22,"user_ops":93.0,"real_ops":92.7,"user_usec":10751.2,"real_usec":10788.4,"est_time":3.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":666,"user_time":15.1,"real_time":15.14,"user_ops":44.1,"real_ops":44.0,"user_usec":22672.7,"real_usec":22727.8,"est_time":3.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":320,"user_time":15.1,"real_time":15.26,"user_ops":21.2,"real_ops":21.0,"user_usec":47187.5,"real_usec":47684.7,"est_time":3.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":157,"user_time":15.0,"real_time":15.16,"user_ops":10.5,"real_ops":10.4,"user_usec":95541.4,"real_usec":96573.1,"est_time":3.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"find_many","iterations":75,"user_time":15.13,"real_time":15.28,"user_ops":5.0,"real_ops":4.9,"user_usec":201733.3,"real_usec":203768.9,"est_time":2.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":201442,"user_time":18.39,"real_time":20.24,"user_ops":10953.9,"real_ops":9951.2,"user_usec":91.3,"real_usec":100.5,"est_time":4.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":175542,"user_time":17.39,"real_time":19.03,"user_ops":10094.4,"real_ops":9225.7,"user_usec":99.1,"real_usec":108.4,"est_time":5.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":151703,"user_time":18.32,"real_time":19.8,"user_ops":8280.7,"real_ops":7663.2,"user_usec":120.8,"real_usec":130.5,"est_time":5.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":113777,"user_time":17.45,"real_time":18.54,"user_ops":6520.2,"real_ops":6136.8,"user_usec":153.4,"real_usec":163.0,"est_time":3.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":73142,"user_time":16.9,"real_time":17.71,"user_ops":4327.9,"real_ops":4129.6,"user_usec":231.1,"real_usec":242.2,"est_time":5.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":42082,"user_time":17.08,"real_time":17.62,"user_ops":2463.8,"real_ops":2388.9,"user_usec":405.9,"real_usec":418.6,"est_time":4.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":23630,"user_time":17.52,"real_time":17.83,"user_ops":1348.7,"real_ops":1325.6,"user_usec":741.4,"real_usec":754.4,"est_time":4.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":12190,"user_time":17.0,"real_time":17.22,"user_ops":717.1,"real_ops":707.8,"user_usec":1394.6,"real_usec":1412.8,"est_time":3.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":6095,"user_time":17.36,"real_time":17.53,"user_ops":351.1,"real_ops":347.6,"user_usec":2848.2,"real_usec":2876.5,"est_time":3.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":3000,"user_time":17.04,"real_time":17.15,"user_ops":176.1,"real_ops":174.9,"user_usec":5680.0,"real_usec":5718.2,"est_time":3.63,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":1500,"user_time":16.85,"real_time":16.92,"user_ops":89.0,"real_ops":88.6,"user_usec":11233.3,"real_usec":11281.7,"est_time":3.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":685,"user_time":16.11,"real_time":16.18,"user_ops":42.5,"real_ops":42.3,"user_usec":23518.2,"real_usec":23620.5,"est_time":3.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":333,"user_time":16.17,"real_time":16.35,"user_ops":20.6,"real_ops":20.4,"user_usec":48558.6,"real_usec":49088.8,"est_time":3.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":164,"user_time":16.39,"real_time":16.6,"user_ops":10.0,"real_ops":9.9,"user_usec":99939.0,"real_usec":101214.3,"est_time":3.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":78,"user_time":16.02,"real_time":16.18,"user_ops":4.9,"real_ops":4.8,"user_usec":205384.6,"real_usec":207473.0,"est_time":2.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":39,"user_time":16.66,"real_time":16.86,"user_ops":2.3,"real_ops":2.3,"user_usec":427179.5,"real_usec":432373.1,"est_time":1.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":18,"user_time":15.83,"real_time":16.06,"user_ops":1.1,"real_ops":1.1,"user_usec":879444.4,"real_usec":892487.1,"est_time":3.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"find_many","iterations":8,"user_time":14.85,"real_time":15.02,"user_ops":0.5,"real_ops":0.5,"user_usec":1856250.0,"real_usec":1877570.5,"est_time":7.3,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":285767,"user_time":17.69,"real_time":20.25,"user_ops":16154.2,"real_ops":14113.6,"user_usec":61.9,"real_usec":70.9,"est_time":7.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":178086,"user_time":17.67,"real_time":19.37,"user_ops":10078.4,"real_ops":9192.2,"user_usec":99.2,"real_usec":108.8,"est_time":5.27,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":97523,"user_time":17.22,"real_time":18.2,"user_ops":5663.4,"real_ops":5357.1,"user_usec":176.6,"real_usec":186.7,"est_time":4.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":51200,"user_time":16.95,"real_time":17.49,"user_ops":3020.6,"real_ops":2927.3,"user_usec":331.1,"real_usec":341.6,"est_time":3.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":26482,"user_time":16.84,"real_time":17.14,"user_ops":1572.6,"real_ops":1545.4,"user_usec":635.9,"real_usec":647.1,"est_time":3.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":13241,"user_time":16.61,"real_time":16.77,"user_ops":797.2,"real_ops":789.3,"user_usec":1254.4,"real_usec":1266.9,"est_time":3.32,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":6508,"user_time":16.35,"real_time":16.44,"user_ops":398.0,"real_ops":395.9,"user_usec":2512.3,"real_usec":2525.9,"est_time":3.36,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":3199,"user_time":16.23,"real_time":16.3,"user_ops":197.1,"real_ops":196.3,"user_usec":5073.5,"real_usec":5093.8,"est_time":3.51,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":1573,"user_time":16.34,"real_time":16.39,"user_ops":96.3,"real_ops":96.0,"user_usec":10387.8,"real_usec":10421.0,"est_time":3.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":761,"user_time":16.08,"real_time":16.13,"user_ops":47.3,"real_ops":47.2,"user_usec":21130.1,"real_usec":21194.6,"est_time":3.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":375,"user_time":16.18,"real_time":16.21,"user_ops":23.2,"real_ops":23.1,"user_usec":43146.7,"real_usec":43232.4,"est_time":3.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":184,"user_time":16.12,"real_time":16.16,"user_ops":11.4,"real_ops":11.4,"user_usec":87608.7,"real_usec":87806.8,"est_time":2.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_many","iterations":89,"user_time":16.12,"real_time":16.23,"user_ops":5.5,"real_ops":5.5,"user_usec":181123.6,"real_usec":182330.3,"est_time":2.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":289129,"user_time":18.05,"real_time":20.61,"user_ops":16018.2,"real_ops":14027.0,"user_usec":62.4,"real_usec":71.3,"est_time":6.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":166054,"user_time":15.95,"real_time":17.48,"user_ops":10410.9,"real_ops":9500.2,"user_usec":96.1,"real_usec":105.3,"est_time":5.28,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":104135,"user_time":17.66,"real_time":18.74,"user_ops":5896.7,"real_ops":5557.4,"user_usec":169.6,"real_usec":179.9,"est_time":4.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":55854,"user_time":18.24,"real_time":18.9,"user_ops":3062.2,"real_ops":2956.0,"user_usec":326.6,"real_usec":338.3,"est_time":3.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":27927,"user_time":18.12,"real_time":18.49,"user_ops":1541.2,"real_ops":1510.3,"user_usec":648.8,"real_usec":662.1,"est_time":3.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":13241,"user_time":17.73,"real_time":17.95,"user_ops":746.8,"real_ops":737.6,"user_usec":1339.0,"real_usec":1355.7,"est_time":3.35,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":6857,"user_time":18.43,"real_time":18.64,"user_ops":372.1,"real_ops":367.9,"user_usec":2687.8,"real_usec":2718.4,"est_time":3.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":3200,"user_time":17.33,"real_time":17.44,"user_ops":184.7,"real_ops":183.5,"user_usec":5415.6,"real_usec":5449.2,"est_time":3.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":1745,"user_time":19.06,"real_time":19.18,"user_ops":91.6,"real_ops":91.0,"user_usec":10922.6,"real_usec":10990.9,"est_time":3.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":813,"user_time":18.47,"real_time":18.57,"user_ops":44.0,"real_ops":43.8,"user_usec":22718.3,"real_usec":22847.0,"est_time":3.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":399,"user_time":18.74,"real_time":18.9,"user_ops":21.3,"real_ops":21.1,"user_usec":46967.4,"real_usec":47377.4,"est_time":3.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":187,"user_time":18.27,"real_time":18.35,"user_ops":10.2,"real_ops":10.2,"user_usec":97700.5,"real_usec":98142.6,"est_time":3.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":101,"user_time":19.59,"real_time":19.76,"user_ops":5.2,"real_ops":5.1,"user_usec":193960.4,"real_usec":195675.8,"est_time":2.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":49,"user_time":19.44,"real_time":19.61,"user_ops":2.5,"real_ops":2.5,"user_usec":396734.7,"real_usec":400279.7,"est_time":1.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":22,"user_time":18.01,"real_time":18.19,"user_ops":1.2,"real_ops":1.2,"user_usec":818636.4,"real_usec":826633.5,"est_time":3.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_many","iterations":10,"user_time":15.01,"real_time":15.31,"user_ops":0.7,"real_ops":0.7,"user_usec":1501000.0,"real_usec":1530864.2,"est_time":6.51,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1249","tag":"suite_find","status":"OK"},
]; // 101 minutes

View File

@ -0,0 +1,590 @@
exp_series_suite_insert_many_c = [
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":183402,"user_time":15.58,"real_time":17.55,"user_ops":11771.6,"real_ops":10450.1,"user_usec":85.0,"real_usec":95.7,"est_time":2.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":85333,"user_time":13.46,"real_time":14.54,"user_ops":25359.0,"real_ops":23472.7,"user_usec":39.4,"real_usec":42.6,"est_time":3.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":33032,"user_time":14.25,"real_time":15.39,"user_ops":37088.6,"real_ops":34330.5,"user_usec":27.0,"real_usec":29.1,"est_time":4.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":9253,"user_time":14.23,"real_time":15.21,"user_ops":41615.7,"real_ops":38934.1,"user_usec":24.0,"real_usec":25.7,"est_time":4.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":2704,"user_time":14.17,"real_time":15.17,"user_ops":48851.4,"real_ops":45640.1,"user_usec":20.5,"real_usec":21.9,"est_time":3.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":676,"user_time":13.91,"real_time":14.77,"user_ops":49764.5,"real_ops":46878.5,"user_usec":20.1,"real_usec":21.3,"est_time":3.57,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":181,"user_time":15.43,"real_time":16.2,"user_ops":48047.7,"real_ops":45761.1,"user_usec":20.8,"real_usec":21.9,"est_time":3.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":191999,"user_time":15.71,"real_time":17.89,"user_ops":12221.5,"real_ops":10734.5,"user_usec":81.8,"real_usec":93.2,"est_time":2.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":109714,"user_time":15.83,"real_time":17.76,"user_ops":27723.1,"real_ops":24711.0,"user_usec":36.1,"real_usec":40.5,"est_time":3.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":37925,"user_time":14.47,"real_time":15.9,"user_ops":41935.0,"real_ops":38162.8,"user_usec":23.8,"real_usec":26.2,"est_time":4.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":11130,"user_time":14.49,"real_time":15.59,"user_ops":49159.4,"real_ops":45686.2,"user_usec":20.3,"real_usec":21.9,"est_time":3.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":2953,"user_time":14.85,"real_time":17.33,"user_ops":50906.9,"real_ops":43609.6,"user_usec":19.6,"real_usec":22.9,"est_time":3.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":761,"user_time":15.02,"real_time":17.56,"user_ops":51881.8,"real_ops":44376.5,"user_usec":19.3,"real_usec":22.5,"est_time":3.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":181,"user_time":14.95,"real_time":15.76,"user_ops":49590.4,"real_ops":47054.5,"user_usec":20.2,"real_usec":21.3,"est_time":3.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":195047,"user_time":15.01,"real_time":17.1,"user_ops":12994.5,"real_ops":11403.9,"user_usec":77.0,"real_usec":87.7,"est_time":2.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":107789,"user_time":14.85,"real_time":16.89,"user_ops":29034.1,"real_ops":25533.6,"user_usec":34.4,"real_usec":39.2,"est_time":3.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":40960,"user_time":15.01,"real_time":16.76,"user_ops":43661.6,"real_ops":39113.3,"user_usec":22.9,"real_usec":25.6,"est_time":4.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":10105,"user_time":13.09,"real_time":14.21,"user_ops":49405.7,"real_ops":45518.4,"user_usec":20.2,"real_usec":22.0,"est_time":4.64,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":3000,"user_time":14.19,"real_time":17.13,"user_ops":54122.6,"real_ops":44825.8,"user_usec":18.5,"real_usec":22.3,"est_time":3.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":727,"user_time":14.59,"real_time":17.46,"user_ops":51024.5,"real_ops":42643.1,"user_usec":19.6,"real_usec":23.5,"est_time":6.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":166,"user_time":14.28,"real_time":15.35,"user_ops":47614.6,"real_ops":44281.9,"user_usec":21.0,"real_usec":22.6,"est_time":3.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":189046,"user_time":15.0,"real_time":17.99,"user_ops":12603.1,"real_ops":10507.7,"user_usec":79.3,"real_usec":95.2,"est_time":2.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":99096,"user_time":14.2,"real_time":16.12,"user_ops":27914.4,"real_ops":24585.5,"user_usec":35.8,"real_usec":40.7,"est_time":2.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":37925,"user_time":14.47,"real_time":17.72,"user_ops":41935.0,"real_ops":34239.9,"user_usec":23.8,"real_usec":29.2,"est_time":3.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":9974,"user_time":13.31,"real_time":16.28,"user_ops":47959.1,"real_ops":39211.7,"user_usec":20.9,"real_usec":25.5,"est_time":3.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":2630,"user_time":14.44,"real_time":17.51,"user_ops":46626.0,"real_ops":38443.7,"user_usec":21.4,"real_usec":26.0,"est_time":3.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":774,"user_time":15.94,"real_time":18.78,"user_ops":49722.5,"real_ops":42194.2,"user_usec":20.1,"real_usec":23.7,"est_time":3.64,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":181,"user_time":15.44,"real_time":18.28,"user_ops":48016.6,"real_ops":40546.3,"user_usec":20.8,"real_usec":24.7,"est_time":3.56,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":178086,"user_time":14.33,"real_time":16.82,"user_ops":12427.5,"real_ops":10588.9,"user_usec":80.5,"real_usec":94.4,"est_time":2.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":102399,"user_time":16.29,"real_time":19.58,"user_ops":25144.0,"real_ops":20915.9,"user_usec":39.8,"real_usec":47.8,"est_time":3.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":33391,"user_time":14.9,"real_time":18.57,"user_ops":35856.1,"real_ops":28763.8,"user_usec":27.9,"real_usec":34.8,"est_time":4.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":10240,"user_time":15.7,"real_time":22.3,"user_ops":41742.7,"real_ops":29383.6,"user_usec":24.0,"real_usec":34.0,"est_time":3.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":2630,"user_time":15.09,"real_time":21.63,"user_ops":44617.6,"real_ops":31121.2,"user_usec":22.4,"real_usec":32.1,"est_time":3.76,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":648,"user_time":15.65,"real_time":22.39,"user_ops":42399.5,"real_ops":29640.5,"user_usec":23.6,"real_usec":33.7,"est_time":3.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":142,"user_time":15.25,"real_time":18.98,"user_ops":38139.8,"real_ops":30640.7,"user_usec":26.2,"real_usec":32.6,"est_time":4.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":168328,"user_time":15.17,"real_time":18.49,"user_ops":11096.1,"real_ops":9103.3,"user_usec":90.1,"real_usec":109.9,"est_time":3.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":83027,"user_time":15.08,"real_time":24.07,"user_ops":22023.1,"real_ops":13795.5,"user_usec":45.4,"real_usec":72.5,"est_time":3.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":28981,"user_time":15.57,"real_time":37.17,"user_ops":29781.4,"real_ops":12475.0,"user_usec":33.6,"real_usec":80.2,"est_time":3.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":7529,"user_time":14.85,"real_time":36.04,"user_ops":32448.2,"real_ops":13369.5,"user_usec":30.8,"real_usec":74.8,"est_time":3.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":1882,"user_time":14.74,"real_time":34.31,"user_ops":32686.0,"real_ops":14043.6,"user_usec":30.6,"real_usec":71.2,"est_time":3.25,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":489,"user_time":14.94,"real_time":35.2,"user_ops":33516.5,"real_ops":14225.3,"user_usec":29.8,"real_usec":70.3,"est_time":5.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":53,"user_time":9.04,"real_time":14.69,"user_ops":24014.2,"real_ops":14775.2,"user_usec":41.6,"real_usec":67.7,"est_time":2.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":138067,"user_time":14.97,"real_time":22.96,"user_ops":9222.9,"real_ops":6012.8,"user_usec":108.4,"real_usec":166.3,"est_time":3.56,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":55854,"user_time":14.89,"real_time":33.8,"user_ops":15004.4,"real_ops":6609.9,"user_usec":66.6,"real_usec":151.3,"est_time":2.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":16879,"user_time":15.13,"real_time":49.44,"user_ops":17849.6,"real_ops":5462.3,"user_usec":56.0,"real_usec":183.1,"est_time":5.58,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":4465,"user_time":15.5,"real_time":46.65,"user_ops":18436.1,"real_ops":6126.2,"user_usec":54.2,"real_usec":163.2,"est_time":6.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":1116,"user_time":15.18,"real_time":44.64,"user_ops":18820.6,"real_ops":6399.7,"user_usec":53.1,"real_usec":156.3,"est_time":6.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":285,"user_time":15.0,"real_time":37.4,"user_ops":19456.0,"real_ops":7803.1,"user_usec":51.4,"real_usec":128.2,"est_time":5.29,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":192000,"user_time":15.1,"real_time":17.52,"user_ops":12715.2,"real_ops":10956.6,"user_usec":78.6,"real_usec":91.3,"est_time":2.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":105931,"user_time":14.92,"real_time":16.89,"user_ops":28399.7,"real_ops":25088.7,"user_usec":35.2,"real_usec":39.9,"est_time":3.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":39896,"user_time":15.26,"real_time":17.05,"user_ops":41830.7,"real_ops":37435.1,"user_usec":23.9,"real_usec":26.7,"est_time":4.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":11130,"user_time":14.9,"real_time":16.13,"user_ops":47806.7,"real_ops":44158.4,"user_usec":20.9,"real_usec":22.6,"est_time":4.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":2865,"user_time":14.96,"real_time":16.21,"user_ops":49026.7,"real_ops":45258.0,"user_usec":20.4,"real_usec":22.1,"est_time":4.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":705,"user_time":14.87,"real_time":16.75,"user_ops":48548.8,"real_ops":43106.9,"user_usec":20.6,"real_usec":23.2,"est_time":3.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":164,"user_time":14.6,"real_time":15.65,"user_ops":46009.9,"real_ops":42922.3,"user_usec":21.7,"real_usec":23.3,"est_time":4.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":189046,"user_time":14.74,"real_time":16.87,"user_ops":12825.4,"real_ops":11206.6,"user_usec":78.0,"real_usec":89.2,"est_time":2.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":105931,"user_time":14.85,"real_time":16.9,"user_ops":28533.6,"real_ops":25072.7,"user_usec":35.0,"real_usec":39.9,"est_time":3.36,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":37925,"user_time":14.74,"real_time":16.2,"user_ops":41166.9,"real_ops":37449.1,"user_usec":24.3,"real_usec":26.7,"est_time":4.31,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":11815,"user_time":15.77,"real_time":17.02,"user_ops":47949.3,"real_ops":44440.7,"user_usec":20.9,"real_usec":22.5,"est_time":4.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":3000,"user_time":15.56,"real_time":18.29,"user_ops":49357.3,"real_ops":41991.9,"user_usec":20.3,"real_usec":23.8,"est_time":4.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":705,"user_time":14.97,"real_time":16.02,"user_ops":48224.4,"real_ops":45063.0,"user_usec":20.7,"real_usec":22.2,"est_time":3.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":166,"user_time":14.84,"real_time":15.78,"user_ops":45817.8,"real_ops":43080.8,"user_usec":21.8,"real_usec":23.2,"est_time":3.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":186181,"user_time":14.76,"real_time":16.82,"user_ops":12613.9,"real_ops":11067.7,"user_usec":79.3,"real_usec":90.4,"est_time":2.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":105931,"user_time":15.21,"real_time":17.31,"user_ops":27858.3,"real_ops":24478.9,"user_usec":35.9,"real_usec":40.9,"est_time":3.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":38399,"user_time":14.96,"real_time":16.48,"user_ops":41068.4,"real_ops":37290.1,"user_usec":24.3,"real_usec":26.8,"est_time":4.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":11130,"user_time":14.96,"real_time":16.27,"user_ops":47615.0,"real_ops":43779.9,"user_usec":21.0,"real_usec":22.8,"est_time":4.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":2909,"user_time":14.84,"real_time":16.59,"user_ops":50182.2,"real_ops":44885.5,"user_usec":19.9,"real_usec":22.3,"est_time":4.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":695,"user_time":15.26,"real_time":16.8,"user_ops":46637.0,"real_ops":42370.3,"user_usec":21.4,"real_usec":23.6,"est_time":4.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":164,"user_time":14.56,"real_time":15.86,"user_ops":46136.3,"real_ops":42360.4,"user_usec":21.7,"real_usec":23.6,"est_time":4.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":183402,"user_time":14.54,"real_time":16.86,"user_ops":12613.6,"real_ops":10879.1,"user_usec":79.3,"real_usec":91.9,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":105931,"user_time":15.33,"real_time":19.35,"user_ops":27640.2,"real_ops":21898.2,"user_usec":36.2,"real_usec":45.7,"est_time":3.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":37463,"user_time":14.52,"real_time":29.36,"user_ops":41281.5,"real_ops":20416.4,"user_usec":24.2,"real_usec":49.0,"est_time":4.6,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":11462,"user_time":15.44,"real_time":162.54,"user_ops":47510.9,"real_ops":4513.2,"user_usec":21.0,"real_usec":221.6,"est_time":21.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":3047,"user_time":15.15,"real_time":20.23,"user_ops":51487.3,"real_ops":38549.7,"user_usec":19.4,"real_usec":25.9,"est_time":9.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":727,"user_time":14.99,"real_time":18.78,"user_ops":49663.0,"real_ops":39645.5,"user_usec":20.1,"real_usec":25.2,"est_time":3.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":176,"user_time":15.15,"real_time":16.86,"user_ops":47583.9,"real_ops":42763.6,"user_usec":21.0,"real_usec":23.4,"est_time":3.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":186181,"user_time":14.92,"real_time":19.32,"user_ops":12478.6,"real_ops":9635.3,"user_usec":80.1,"real_usec":103.8,"est_time":2.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":97523,"user_time":15.07,"real_time":21.89,"user_ops":25885.3,"real_ops":17817.1,"user_usec":38.6,"real_usec":56.1,"est_time":8.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":36141,"user_time":15.18,"real_time":179.08,"user_ops":38093.3,"real_ops":3229.1,"user_usec":26.3,"real_usec":309.7,"est_time":17.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":10105,"user_time":14.79,"real_time":172.43,"user_ops":43726.8,"real_ops":3750.7,"user_usec":22.9,"real_usec":266.6,"est_time":41.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":2742,"user_time":15.18,"real_time":129.52,"user_ops":46241.9,"real_ops":5419.8,"user_usec":21.6,"real_usec":184.5,"est_time":32.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":676,"user_time":15.03,"real_time":64.96,"user_ops":46056.2,"real_ops":10656.0,"user_usec":21.7,"real_usec":93.8,"est_time":9.18,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":153,"user_time":14.87,"real_time":93.34,"user_ops":42144.5,"real_ops":6714.2,"user_usec":23.7,"real_usec":148.9,"est_time":15.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":168328,"user_time":14.86,"real_time":87.18,"user_ops":11327.6,"real_ops":1930.9,"user_usec":88.3,"real_usec":517.9,"est_time":15.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":84164,"user_time":15.12,"real_time":131.45,"user_ops":22265.6,"real_ops":2561.1,"user_usec":44.9,"real_usec":390.5,"est_time":15.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":27927,"user_time":14.88,"real_time":230.02,"user_ops":30029.0,"real_ops":1942.6,"user_usec":33.3,"real_usec":514.8,"est_time":24.44,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":7836,"user_time":15.64,"real_time":61.54,"user_ops":32065.5,"real_ops":8149.7,"user_usec":31.2,"real_usec":122.7,"est_time":8.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":1882,"user_time":15.31,"real_time":31.31,"user_ops":31469.1,"real_ops":15386.4,"user_usec":31.8,"real_usec":65.0,"est_time":5.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":436,"user_time":13.47,"real_time":87.0,"user_ops":33145.1,"real_ops":5131.7,"user_usec":30.2,"real_usec":194.9,"est_time":3.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":124,"user_time":14.99,"real_time":44.92,"user_ops":33882.9,"real_ops":11308.0,"user_usec":29.5,"real_usec":88.4,"est_time":9.46,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":132129,"user_time":14.93,"real_time":31.06,"user_ops":8849.9,"real_ops":4254.2,"user_usec":113.0,"real_usec":235.1,"est_time":5.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":53894,"user_time":15.32,"real_time":302.09,"user_ops":14071.5,"real_ops":713.6,"user_usec":71.1,"real_usec":1401.3,"est_time":4.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":15058,"user_time":14.91,"real_time":659.52,"user_ops":16158.8,"real_ops":365.3,"user_usec":61.9,"real_usec":2737.4,"est_time":103.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":3918,"user_time":14.83,"real_time":33.48,"user_ops":16908.4,"real_ops":7490.4,"user_usec":59.1,"real_usec":133.5,"est_time":6.31,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":1054,"user_time":15.66,"real_time":41.78,"user_ops":17230.1,"real_ops":6458.8,"user_usec":58.0,"real_usec":154.8,"est_time":4.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":266,"user_time":15.21,"real_time":44.85,"user_ops":17908.2,"real_ops":6073.4,"user_usec":55.8,"real_usec":164.7,"est_time":5.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":166054,"user_time":15.17,"real_time":23.56,"user_ops":10946.2,"real_ops":7049.6,"user_usec":91.4,"real_usec":141.9,"est_time":3.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":104135,"user_time":15.08,"real_time":17.97,"user_ops":27622.0,"real_ops":23180.1,"user_usec":36.2,"real_usec":43.1,"est_time":5.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":37925,"user_time":14.82,"real_time":16.33,"user_ops":40944.7,"real_ops":37151.6,"user_usec":24.4,"real_usec":26.9,"est_time":4.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":11130,"user_time":14.7,"real_time":15.52,"user_ops":48457.1,"real_ops":45883.5,"user_usec":20.6,"real_usec":21.8,"est_time":3.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":2999,"user_time":15.15,"real_time":17.01,"user_ops":50676.2,"real_ops":45129.5,"user_usec":19.7,"real_usec":22.2,"est_time":3.58,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":761,"user_time":14.79,"real_time":15.97,"user_ops":52688.6,"real_ops":48796.7,"user_usec":19.0,"real_usec":20.5,"est_time":3.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":184,"user_time":15.03,"real_time":16.06,"user_ops":50144.0,"real_ops":46933.4,"user_usec":19.9,"real_usec":21.3,"est_time":3.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":189046,"user_time":14.8,"real_time":16.76,"user_ops":12773.4,"real_ops":11279.4,"user_usec":78.3,"real_usec":88.7,"est_time":2.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":100721,"user_time":14.7,"real_time":16.69,"user_ops":27407.1,"real_ops":24143.8,"user_usec":36.5,"real_usec":41.4,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":36571,"user_time":14.7,"real_time":16.06,"user_ops":39805.2,"real_ops":36440.2,"user_usec":25.1,"real_usec":27.4,"est_time":4.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":10816,"user_time":14.69,"real_time":17.89,"user_ops":47122.1,"real_ops":38699.5,"user_usec":21.2,"real_usec":25.8,"est_time":3.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":2865,"user_time":14.84,"real_time":17.39,"user_ops":49423.2,"real_ops":42177.1,"user_usec":20.2,"real_usec":23.7,"est_time":3.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":727,"user_time":15.37,"real_time":17.96,"user_ops":48435.1,"real_ops":41447.9,"user_usec":20.6,"real_usec":24.1,"est_time":3.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":164,"user_time":14.84,"real_time":17.55,"user_ops":45265.8,"real_ops":38277.1,"user_usec":22.1,"real_usec":26.1,"est_time":3.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":178086,"user_time":14.86,"real_time":17.15,"user_ops":11984.3,"real_ops":10384.4,"user_usec":83.4,"real_usec":96.3,"est_time":2.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":93090,"user_time":15.65,"real_time":98.59,"user_ops":23793.0,"real_ops":3776.8,"user_usec":42.0,"real_usec":264.8,"est_time":2.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":31346,"user_time":14.81,"real_time":18.37,"user_ops":33864.7,"real_ops":27300.7,"user_usec":29.5,"real_usec":36.6,"est_time":4.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":9035,"user_time":14.8,"real_time":17.43,"user_ops":39070.3,"real_ops":33168.5,"user_usec":25.6,"real_usec":30.1,"est_time":4.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":2400,"user_time":14.84,"real_time":17.64,"user_ops":41401.6,"real_ops":34838.8,"user_usec":24.2,"real_usec":28.7,"est_time":3.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":592,"user_time":15.19,"real_time":77.13,"user_ops":39908.4,"real_ops":7859.1,"user_usec":25.1,"real_usec":127.2,"est_time":3.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":134,"user_time":15.75,"real_time":18.1,"user_ops":34848.5,"real_ops":30317.5,"user_usec":28.7,"real_usec":33.0,"est_time":3.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":141241,"user_time":14.6,"real_time":59.51,"user_ops":9674.0,"real_ops":2373.2,"user_usec":103.4,"real_usec":421.4,"est_time":2.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":67516,"user_time":15.0,"real_time":20.12,"user_ops":18004.3,"real_ops":13421.7,"user_usec":55.5,"real_usec":74.5,"est_time":4.18,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":21942,"user_time":14.96,"real_time":22.94,"user_ops":23467.4,"real_ops":15303.5,"user_usec":42.6,"real_usec":65.3,"est_time":2.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":5818,"user_time":14.5,"real_time":21.28,"user_ops":25679.4,"real_ops":17498.1,"user_usec":38.9,"real_usec":57.1,"est_time":3.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":1523,"user_time":14.98,"real_time":24.09,"user_ops":26027.2,"real_ops":16187.8,"user_usec":38.4,"real_usec":61.8,"est_time":3.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":380,"user_time":15.29,"real_time":18.18,"user_ops":25449.3,"real_ops":21404.8,"user_usec":39.3,"real_usec":46.7,"est_time":2.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":83,"user_time":14.84,"real_time":16.08,"user_ops":22908.9,"real_ops":21147.0,"user_usec":43.7,"real_usec":47.3,"est_time":2.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":90352,"user_time":14.84,"real_time":16.82,"user_ops":6088.4,"real_ops":5371.6,"user_usec":164.2,"real_usec":186.2,"est_time":2.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":33032,"user_time":15.13,"real_time":16.98,"user_ops":8732.8,"real_ops":7780.4,"user_usec":114.5,"real_usec":128.5,"est_time":3.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":9365,"user_time":14.83,"real_time":16.73,"user_ops":10103.8,"real_ops":8954.1,"user_usec":99.0,"real_usec":111.7,"est_time":3.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":2341,"user_time":14.88,"real_time":16.72,"user_ops":10068.8,"real_ops":8960.9,"user_usec":99.3,"real_usec":111.6,"est_time":3.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":592,"user_time":14.95,"real_time":17.27,"user_ops":10137.3,"real_ops":8772.9,"user_usec":98.6,"real_usec":114.0,"est_time":2.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":144,"user_time":14.66,"real_time":16.27,"user_ops":10058.4,"real_ops":9063.1,"user_usec":99.4,"real_usec":110.3,"est_time":2.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":34,"user_time":15.51,"real_time":16.3,"user_ops":8979.0,"real_ops":8543.9,"user_usec":111.4,"real_usec":117.0,"est_time":2.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":38400,"user_time":14.96,"real_time":16.74,"user_ops":2566.8,"real_ops":2294.0,"user_usec":389.6,"real_usec":435.9,"est_time":2.36,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":10666,"user_time":14.36,"real_time":16.36,"user_ops":2971.0,"real_ops":2608.6,"user_usec":336.6,"real_usec":383.3,"est_time":2.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":2865,"user_time":15.23,"real_time":17.24,"user_ops":3009.8,"real_ops":2659.4,"user_usec":332.2,"real_usec":376.0,"est_time":2.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":695,"user_time":15.06,"real_time":18.74,"user_ops":2953.5,"real_ops":2373.4,"user_usec":338.6,"real_usec":421.3,"est_time":1.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":181,"user_time":15.08,"real_time":16.73,"user_ops":3072.7,"real_ops":2770.4,"user_usec":325.4,"real_usec":361.0,"est_time":1.76,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":44,"user_time":14.78,"real_time":15.62,"user_ops":3048.4,"real_ops":2884.9,"user_usec":328.0,"real_usec":346.6,"est_time":1.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":10378,"user_time":13.99,"real_time":16.38,"user_ops":741.8,"real_ops":633.7,"user_usec":1348.0,"real_usec":1577.9,"est_time":2.02,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":2823,"user_time":15.38,"real_time":18.01,"user_ops":734.2,"real_ops":627.1,"user_usec":1362.0,"real_usec":1594.6,"est_time":1.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":695,"user_time":14.56,"real_time":16.69,"user_ops":763.7,"real_ops":666.2,"user_usec":1309.4,"real_usec":1501.1,"est_time":1.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":181,"user_time":14.93,"real_time":16.68,"user_ops":775.9,"real_ops":694.6,"user_usec":1288.8,"real_usec":1439.6,"est_time":1.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":45,"user_time":14.73,"real_time":15.65,"user_ops":782.1,"real_ops":735.9,"user_usec":1278.6,"real_usec":1358.8,"est_time":0.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":186181,"user_time":15.07,"real_time":17.22,"user_ops":12354.4,"real_ops":10814.0,"user_usec":80.9,"real_usec":92.5,"est_time":2.58,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":99096,"user_time":14.89,"real_time":16.33,"user_ops":26620.8,"real_ops":24265.9,"user_usec":37.6,"real_usec":41.2,"est_time":2.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":35310,"user_time":15.04,"real_time":16.3,"user_ops":37563.8,"real_ops":34651.3,"user_usec":26.6,"real_usec":28.9,"est_time":4.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":10240,"user_time":15.2,"real_time":16.12,"user_ops":43115.8,"real_ops":40656.7,"user_usec":23.2,"real_usec":24.6,"est_time":3.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":2630,"user_time":14.78,"real_time":15.66,"user_ops":45553.5,"real_ops":42984.5,"user_usec":22.0,"real_usec":23.3,"est_time":3.66,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":666,"user_time":15.17,"real_time":15.93,"user_ops":44956.1,"real_ops":42809.3,"user_usec":22.2,"real_usec":23.4,"est_time":3.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":162,"user_time":15.02,"real_time":15.69,"user_ops":44177.9,"real_ops":42292.3,"user_usec":22.6,"real_usec":23.6,"est_time":3.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":163840,"user_time":15.09,"real_time":16.72,"user_ops":10857.5,"real_ops":9799.0,"user_usec":92.1,"real_usec":102.1,"est_time":3.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":76799,"user_time":15.19,"real_time":16.25,"user_ops":20223.6,"real_ops":18907.6,"user_usec":49.4,"real_usec":52.9,"est_time":3.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":26033,"user_time":15.05,"real_time":15.76,"user_ops":27676.3,"real_ops":26432.6,"user_usec":36.1,"real_usec":37.8,"est_time":2.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":7111,"user_time":15.01,"real_time":15.55,"user_ops":30320.1,"real_ops":29267.7,"user_usec":33.0,"real_usec":34.2,"est_time":2.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":1846,"user_time":15.04,"real_time":15.75,"user_ops":31421.3,"real_ops":30004.4,"user_usec":31.8,"real_usec":33.3,"est_time":2.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":452,"user_time":15.07,"real_time":15.8,"user_ops":30713.2,"real_ops":29288.4,"user_usec":32.6,"real_usec":34.1,"est_time":2.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":109,"user_time":14.95,"real_time":15.75,"user_ops":29863.8,"real_ops":28355.3,"user_usec":33.5,"real_usec":35.3,"est_time":2.32,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":111709,"user_time":15.04,"real_time":16.38,"user_ops":7427.5,"real_ops":6818.4,"user_usec":134.6,"real_usec":146.7,"est_time":2.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":41513,"user_time":15.17,"real_time":15.63,"user_ops":10946.1,"real_ops":10621.4,"user_usec":91.4,"real_usec":94.1,"est_time":2.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":12190,"user_time":14.87,"real_time":15.05,"user_ops":13116.3,"real_ops":12960.5,"user_usec":76.2,"real_usec":77.2,"est_time":2.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":3147,"user_time":14.8,"real_time":14.85,"user_ops":13608.6,"real_ops":13559.3,"user_usec":73.5,"real_usec":73.8,"est_time":2.44,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":813,"user_time":14.92,"real_time":15.01,"user_ops":13949.6,"real_ops":13870.0,"user_usec":71.7,"real_usec":72.1,"est_time":2.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":200,"user_time":14.81,"real_time":15.03,"user_ops":13828.5,"real_ops":13628.1,"user_usec":72.3,"real_usec":73.4,"est_time":2.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":47,"user_time":14.36,"real_time":14.41,"user_ops":13406.1,"real_ops":13360.1,"user_usec":74.6,"real_usec":74.8,"est_time":1.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":48000,"user_time":14.97,"real_time":15.56,"user_ops":3206.4,"real_ops":3084.7,"user_usec":311.9,"real_usec":324.2,"est_time":1.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":15058,"user_time":15.22,"real_time":15.51,"user_ops":3957.4,"real_ops":3882.6,"user_usec":252.7,"real_usec":257.6,"est_time":1.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":3878,"user_time":14.62,"real_time":14.78,"user_ops":4244.0,"real_ops":4197.5,"user_usec":235.6,"real_usec":238.2,"est_time":2.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":999,"user_time":14.84,"real_time":14.92,"user_ops":4308.4,"real_ops":4285.0,"user_usec":232.1,"real_usec":233.4,"est_time":2.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":252,"user_time":14.97,"real_time":15.1,"user_ops":4309.4,"real_ops":4271.3,"user_usec":232.0,"real_usec":234.1,"est_time":2.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":62,"user_time":14.78,"real_time":14.93,"user_ops":4295.5,"real_ops":4252.5,"user_usec":232.8,"real_usec":235.2,"est_time":1.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":15,"user_time":14.57,"real_time":14.66,"user_ops":4216.9,"real_ops":4191.1,"user_usec":237.1,"real_usec":238.6,"est_time":2.66,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":15360,"user_time":14.81,"real_time":15.29,"user_ops":1037.1,"real_ops":1004.5,"user_usec":964.2,"real_usec":995.5,"est_time":2.58,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":4129,"user_time":15.01,"real_time":15.18,"user_ops":1100.3,"real_ops":1088.2,"user_usec":908.8,"real_usec":918.9,"est_time":2.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":1066,"user_time":15.13,"real_time":15.24,"user_ops":1127.3,"real_ops":1119.2,"user_usec":887.1,"real_usec":893.5,"est_time":2.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":269,"user_time":15.08,"real_time":15.16,"user_ops":1141.6,"real_ops":1135.5,"user_usec":875.9,"real_usec":880.7,"est_time":2.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":67,"user_time":14.71,"real_time":14.86,"user_ops":1166.0,"real_ops":1153.9,"user_usec":857.6,"real_usec":866.6,"est_time":1.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":16,"user_time":13.71,"real_time":13.78,"user_ops":1195.0,"real_ops":1189.2,"user_usec":836.8,"real_usec":840.9,"est_time":1.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":4,"user_time":14.64,"real_time":14.76,"user_ops":1119.1,"real_ops":1109.7,"user_usec":893.6,"real_usec":901.1,"est_time":7.54,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":4266,"user_time":14.98,"real_time":15.16,"user_ops":284.8,"real_ops":281.4,"user_usec":3511.5,"real_usec":3553.7,"est_time":2.45,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":1078,"user_time":14.88,"real_time":15.04,"user_ops":289.8,"real_ops":286.7,"user_usec":3450.8,"real_usec":3488.1,"est_time":2.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":269,"user_time":14.17,"real_time":14.24,"user_ops":303.7,"real_ops":302.3,"user_usec":3292.3,"real_usec":3308.1,"est_time":2.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":68,"user_time":14.87,"real_time":15.07,"user_ops":292.7,"real_ops":288.8,"user_usec":3416.8,"real_usec":3463.1,"est_time":1.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":16,"user_time":13.88,"real_time":13.95,"user_ops":295.1,"real_ops":293.6,"user_usec":3388.7,"real_usec":3406.2,"est_time":1.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":4,"user_time":13.41,"real_time":13.47,"user_ops":305.4,"real_ops":304.1,"user_usec":3273.9,"real_usec":3288.2,"est_time":7.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":1090,"user_time":14.99,"real_time":15.13,"user_ops":72.7,"real_ops":72.1,"user_usec":13752.3,"real_usec":13878.9,"est_time":2.32,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":272,"user_time":15.04,"real_time":15.28,"user_ops":72.3,"real_ops":71.2,"user_usec":13823.5,"real_usec":14042.3,"est_time":2.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":66,"user_time":14.24,"real_time":14.45,"user_ops":74.2,"real_ops":73.1,"user_usec":13484.8,"real_usec":13680.7,"est_time":1.64,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":17,"user_time":14.55,"real_time":14.62,"user_ops":74.8,"real_ops":74.4,"user_usec":13373.2,"real_usec":13435.0,"est_time":1.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":4,"user_time":13.35,"real_time":13.41,"user_ops":76.7,"real_ops":76.4,"user_usec":13037.1,"real_usec":13091.4,"est_time":6.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":201442,"user_time":15.22,"real_time":17.49,"user_ops":13235.3,"real_ops":11519.8,"user_usec":75.6,"real_usec":86.8,"est_time":2.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":111709,"user_time":14.82,"real_time":16.26,"user_ops":30150.9,"real_ops":27475.7,"user_usec":33.2,"real_usec":36.4,"est_time":2.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":40960,"user_time":14.33,"real_time":15.56,"user_ops":45733.4,"real_ops":42109.4,"user_usec":21.9,"real_usec":23.7,"est_time":3.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":12800,"user_time":15.67,"real_time":18.61,"user_ops":52278.2,"real_ops":44019.2,"user_usec":19.1,"real_usec":22.7,"est_time":3.54,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":3368,"user_time":15.17,"real_time":17.68,"user_ops":56836.4,"real_ops":48765.9,"user_usec":17.6,"real_usec":20.5,"est_time":3.66,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":827,"user_time":14.91,"real_time":17.39,"user_ops":56797.3,"real_ops":48706.1,"user_usec":17.6,"real_usec":20.5,"est_time":3.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":196,"user_time":14.95,"real_time":16.77,"user_ops":53700.1,"real_ops":47881.1,"user_usec":18.6,"real_usec":20.9,"est_time":3.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":151703,"user_time":15.18,"real_time":16.89,"user_ops":9993.6,"real_ops":8981.2,"user_usec":100.1,"real_usec":111.3,"est_time":2.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":66782,"user_time":15.07,"real_time":16.15,"user_ops":17725.8,"real_ops":16539.4,"user_usec":56.4,"real_usec":60.5,"est_time":3.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":21333,"user_time":14.83,"real_time":15.39,"user_ops":23016.0,"real_ops":22178.9,"user_usec":43.4,"real_usec":45.1,"est_time":2.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":5999,"user_time":15.11,"real_time":15.7,"user_ops":25409.4,"real_ops":24454.5,"user_usec":39.4,"real_usec":40.9,"est_time":2.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":1548,"user_time":15.55,"real_time":15.68,"user_ops":25484.8,"real_ops":25275.8,"user_usec":39.2,"real_usec":39.6,"est_time":2.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":375,"user_time":15.11,"real_time":15.77,"user_ops":25413.6,"real_ops":24342.7,"user_usec":39.3,"real_usec":41.1,"est_time":2.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":89,"user_time":14.98,"real_time":15.58,"user_ops":24335.4,"real_ops":23400.8,"user_usec":41.1,"real_usec":42.7,"est_time":2.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":79792,"user_time":14.88,"real_time":15.83,"user_ops":5362.4,"real_ops":5039.1,"user_usec":186.5,"real_usec":198.4,"est_time":2.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":26482,"user_time":14.81,"real_time":15.18,"user_ops":7152.5,"real_ops":6978.4,"user_usec":139.8,"real_usec":143.3,"est_time":1.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":7384,"user_time":14.92,"real_time":15.02,"user_ops":7918.5,"real_ops":7868.2,"user_usec":126.3,"real_usec":127.1,"est_time":2.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":1939,"user_time":15.08,"real_time":15.13,"user_ops":8229.2,"real_ops":8203.7,"user_usec":121.5,"real_usec":121.9,"est_time":2.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":470,"user_time":14.53,"real_time":14.6,"user_ops":8280.8,"real_ops":8242.7,"user_usec":120.8,"real_usec":121.3,"est_time":1.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":115,"user_time":14.7,"real_time":14.77,"user_ops":8010.9,"real_ops":7972.0,"user_usec":124.8,"real_usec":125.4,"est_time":1.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":29,"user_time":14.84,"real_time":15.02,"user_ops":8004.3,"real_ops":7911.0,"user_usec":124.9,"real_usec":126.4,"est_time":1.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":28444,"user_time":14.94,"real_time":15.25,"user_ops":1903.9,"real_ops":1865.1,"user_usec":525.2,"real_usec":536.2,"est_time":1.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":8170,"user_time":15.05,"real_time":15.24,"user_ops":2171.4,"real_ops":2144.8,"user_usec":460.5,"real_usec":466.2,"est_time":2.58,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":2086,"user_time":14.96,"real_time":15.04,"user_ops":2231.0,"real_ops":2219.2,"user_usec":448.2,"real_usec":450.6,"est_time":2.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":539,"user_time":15.19,"real_time":15.24,"user_ops":2271.0,"real_ops":2264.0,"user_usec":440.3,"real_usec":441.7,"est_time":2.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":129,"user_time":15.03,"real_time":15.12,"user_ops":2197.2,"real_ops":2184.2,"user_usec":455.1,"real_usec":457.8,"est_time":2.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":32,"user_time":14.52,"real_time":14.59,"user_ops":2256.7,"real_ops":2246.6,"user_usec":443.1,"real_usec":445.1,"est_time":1.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":7,"user_time":13.07,"real_time":13.12,"user_ops":2193.7,"real_ops":2185.0,"user_usec":455.8,"real_usec":457.7,"est_time":4.02,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":8258,"user_time":14.95,"real_time":15.38,"user_ops":552.4,"real_ops":536.9,"user_usec":1810.4,"real_usec":1862.6,"est_time":2.54,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":2109,"user_time":14.84,"real_time":14.92,"user_ops":568.5,"real_ops":565.6,"user_usec":1759.1,"real_usec":1768.0,"est_time":2.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":539,"user_time":14.94,"real_time":14.99,"user_ops":577.2,"real_ops":575.1,"user_usec":1732.4,"real_usec":1738.7,"est_time":2.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":131,"user_time":14.86,"real_time":14.94,"user_ops":564.2,"real_ops":561.1,"user_usec":1772.4,"real_usec":1782.3,"est_time":2.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":33,"user_time":14.39,"real_time":14.46,"user_ops":587.1,"real_ops":584.2,"user_usec":1703.4,"real_usec":1711.9,"est_time":0.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":8,"user_time":14.17,"real_time":14.23,"user_ops":578.1,"real_ops":575.6,"user_usec":1729.7,"real_usec":1737.3,"est_time":3.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":2,"user_time":14.5,"real_time":14.56,"user_ops":565.0,"real_ops":562.6,"user_usec":1770.0,"real_usec":1777.4,"est_time":14.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":2133,"user_time":15.09,"real_time":15.16,"user_ops":141.4,"real_ops":140.7,"user_usec":7074.5,"real_usec":7107.5,"est_time":2.42,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":545,"user_time":15.03,"real_time":15.09,"user_ops":145.0,"real_ops":144.5,"user_usec":6894.5,"real_usec":6919.9,"est_time":2.42,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":133,"user_time":14.83,"real_time":14.89,"user_ops":143.5,"real_ops":142.9,"user_usec":6969.0,"real_usec":6997.2,"est_time":2.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":34,"user_time":15.0,"real_time":15.05,"user_ops":145.1,"real_ops":144.6,"user_usec":6893.4,"real_usec":6917.8,"est_time":1.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":8,"user_time":14.16,"real_time":14.21,"user_ops":144.6,"real_ops":144.1,"user_usec":6914.1,"real_usec":6939.7,"est_time":3.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":2,"user_time":14.04,"real_time":14.11,"user_ops":145.9,"real_ops":145.1,"user_usec":6855.5,"real_usec":6890.5,"est_time":14.6,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":545,"user_time":14.88,"real_time":14.91,"user_ops":36.6,"real_ops":36.5,"user_usec":27302.8,"real_usec":27363.1,"est_time":2.25,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":137,"user_time":15.11,"real_time":15.18,"user_ops":36.3,"real_ops":36.1,"user_usec":27573.0,"real_usec":27693.8,"est_time":1.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":33,"user_time":14.44,"real_time":14.52,"user_ops":36.6,"real_ops":36.4,"user_usec":27348.5,"real_usec":27499.9,"est_time":0.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":8,"user_time":13.76,"real_time":13.84,"user_ops":37.2,"real_ops":37.0,"user_usec":26875.0,"real_usec":27028.0,"est_time":3.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":2,"user_time":13.45,"real_time":13.52,"user_ops":38.1,"real_ops":37.9,"user_usec":26269.5,"real_usec":26409.1,"est_time":14.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":198193,"user_time":14.73,"real_time":16.89,"user_ops":13455.1,"real_ops":11731.2,"user_usec":74.3,"real_usec":85.2,"est_time":2.46,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":111709,"user_time":15.02,"real_time":16.66,"user_ops":29749.4,"real_ops":26818.2,"user_usec":33.6,"real_usec":37.3,"est_time":2.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":41513,"user_time":14.81,"real_time":16.09,"user_ops":44848.6,"real_ops":41280.9,"user_usec":22.3,"real_usec":24.2,"est_time":3.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":12190,"user_time":15.05,"real_time":16.16,"user_ops":51837.9,"real_ops":48274.4,"user_usec":19.3,"real_usec":20.7,"est_time":3.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":3147,"user_time":14.76,"real_time":17.02,"user_ops":54582.1,"real_ops":47342.4,"user_usec":18.3,"real_usec":21.1,"est_time":3.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":813,"user_time":15.26,"real_time":17.25,"user_ops":54555.2,"real_ops":48274.4,"user_usec":18.3,"real_usec":20.7,"est_time":3.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":190,"user_time":15.11,"real_time":16.01,"user_ops":51505.0,"real_ops":48624.8,"user_usec":19.4,"real_usec":20.6,"est_time":3.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":183402,"user_time":14.61,"real_time":16.51,"user_ops":12553.2,"real_ops":11107.2,"user_usec":79.7,"real_usec":90.0,"est_time":2.56,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":102400,"user_time":15.1,"real_time":17.48,"user_ops":27125.8,"real_ops":23429.1,"user_usec":36.9,"real_usec":42.7,"est_time":2.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":36571,"user_time":14.92,"real_time":17.33,"user_ops":39218.2,"real_ops":33766.1,"user_usec":25.5,"real_usec":29.6,"est_time":4.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":10666,"user_time":15.01,"real_time":17.85,"user_ops":45477.9,"real_ops":38240.9,"user_usec":22.0,"real_usec":26.1,"est_time":3.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":2742,"user_time":14.8,"real_time":17.42,"user_ops":47429.2,"real_ops":40295.0,"user_usec":21.1,"real_usec":24.8,"est_time":3.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":685,"user_time":14.87,"real_time":17.33,"user_ops":47171.5,"real_ops":40478.5,"user_usec":21.2,"real_usec":24.7,"est_time":3.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":160,"user_time":15.12,"real_time":17.79,"user_ops":43343.9,"real_ops":36848.6,"user_usec":23.1,"real_usec":27.1,"est_time":3.52,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":157538,"user_time":14.81,"real_time":16.83,"user_ops":10637.3,"real_ops":9361.8,"user_usec":94.0,"real_usec":106.8,"est_time":2.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":73142,"user_time":14.8,"real_time":16.89,"user_ops":19768.1,"real_ops":17326.8,"user_usec":50.6,"real_usec":57.7,"est_time":3.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":24774,"user_time":14.96,"real_time":17.17,"user_ops":26496.3,"real_ops":23083.7,"user_usec":37.7,"real_usec":43.3,"est_time":2.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":6857,"user_time":14.94,"real_time":17.17,"user_ops":29374.0,"real_ops":25553.6,"user_usec":34.0,"real_usec":39.1,"est_time":2.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":1745,"user_time":14.98,"real_time":18.21,"user_ops":29821.1,"real_ops":24527.5,"user_usec":33.5,"real_usec":40.8,"est_time":2.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":428,"user_time":15.15,"real_time":18.06,"user_ops":28928.8,"real_ops":24270.4,"user_usec":34.6,"real_usec":41.2,"est_time":2.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":95,"user_time":14.74,"real_time":16.66,"user_ops":26398.9,"real_ops":23360.1,"user_usec":37.9,"real_usec":42.8,"est_time":2.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":102399,"user_time":14.99,"real_time":16.52,"user_ops":6831.2,"real_ops":6198.0,"user_usec":146.4,"real_usec":161.3,"est_time":2.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":37012,"user_time":15.4,"real_time":17.32,"user_ops":9613.5,"real_ops":8547.5,"user_usec":104.0,"real_usec":117.0,"est_time":2.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":10520,"user_time":15.15,"real_time":16.33,"user_ops":11110.2,"real_ops":10307.0,"user_usec":90.0,"real_usec":97.0,"est_time":2.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":2704,"user_time":14.96,"real_time":16.48,"user_ops":11567.9,"real_ops":10501.2,"user_usec":86.4,"real_usec":95.2,"est_time":2.58,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":666,"user_time":14.72,"real_time":16.2,"user_ops":11582.6,"real_ops":10522.7,"user_usec":86.3,"real_usec":95.0,"est_time":2.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":164,"user_time":14.92,"real_time":16.29,"user_ops":11255.8,"real_ops":10311.5,"user_usec":88.8,"real_usec":97.0,"est_time":2.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":38,"user_time":15.4,"real_time":17.34,"user_ops":10107.0,"real_ops":8973.9,"user_usec":98.9,"real_usec":111.4,"est_time":2.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":42666,"user_time":15.24,"real_time":16.35,"user_ops":2799.6,"real_ops":2609.0,"user_usec":357.2,"real_usec":383.3,"est_time":2.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":12590,"user_time":14.97,"real_time":16.05,"user_ops":3364.1,"real_ops":3138.2,"user_usec":297.3,"real_usec":318.7,"est_time":1.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":3254,"user_time":15.21,"real_time":16.43,"user_ops":3423.0,"real_ops":3168.2,"user_usec":292.1,"real_usec":315.6,"est_time":1.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":799,"user_time":15.0,"real_time":16.18,"user_ops":3409.1,"real_ops":3161.0,"user_usec":293.3,"real_usec":316.4,"est_time":1.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":200,"user_time":14.93,"real_time":20.12,"user_ops":3429.3,"real_ops":2544.2,"user_usec":291.6,"real_usec":393.1,"est_time":1.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":50,"user_time":15.15,"real_time":15.83,"user_ops":3379.5,"real_ops":3234.0,"user_usec":295.9,"real_usec":309.2,"est_time":1.24,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":10,"user_time":15.76,"real_time":17.28,"user_ops":2599.0,"real_ops":2370.9,"user_usec":384.8,"real_usec":421.8,"est_time":3.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":12800,"user_time":15.02,"real_time":15.81,"user_ops":852.2,"real_ops":809.8,"user_usec":1173.4,"real_usec":1234.8,"est_time":1.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":3368,"user_time":14.73,"real_time":15.66,"user_ops":914.6,"real_ops":860.2,"user_usec":1093.4,"real_usec":1162.6,"est_time":1.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":857,"user_time":15.23,"real_time":16.48,"user_ops":900.3,"real_ops":832.0,"user_usec":1110.7,"real_usec":1201.9,"est_time":1.76,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":214,"user_time":14.92,"real_time":16.06,"user_ops":918.0,"real_ops":852.7,"user_usec":1089.4,"real_usec":1172.7,"est_time":1.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":52,"user_time":14.54,"real_time":15.3,"user_ops":915.5,"real_ops":870.3,"user_usec":1092.2,"real_usec":1149.0,"est_time":0.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":13,"user_time":14.55,"real_time":14.89,"user_ops":914.9,"real_ops":894.1,"user_usec":1093.0,"real_usec":1118.5,"est_time":2.6,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":2999,"user_time":14.31,"real_time":15.04,"user_ops":209.6,"real_ops":199.4,"user_usec":4771.6,"real_usec":5015.9,"est_time":2.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":738,"user_time":13.82,"real_time":14.86,"user_ops":213.6,"real_ops":198.7,"user_usec":4681.6,"real_usec":5033.8,"est_time":1.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":187,"user_time":13.88,"real_time":14.61,"user_ops":215.6,"real_ops":204.8,"user_usec":4639.0,"real_usec":4883.7,"est_time":1.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":45,"user_time":13.75,"real_time":14.33,"user_ops":209.5,"real_ops":201.0,"user_usec":4774.3,"real_usec":4975.6,"est_time":0.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":12,"user_time":14.42,"real_time":14.75,"user_ops":213.0,"real_ops":208.3,"user_usec":4694.0,"real_usec":4800.1,"est_time":2.53,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1615","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":80842,"user_time":15.91,"real_time":28.14,"user_ops":5081.2,"real_ops":2872.6,"user_usec":196.8,"real_usec":348.1,"est_time":3.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":52965,"user_time":14.38,"real_time":27.09,"user_ops":14733.0,"real_ops":7821.7,"user_usec":67.9,"real_usec":127.8,"est_time":3.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":28444,"user_time":14.83,"real_time":28.07,"user_ops":30688.1,"real_ops":16215.7,"user_usec":32.6,"real_usec":61.7,"est_time":3.66,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":10378,"user_time":15.26,"real_time":30.41,"user_ops":43525.0,"real_ops":21838.1,"user_usec":23.0,"real_usec":45.8,"est_time":4.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":2865,"user_time":15.1,"real_time":27.78,"user_ops":48572.2,"real_ops":26402.4,"user_usec":20.6,"real_usec":37.9,"est_time":4.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":705,"user_time":15.63,"real_time":28.64,"user_ops":46188.1,"real_ops":25205.5,"user_usec":21.7,"real_usec":39.7,"est_time":4.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":187,"user_time":15.67,"real_time":29.96,"user_ops":48880.2,"real_ops":25567.3,"user_usec":20.5,"real_usec":39.1,"est_time":4.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":85333,"user_time":15.38,"real_time":28.66,"user_ops":5548.3,"real_ops":2977.0,"user_usec":180.2,"real_usec":335.9,"est_time":3.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":56888,"user_time":13.09,"real_time":25.01,"user_ops":17383.7,"real_ops":9097.0,"user_usec":57.5,"real_usec":109.9,"est_time":3.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":30415,"user_time":14.55,"real_time":27.17,"user_ops":33446.0,"real_ops":17907.7,"user_usec":29.9,"real_usec":55.8,"est_time":5.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":10816,"user_time":15.14,"real_time":30.69,"user_ops":45721.5,"real_ops":22557.4,"user_usec":21.9,"real_usec":44.3,"est_time":4.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":3047,"user_time":15.19,"real_time":29.81,"user_ops":51351.7,"real_ops":26163.8,"user_usec":19.5,"real_usec":38.2,"est_time":4.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":786,"user_time":15.29,"real_time":29.23,"user_ops":52639.9,"real_ops":27534.7,"user_usec":19.0,"real_usec":36.3,"est_time":4.05,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":193,"user_time":15.18,"real_time":28.39,"user_ops":52076.9,"real_ops":27842.9,"user_usec":19.2,"real_usec":35.9,"est_time":3.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":83027,"user_time":16.05,"real_time":29.81,"user_ops":5173.0,"real_ops":2785.0,"user_usec":193.3,"real_usec":359.1,"est_time":3.42,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":55854,"user_time":13.75,"real_time":26.28,"user_ops":16248.4,"real_ops":8500.3,"user_usec":61.5,"real_usec":117.6,"est_time":3.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":30117,"user_time":14.11,"real_time":26.4,"user_ops":34151.1,"real_ops":18253.7,"user_usec":29.3,"real_usec":54.8,"est_time":3.25,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":10816,"user_time":15.0,"real_time":32.18,"user_ops":46148.3,"real_ops":21508.1,"user_usec":21.7,"real_usec":46.5,"est_time":4.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":3096,"user_time":15.36,"real_time":30.99,"user_ops":51600.0,"real_ops":25571.2,"user_usec":19.4,"real_usec":39.1,"est_time":4.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":786,"user_time":15.17,"real_time":29.61,"user_ops":53056.3,"real_ops":27182.9,"user_usec":18.8,"real_usec":36.8,"est_time":4.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":193,"user_time":15.06,"real_time":28.16,"user_ops":52491.9,"real_ops":28073.5,"user_usec":19.1,"real_usec":35.6,"est_time":3.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":84164,"user_time":14.79,"real_time":26.99,"user_ops":5690.6,"real_ops":3117.9,"user_usec":175.7,"real_usec":320.7,"est_time":3.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":55854,"user_time":14.22,"real_time":27.3,"user_ops":15711.4,"real_ops":8182.8,"user_usec":63.6,"real_usec":122.2,"est_time":3.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":29825,"user_time":14.49,"real_time":28.08,"user_ops":32933.1,"real_ops":16994.8,"user_usec":30.4,"real_usec":58.8,"est_time":5.58,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":10666,"user_time":15.08,"real_time":32.19,"user_ops":45266.8,"real_ops":21207.7,"user_usec":22.1,"real_usec":47.2,"est_time":4.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":3000,"user_time":15.19,"real_time":31.46,"user_ops":50559.6,"real_ops":24411.1,"user_usec":19.8,"real_usec":41.0,"est_time":4.44,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":774,"user_time":15.22,"real_time":30.47,"user_ops":52074.6,"real_ops":26007.8,"user_usec":19.2,"real_usec":38.4,"est_time":4.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":190,"user_time":15.45,"real_time":29.23,"user_ops":50371.5,"real_ops":26625.6,"user_usec":19.9,"real_usec":37.6,"est_time":3.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":83027,"user_time":15.46,"real_time":28.46,"user_ops":5370.4,"real_ops":2917.2,"user_usec":186.2,"real_usec":342.8,"est_time":3.44,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":52965,"user_time":14.58,"real_time":27.88,"user_ops":14530.9,"real_ops":7597.8,"user_usec":68.8,"real_usec":131.6,"est_time":3.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":28981,"user_time":14.93,"real_time":30.11,"user_ops":31058.0,"real_ops":15397.8,"user_usec":32.2,"real_usec":64.9,"est_time":3.36,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":9846,"user_time":15.04,"real_time":35.85,"user_ops":41897.9,"real_ops":17575.7,"user_usec":23.9,"real_usec":56.9,"est_time":5.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":2704,"user_time":15.01,"real_time":33.67,"user_ops":46117.5,"real_ops":20559.6,"user_usec":21.7,"real_usec":48.6,"est_time":4.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":695,"user_time":15.02,"real_time":33.04,"user_ops":47382.2,"real_ops":21541.1,"user_usec":21.1,"real_usec":46.4,"est_time":4.4,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":166,"user_time":14.86,"real_time":30.27,"user_ops":45756.1,"real_ops":22464.0,"user_usec":21.9,"real_usec":44.5,"est_time":4.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":79792,"user_time":15.35,"real_time":28.63,"user_ops":5198.2,"real_ops":2787.3,"user_usec":192.4,"real_usec":358.8,"est_time":3.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":55854,"user_time":15.4,"real_time":31.04,"user_ops":14507.5,"real_ops":7196.5,"user_usec":68.9,"real_usec":139.0,"est_time":3.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":24000,"user_time":14.71,"real_time":43.54,"user_ops":26104.7,"real_ops":8820.1,"user_usec":38.3,"real_usec":113.4,"est_time":4.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":8084,"user_time":14.81,"real_time":40.31,"user_ops":34934.2,"real_ops":12834.2,"user_usec":28.6,"real_usec":77.9,"est_time":5.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":2232,"user_time":15.12,"real_time":43.4,"user_ops":37790.5,"real_ops":13164.8,"user_usec":26.5,"real_usec":76.0,"est_time":4.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":551,"user_time":15.05,"real_time":40.68,"user_ops":37490.0,"real_ops":13871.0,"user_usec":26.7,"real_usec":72.1,"est_time":4.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":134,"user_time":14.8,"real_time":35.66,"user_ops":37085.4,"real_ops":15389.6,"user_usec":27.0,"real_usec":65.0,"est_time":4.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":72282,"user_time":15.73,"real_time":30.57,"user_ops":4595.2,"real_ops":2364.6,"user_usec":217.6,"real_usec":422.9,"est_time":3.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":38886,"user_time":14.58,"real_time":34.56,"user_ops":10668.3,"real_ops":4500.5,"user_usec":93.7,"real_usec":222.2,"est_time":4.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":16168,"user_time":14.9,"real_time":45.4,"user_ops":17361.6,"real_ops":5697.6,"user_usec":57.6,"real_usec":175.5,"est_time":5.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":4800,"user_time":15.17,"real_time":44.68,"user_ops":20250.5,"real_ops":6875.0,"user_usec":49.4,"real_usec":145.5,"est_time":5.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":1263,"user_time":15.1,"real_time":53.81,"user_ops":21412.5,"real_ops":6008.5,"user_usec":46.7,"real_usec":166.4,"est_time":4.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":320,"user_time":15.19,"real_time":43.42,"user_ops":21572.1,"real_ops":7546.7,"user_usec":46.4,"real_usec":132.5,"est_time":4.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":84164,"user_time":15.12,"real_time":27.32,"user_ops":5566.4,"real_ops":3080.2,"user_usec":179.6,"real_usec":324.7,"est_time":3.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":64673,"user_time":15.1,"real_time":28.16,"user_ops":17131.9,"real_ops":9185.9,"user_usec":58.4,"real_usec":108.9,"est_time":4.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":32336,"user_time":15.35,"real_time":29.13,"user_ops":33705.3,"real_ops":17763.1,"user_usec":29.7,"real_usec":56.3,"est_time":5.45,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":11294,"user_time":15.17,"real_time":31.65,"user_ops":47647.7,"real_ops":22837.0,"user_usec":21.0,"real_usec":43.8,"est_time":4.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":3147,"user_time":14.75,"real_time":29.81,"user_ops":54619.1,"real_ops":27028.8,"user_usec":18.3,"real_usec":37.0,"est_time":4.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":827,"user_time":15.33,"real_time":30.42,"user_ops":55241.2,"real_ops":27834.4,"user_usec":18.1,"real_usec":35.9,"est_time":4.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":196,"user_time":14.94,"real_time":29.02,"user_ops":53736.0,"real_ops":27661.1,"user_usec":18.6,"real_usec":36.2,"est_time":4.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":84164,"user_time":14.95,"real_time":27.6,"user_ops":5629.7,"real_ops":3049.6,"user_usec":177.6,"real_usec":327.9,"est_time":3.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":64673,"user_time":15.3,"real_time":28.69,"user_ops":16908.0,"real_ops":9017.1,"user_usec":59.1,"real_usec":110.9,"est_time":4.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":32336,"user_time":15.72,"real_time":30.21,"user_ops":32912.0,"real_ops":17125.0,"user_usec":30.4,"real_usec":58.4,"est_time":5.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":11294,"user_time":15.17,"real_time":30.02,"user_ops":47647.7,"real_ops":24080.2,"user_usec":21.0,"real_usec":41.5,"est_time":4.58,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":3254,"user_time":15.49,"real_time":29.44,"user_ops":53778.2,"real_ops":28293.4,"user_usec":18.6,"real_usec":35.3,"est_time":4.31,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":813,"user_time":15.07,"real_time":27.91,"user_ops":55243.0,"real_ops":29832.5,"user_usec":18.1,"real_usec":33.5,"est_time":4.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":193,"user_time":15.13,"real_time":27.15,"user_ops":52249.0,"real_ops":29118.1,"user_usec":19.1,"real_usec":34.3,"est_time":3.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":85333,"user_time":14.98,"real_time":25.84,"user_ops":5696.5,"real_ops":3301.8,"user_usec":175.5,"real_usec":302.9,"est_time":3.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":65361,"user_time":15.46,"real_time":28.98,"user_ops":16911.0,"real_ops":9022.3,"user_usec":59.1,"real_usec":110.8,"est_time":4.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":30117,"user_time":14.84,"real_time":28.25,"user_ops":32471.2,"real_ops":17055.0,"user_usec":30.8,"real_usec":58.6,"est_time":3.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":11130,"user_time":15.06,"real_time":29.42,"user_ops":47298.8,"real_ops":24211.8,"user_usec":21.1,"real_usec":41.3,"est_time":4.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":3147,"user_time":15.06,"real_time":28.65,"user_ops":53494.8,"real_ops":28119.8,"user_usec":18.7,"real_usec":35.6,"est_time":4.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":813,"user_time":14.81,"real_time":26.93,"user_ops":56212.8,"real_ops":30916.1,"user_usec":17.8,"real_usec":32.3,"est_time":4.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":203,"user_time":15.58,"real_time":27.67,"user_ops":53368.9,"real_ops":30044.9,"user_usec":18.7,"real_usec":33.3,"est_time":3.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":85333,"user_time":16.05,"real_time":28.58,"user_ops":5316.7,"real_ops":2985.9,"user_usec":188.1,"real_usec":334.9,"est_time":3.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":55854,"user_time":14.49,"real_time":27.22,"user_ops":15418.6,"real_ops":8207.2,"user_usec":64.9,"real_usec":121.8,"est_time":3.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":31670,"user_time":15.02,"real_time":28.69,"user_ops":33736.4,"real_ops":17660.0,"user_usec":29.6,"real_usec":56.6,"est_time":5.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":10816,"user_time":15.04,"real_time":30.86,"user_ops":46025.5,"real_ops":22434.5,"user_usec":21.7,"real_usec":44.6,"est_time":4.52,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":3000,"user_time":14.85,"real_time":28.23,"user_ops":51717.2,"real_ops":27206.0,"user_usec":19.3,"real_usec":36.8,"est_time":4.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":774,"user_time":14.6,"real_time":27.34,"user_ops":54286.0,"real_ops":28992.9,"user_usec":18.4,"real_usec":34.5,"est_time":3.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":190,"user_time":14.79,"real_time":26.02,"user_ops":52619.3,"real_ops":29912.1,"user_usec":19.0,"real_usec":33.4,"est_time":3.66,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":74024,"user_time":13.56,"real_time":24.21,"user_ops":5459.0,"real_ops":3057.3,"user_usec":183.2,"real_usec":327.1,"est_time":3.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":52067,"user_time":13.77,"real_time":26.21,"user_ops":15124.8,"real_ops":7945.4,"user_usec":66.1,"real_usec":125.9,"est_time":3.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":27927,"user_time":14.92,"real_time":29.32,"user_ops":29948.5,"real_ops":15239.0,"user_usec":33.4,"real_usec":65.6,"est_time":3.52,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":9721,"user_time":14.8,"real_time":33.27,"user_ops":42036.8,"real_ops":18701.5,"user_usec":23.8,"real_usec":53.5,"est_time":4.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":2782,"user_time":15.13,"real_time":33.94,"user_ops":47071.5,"real_ops":20985.5,"user_usec":21.2,"real_usec":47.7,"est_time":4.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":695,"user_time":15.2,"real_time":33.23,"user_ops":46821.1,"real_ops":21415.1,"user_usec":21.4,"real_usec":46.7,"est_time":4.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":164,"user_time":14.51,"real_time":29.63,"user_ops":46295.2,"real_ops":22667.8,"user_usec":21.6,"real_usec":44.1,"est_time":4.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":80842,"user_time":15.62,"real_time":28.64,"user_ops":5175.5,"real_ops":2822.7,"user_usec":193.2,"real_usec":354.3,"est_time":3.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"user_time":15.39,"real_time":29.84,"user_ops":14007.5,"real_ops":7225.3,"user_usec":71.4,"real_usec":138.4,"est_time":3.18,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":23999,"user_time":15.16,"real_time":33.39,"user_ops":25328.8,"real_ops":11499.8,"user_usec":39.5,"real_usec":87.0,"est_time":3.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":7680,"user_time":15.08,"real_time":35.92,"user_ops":32594.2,"real_ops":13684.7,"user_usec":30.7,"real_usec":73.1,"est_time":5.36,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":2064,"user_time":15.14,"real_time":37.38,"user_ops":34899.9,"real_ops":14134.6,"user_usec":28.7,"real_usec":70.7,"est_time":5.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":521,"user_time":15.02,"real_time":37.91,"user_ops":35519.6,"real_ops":14071.3,"user_usec":28.2,"real_usec":71.1,"est_time":5.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":126,"user_time":16.02,"real_time":36.76,"user_ops":32215.7,"real_ops":14040.0,"user_usec":31.0,"real_usec":71.2,"est_time":4.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":69033,"user_time":14.99,"real_time":28.59,"user_ops":4605.3,"real_ops":2414.8,"user_usec":217.1,"real_usec":414.1,"est_time":3.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":39384,"user_time":15.62,"real_time":31.26,"user_ops":10085.5,"real_ops":5039.7,"user_usec":99.2,"real_usec":198.4,"est_time":3.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":14490,"user_time":15.33,"real_time":38.84,"user_ops":15123.3,"real_ops":5968.9,"user_usec":66.1,"real_usec":167.5,"est_time":3.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":4173,"user_time":15.06,"real_time":38.99,"user_ops":17733.9,"real_ops":6849.9,"user_usec":56.4,"real_usec":146.0,"est_time":5.02,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":1090,"user_time":14.96,"real_time":37.07,"user_ops":18652.4,"real_ops":7526.6,"user_usec":53.6,"real_usec":132.9,"est_time":5.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":272,"user_time":14.98,"real_time":33.42,"user_ops":18593.3,"real_ops":8334.2,"user_usec":53.8,"real_usec":120.0,"est_time":5.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":75851,"user_time":13.42,"real_time":23.03,"user_ops":5652.1,"real_ops":3292.9,"user_usec":176.9,"real_usec":303.7,"est_time":3.66,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":63340,"user_time":15.81,"real_time":29.2,"user_ops":16025.3,"real_ops":8676.0,"user_usec":62.4,"real_usec":115.3,"est_time":5.18,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":31346,"user_time":15.88,"real_time":30.72,"user_ops":31582.9,"real_ops":16328.6,"user_usec":31.7,"real_usec":61.2,"est_time":5.54,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":10816,"user_time":15.1,"real_time":30.55,"user_ops":45842.6,"real_ops":22658.3,"user_usec":21.8,"real_usec":44.1,"est_time":4.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":3096,"user_time":15.4,"real_time":30.6,"user_ops":51466.0,"real_ops":25898.1,"user_usec":19.4,"real_usec":38.6,"est_time":4.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":786,"user_time":15.0,"real_time":28.92,"user_ops":53657.6,"real_ops":27829.4,"user_usec":18.6,"real_usec":35.9,"est_time":4.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":190,"user_time":14.93,"real_time":27.5,"user_ops":52125.9,"real_ops":28301.3,"user_usec":19.2,"real_usec":35.3,"est_time":4.46,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":83027,"user_time":16.24,"real_time":29.42,"user_ops":5112.5,"real_ops":2822.3,"user_usec":195.6,"real_usec":354.3,"est_time":3.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":53894,"user_time":14.61,"real_time":27.49,"user_ops":14755.4,"real_ops":7841.6,"user_usec":67.8,"real_usec":127.5,"est_time":3.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":30117,"user_time":14.95,"real_time":26.69,"user_ops":32232.2,"real_ops":18057.6,"user_usec":31.0,"real_usec":55.4,"est_time":3.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":10240,"user_time":15.1,"real_time":32.11,"user_ops":43401.3,"real_ops":20409.2,"user_usec":23.0,"real_usec":49.0,"est_time":5.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2865,"user_time":15.06,"real_time":30.38,"user_ops":48701.2,"real_ops":24138.7,"user_usec":20.5,"real_usec":41.4,"est_time":4.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":738,"user_time":15.2,"real_time":30.13,"user_ops":49717.9,"real_ops":25084.7,"user_usec":20.1,"real_usec":39.9,"est_time":4.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":144,"user_time":12.51,"real_time":22.59,"user_ops":47148.2,"real_ops":26113.5,"user_usec":21.2,"real_usec":38.3,"est_time":4.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":72282,"user_time":13.72,"real_time":23.94,"user_ops":5268.4,"real_ops":3019.4,"user_usec":189.8,"real_usec":331.2,"est_time":3.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":59076,"user_time":16.45,"real_time":29.61,"user_ops":14365.0,"real_ops":7979.7,"user_usec":69.6,"real_usec":125.3,"est_time":3.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":26033,"user_time":14.68,"real_time":28.58,"user_ops":28373.8,"real_ops":14575.6,"user_usec":35.2,"real_usec":68.6,"est_time":3.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":8930,"user_time":15.11,"real_time":28.63,"user_ops":37824.0,"real_ops":19960.3,"user_usec":26.4,"real_usec":50.1,"est_time":5.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2430,"user_time":15.05,"real_time":29.07,"user_ops":41334.2,"real_ops":21398.6,"user_usec":24.2,"real_usec":46.7,"est_time":4.56,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":615,"user_time":14.85,"real_time":27.93,"user_ops":42408.1,"real_ops":22546.7,"user_usec":23.6,"real_usec":44.4,"est_time":4.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":150,"user_time":15.41,"real_time":27.31,"user_ops":39870.2,"real_ops":22496.1,"user_usec":25.1,"real_usec":44.5,"est_time":4.29,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":74926,"user_time":15.51,"real_time":26.45,"user_ops":4830.8,"real_ops":2833.2,"user_usec":207.0,"real_usec":353.0,"est_time":3.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":45850,"user_time":15.84,"real_time":28.66,"user_ops":11578.3,"real_ops":6398.6,"user_usec":86.4,"real_usec":156.3,"est_time":3.24,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":18506,"user_time":15.06,"real_time":27.35,"user_ops":19661.1,"real_ops":10826.7,"user_usec":50.9,"real_usec":92.4,"est_time":4.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":5731,"user_time":15.07,"real_time":28.06,"user_ops":24338.7,"real_ops":13069.5,"user_usec":41.1,"real_usec":76.5,"est_time":3.57,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1499,"user_time":14.59,"real_time":24.75,"user_ops":26301.9,"real_ops":15505.3,"user_usec":38.0,"real_usec":64.5,"est_time":3.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":380,"user_time":14.94,"real_time":25.23,"user_ops":26045.5,"real_ops":15420.1,"user_usec":38.4,"real_usec":64.9,"est_time":3.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":88,"user_time":15.01,"real_time":25.66,"user_ops":24013.9,"real_ops":14047.6,"user_usec":41.6,"real_usec":71.2,"est_time":2.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":51200,"user_time":13.71,"real_time":22.13,"user_ops":3734.5,"real_ops":2314.0,"user_usec":267.8,"real_usec":432.1,"est_time":2.59,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":26033,"user_time":15.14,"real_time":26.37,"user_ops":6877.9,"real_ops":3949.3,"user_usec":145.4,"real_usec":253.2,"est_time":2.53,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":8827,"user_time":15.34,"real_time":23.7,"user_ops":9206.8,"real_ops":5958.9,"user_usec":108.6,"real_usec":167.8,"est_time":3.4,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2370,"user_time":15.05,"real_time":21.68,"user_ops":10078.4,"real_ops":6995.3,"user_usec":99.2,"real_usec":143.0,"est_time":3.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":592,"user_time":15.02,"real_time":20.71,"user_ops":10090.0,"real_ops":7316.4,"user_usec":99.1,"real_usec":136.7,"est_time":3.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":148,"user_time":15.07,"real_time":20.26,"user_ops":10056.5,"real_ops":7481.4,"user_usec":99.4,"real_usec":133.7,"est_time":2.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":33,"user_time":14.97,"real_time":21.21,"user_ops":9029.3,"real_ops":6374.0,"user_usec":110.8,"real_usec":156.9,"est_time":2.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":28444,"user_time":15.33,"real_time":24.2,"user_ops":1855.4,"real_ops":1175.3,"user_usec":539.0,"real_usec":850.9,"est_time":2.42,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":9600,"user_time":14.76,"real_time":21.78,"user_ops":2601.6,"real_ops":1763.5,"user_usec":384.4,"real_usec":567.1,"est_time":2.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2704,"user_time":14.81,"real_time":19.7,"user_ops":2921.3,"real_ops":2196.2,"user_usec":342.3,"real_usec":455.3,"est_time":2.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":685,"user_time":15.23,"real_time":19.69,"user_ops":2878.5,"real_ops":2227.0,"user_usec":347.4,"real_usec":449.0,"est_time":2.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":176,"user_time":15.16,"real_time":19.36,"user_ops":2972.0,"real_ops":2327.4,"user_usec":336.5,"real_usec":429.7,"est_time":2.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":43,"user_time":14.84,"real_time":18.0,"user_ops":2967.1,"real_ops":2446.5,"user_usec":337.0,"real_usec":408.7,"est_time":1.76,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":9481,"user_time":14.87,"real_time":21.07,"user_ops":637.6,"real_ops":450.0,"user_usec":1568.4,"real_usec":2222.0,"est_time":2.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2594,"user_time":14.83,"real_time":19.9,"user_ops":699.7,"real_ops":521.3,"user_usec":1429.3,"real_usec":1918.2,"est_time":2.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":685,"user_time":14.63,"real_time":18.27,"user_ops":749.1,"real_ops":599.8,"user_usec":1334.9,"real_usec":1667.2,"est_time":2.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":179,"user_time":15.54,"real_time":21.93,"user_ops":737.2,"real_ops":522.5,"user_usec":1356.5,"real_usec":1914.0,"est_time":2.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":44,"user_time":15.17,"real_time":17.6,"user_ops":742.5,"real_ops":640.0,"user_usec":1346.8,"real_usec":1562.4,"est_time":1.29,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":80842,"user_time":16.45,"real_time":29.49,"user_ops":4914.4,"real_ops":2741.1,"user_usec":203.5,"real_usec":364.8,"est_time":3.42,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":52965,"user_time":13.46,"real_time":25.03,"user_ops":15740.0,"real_ops":8464.4,"user_usec":63.5,"real_usec":118.1,"est_time":3.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":27428,"user_time":14.91,"real_time":27.22,"user_ops":29433.1,"real_ops":16122.6,"user_usec":34.0,"real_usec":62.0,"est_time":3.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":9481,"user_time":15.19,"real_time":27.57,"user_ops":39946.3,"real_ops":22007.3,"user_usec":25.0,"real_usec":45.4,"est_time":4.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":2560,"user_time":15.04,"real_time":26.52,"user_ops":43574.5,"real_ops":24708.0,"user_usec":22.9,"real_usec":40.5,"est_time":4.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":666,"user_time":15.16,"real_time":26.05,"user_ops":44985.8,"real_ops":26184.1,"user_usec":22.2,"real_usec":38.2,"est_time":4.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":153,"user_time":14.58,"real_time":24.78,"user_ops":42982.7,"real_ops":25288.3,"user_usec":23.3,"real_usec":39.5,"est_time":4.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":76800,"user_time":15.3,"real_time":26.8,"user_ops":5019.6,"real_ops":2866.0,"user_usec":199.2,"real_usec":348.9,"est_time":3.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":51200,"user_time":16.34,"real_time":28.64,"user_ops":12533.7,"real_ops":7151.1,"user_usec":79.8,"real_usec":139.8,"est_time":2.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":21041,"user_time":15.27,"real_time":26.35,"user_ops":22046.9,"real_ops":12778.0,"user_usec":45.4,"real_usec":78.3,"est_time":3.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":6620,"user_time":15.06,"real_time":22.86,"user_ops":28132.8,"real_ops":18534.8,"user_usec":35.5,"real_usec":54.0,"est_time":3.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1811,"user_time":15.3,"real_time":22.45,"user_ops":30301.7,"real_ops":20653.2,"user_usec":33.0,"real_usec":48.4,"est_time":3.29,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":452,"user_time":15.01,"real_time":22.37,"user_ops":30836.0,"real_ops":20686.4,"user_usec":32.4,"real_usec":48.3,"est_time":2.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":109,"user_time":15.7,"real_time":23.32,"user_ops":28437.2,"real_ops":19143.2,"user_usec":35.2,"real_usec":52.2,"est_time":2.56,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":57962,"user_time":14.77,"real_time":24.68,"user_ops":3924.3,"real_ops":2348.9,"user_usec":254.8,"real_usec":425.7,"est_time":2.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":29538,"user_time":14.63,"real_time":23.01,"user_ops":8076.0,"real_ops":5134.6,"user_usec":123.8,"real_usec":194.8,"est_time":2.46,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":10971,"user_time":15.1,"real_time":21.74,"user_ops":11624.9,"real_ops":8074.9,"user_usec":86.0,"real_usec":123.8,"est_time":3.64,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3096,"user_time":15.02,"real_time":19.03,"user_ops":13192.0,"real_ops":10410.7,"user_usec":75.8,"real_usec":96.1,"est_time":2.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":800,"user_time":14.97,"real_time":18.16,"user_ops":13680.7,"real_ops":11280.5,"user_usec":73.1,"real_usec":88.6,"est_time":2.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":203,"user_time":14.98,"real_time":18.0,"user_ops":13876.6,"real_ops":11549.1,"user_usec":72.1,"real_usec":86.6,"est_time":2.54,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":50,"user_time":15.07,"real_time":18.82,"user_ops":13589.9,"real_ops":10882.0,"user_usec":73.6,"real_usec":91.9,"est_time":2.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":34909,"user_time":14.64,"real_time":21.6,"user_ops":2384.5,"real_ops":1616.1,"user_usec":419.4,"real_usec":618.8,"est_time":3.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":13016,"user_time":15.16,"real_time":21.17,"user_ops":3434.3,"real_ops":2459.7,"user_usec":291.2,"real_usec":406.6,"est_time":2.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3692,"user_time":14.65,"real_time":17.58,"user_ops":4032.2,"real_ops":3360.3,"user_usec":248.0,"real_usec":297.6,"est_time":1.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":999,"user_time":15.01,"real_time":16.92,"user_ops":4259.6,"real_ops":3778.2,"user_usec":234.8,"real_usec":264.7,"est_time":2.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":255,"user_time":15.2,"real_time":16.64,"user_ops":4294.7,"real_ops":3922.7,"user_usec":232.8,"real_usec":254.9,"est_time":2.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":62,"user_time":14.81,"real_time":16.07,"user_ops":4286.8,"real_ops":3951.5,"user_usec":233.3,"real_usec":253.1,"est_time":2.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":15,"user_time":14.51,"real_time":16.05,"user_ops":4234.3,"real_ops":3827.6,"user_usec":236.2,"real_usec":261.3,"est_time":2.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":13473,"user_time":15.04,"real_time":21.11,"user_ops":895.8,"real_ops":638.3,"user_usec":1116.3,"real_usec":1566.7,"est_time":2.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3999,"user_time":15.15,"real_time":17.98,"user_ops":1055.8,"real_ops":889.7,"user_usec":947.1,"real_usec":1124.0,"est_time":2.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1054,"user_time":15.1,"real_time":16.43,"user_ops":1116.8,"real_ops":1026.4,"user_usec":895.4,"real_usec":974.3,"est_time":2.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":266,"user_time":14.9,"real_time":16.01,"user_ops":1142.6,"real_ops":1063.3,"user_usec":875.2,"real_usec":940.5,"est_time":2.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":68,"user_time":15.16,"real_time":16.05,"user_ops":1148.3,"real_ops":1084.9,"user_usec":870.9,"real_usec":921.7,"est_time":1.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":16,"user_time":14.36,"real_time":15.2,"user_ops":1140.9,"real_ops":1077.7,"user_usec":876.5,"real_usec":927.9,"est_time":2.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":4,"user_time":14.3,"real_time":15.28,"user_ops":1145.7,"real_ops":1072.3,"user_usec":872.8,"real_usec":932.6,"est_time":8.25,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":4085,"user_time":15.2,"real_time":17.81,"user_ops":268.8,"real_ops":229.4,"user_usec":3720.9,"real_usec":4358.8,"est_time":2.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1066,"user_time":15.07,"real_time":16.32,"user_ops":282.9,"real_ops":261.2,"user_usec":3534.2,"real_usec":3828.5,"est_time":2.56,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":266,"user_time":14.23,"real_time":15.2,"user_ops":299.1,"real_ops":280.0,"user_usec":3343.5,"real_usec":3571.2,"est_time":2.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":71,"user_time":15.18,"real_time":15.98,"user_ops":299.3,"real_ops":284.3,"user_usec":3340.7,"real_usec":3517.3,"est_time":1.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":17,"user_time":14.35,"real_time":15.09,"user_ops":303.3,"real_ops":288.3,"user_usec":3297.3,"real_usec":3468.0,"est_time":2.31,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":4,"user_time":13.9,"real_time":14.73,"user_ops":294.7,"real_ops":278.0,"user_usec":3393.6,"real_usec":3597.0,"est_time":7.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1066,"user_time":15.03,"real_time":16.26,"user_ops":70.9,"real_ops":65.6,"user_usec":14099.4,"real_usec":15254.9,"est_time":2.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":272,"user_time":14.75,"real_time":15.91,"user_ops":73.8,"real_ops":68.4,"user_usec":13557.0,"real_usec":14627.5,"est_time":2.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":71,"user_time":14.93,"real_time":15.83,"user_ops":76.1,"real_ops":71.8,"user_usec":13142.6,"real_usec":13933.9,"est_time":1.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":18,"user_time":14.83,"real_time":15.62,"user_ops":77.7,"real_ops":73.7,"user_usec":12873.3,"real_usec":13560.4,"est_time":2.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":4,"user_time":13.84,"real_time":14.56,"user_ops":74.0,"real_ops":70.3,"user_usec":13515.6,"real_usec":14216.2,"est_time":7.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":84164,"user_time":16.27,"real_time":29.17,"user_ops":5173.0,"real_ops":2885.7,"user_usec":193.3,"real_usec":346.5,"est_time":3.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":63340,"user_time":14.94,"real_time":28.18,"user_ops":16958.5,"real_ops":8990.5,"user_usec":59.0,"real_usec":111.2,"est_time":4.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":30117,"user_time":14.85,"real_time":28.74,"user_ops":32449.3,"real_ops":16768.5,"user_usec":30.8,"real_usec":59.6,"est_time":3.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":11130,"user_time":15.05,"real_time":31.53,"user_ops":47330.2,"real_ops":22593.4,"user_usec":21.1,"real_usec":44.3,"est_time":4.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":3147,"user_time":15.11,"real_time":31.42,"user_ops":53317.8,"real_ops":25644.7,"user_usec":18.8,"real_usec":39.0,"est_time":4.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":813,"user_time":15.14,"real_time":29.42,"user_ops":54987.6,"real_ops":28298.5,"user_usec":18.2,"real_usec":35.3,"est_time":4.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":199,"user_time":15.31,"real_time":28.76,"user_ops":53240.0,"real_ops":28339.0,"user_usec":18.8,"real_usec":35.3,"est_time":3.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":73142,"user_time":15.67,"real_time":26.9,"user_ops":4667.6,"real_ops":2719.5,"user_usec":214.2,"real_usec":367.7,"est_time":3.6,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":41513,"user_time":14.63,"real_time":24.76,"user_ops":11350.1,"real_ops":6707.2,"user_usec":88.1,"real_usec":149.1,"est_time":3.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":18070,"user_time":15.13,"real_time":24.59,"user_ops":19109.1,"real_ops":11755.4,"user_usec":52.3,"real_usec":85.1,"est_time":4.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":5408,"user_time":14.92,"real_time":21.63,"user_ops":23197.9,"real_ops":16004.4,"user_usec":43.1,"real_usec":62.5,"est_time":3.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1454,"user_time":14.93,"real_time":20.07,"user_ops":24931.3,"real_ops":18546.6,"user_usec":40.1,"real_usec":53.9,"est_time":3.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":369,"user_time":14.85,"real_time":19.85,"user_ops":25444.8,"real_ops":19034.3,"user_usec":39.3,"real_usec":52.5,"est_time":3.08,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":89,"user_time":15.25,"real_time":21.51,"user_ops":23904.5,"real_ops":16948.0,"user_usec":41.8,"real_usec":59.0,"est_time":2.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":51200,"user_time":15.21,"real_time":23.84,"user_ops":3366.2,"real_ops":2147.3,"user_usec":297.1,"real_usec":465.7,"est_time":2.53,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":21942,"user_time":15.12,"real_time":22.38,"user_ops":5804.8,"real_ops":3922.4,"user_usec":172.3,"real_usec":254.9,"est_time":2.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":6857,"user_time":15.0,"real_time":19.69,"user_ops":7314.1,"real_ops":5572.3,"user_usec":136.7,"real_usec":179.5,"est_time":2.36,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1882,"user_time":14.96,"real_time":17.63,"user_ops":8051.3,"real_ops":6833.2,"user_usec":124.2,"real_usec":146.3,"est_time":2.2,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":484,"user_time":15.03,"real_time":17.09,"user_ops":8243.8,"real_ops":7251.4,"user_usec":121.3,"real_usec":137.9,"est_time":3.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":120,"user_time":15.0,"real_time":16.9,"user_ops":8192.0,"real_ops":7273.0,"user_usec":122.1,"real_usec":137.5,"est_time":2.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":28,"user_time":14.15,"real_time":16.39,"user_ops":8105.2,"real_ops":6997.0,"user_usec":123.4,"real_usec":142.9,"est_time":1.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":22588,"user_time":14.97,"real_time":22.01,"user_ops":1508.9,"real_ops":1026.4,"user_usec":662.7,"real_usec":974.3,"est_time":2.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":7384,"user_time":14.83,"real_time":18.77,"user_ops":1991.6,"real_ops":1573.7,"user_usec":502.1,"real_usec":635.5,"est_time":1.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1999,"user_time":14.69,"real_time":16.72,"user_ops":2177.3,"real_ops":1913.1,"user_usec":459.3,"real_usec":522.7,"est_time":2.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":521,"user_time":14.69,"real_time":15.99,"user_ops":2269.8,"real_ops":2085.0,"user_usec":440.6,"real_usec":479.6,"est_time":2.6,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":133,"user_time":15.48,"real_time":16.57,"user_ops":2199.5,"real_ops":2055.0,"user_usec":454.7,"real_usec":486.6,"est_time":2.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":32,"user_time":14.13,"real_time":15.16,"user_ops":2319.0,"real_ops":2161.7,"user_usec":431.2,"real_usec":462.6,"est_time":1.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":7,"user_time":13.13,"real_time":14.24,"user_ops":2183.7,"real_ops":2013.6,"user_usec":457.9,"real_usec":496.6,"est_time":4.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":7680,"user_time":15.03,"real_time":18.57,"user_ops":511.0,"real_ops":413.5,"user_usec":1957.0,"real_usec":2418.2,"est_time":3.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":2064,"user_time":14.81,"real_time":16.47,"user_ops":557.5,"real_ops":501.2,"user_usec":1793.8,"real_usec":1995.2,"est_time":2.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":539,"user_time":15.03,"real_time":16.15,"user_ops":573.8,"real_ops":534.0,"user_usec":1742.8,"real_usec":1872.7,"est_time":2.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":133,"user_time":14.95,"real_time":15.84,"user_ops":569.4,"real_ops":537.5,"user_usec":1756.3,"real_usec":1860.4,"est_time":2.2,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":34,"user_time":14.72,"real_time":15.51,"user_ops":591.3,"real_ops":561.2,"user_usec":1691.2,"real_usec":1781.8,"est_time":1.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":8,"user_time":13.42,"real_time":14.17,"user_ops":610.4,"real_ops":577.9,"user_usec":1638.2,"real_usec":1730.3,"est_time":4.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":2,"user_time":13.78,"real_time":14.65,"user_ops":594.5,"real_ops":559.1,"user_usec":1682.1,"real_usec":1788.5,"est_time":15.45,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":2157,"user_time":15.44,"real_time":17.14,"user_ops":139.7,"real_ops":125.9,"user_usec":7158.1,"real_usec":7945.8,"est_time":2.52,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":551,"user_time":14.98,"real_time":15.88,"user_ops":147.1,"real_ops":138.8,"user_usec":6796.7,"real_usec":7204.8,"est_time":2.24,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":136,"user_time":14.56,"real_time":15.46,"user_ops":149.5,"real_ops":140.7,"user_usec":6691.2,"real_usec":7105.6,"est_time":2.18,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":33,"user_time":14.62,"real_time":15.33,"user_ops":144.5,"real_ops":137.8,"user_usec":6922.3,"real_usec":7259.3,"est_time":1.45,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":8,"user_time":14.08,"real_time":14.96,"user_ops":145.5,"real_ops":136.9,"user_usec":6875.0,"real_usec":7303.7,"est_time":4.2,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":2,"user_time":13.79,"real_time":14.44,"user_ops":148.5,"real_ops":141.8,"user_usec":6733.4,"real_usec":7049.8,"est_time":14.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":551,"user_time":15.24,"real_time":16.19,"user_ops":36.2,"real_ops":34.0,"user_usec":27658.8,"real_usec":29382.8,"est_time":2.32,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":136,"user_time":14.28,"real_time":15.05,"user_ops":38.1,"real_ops":36.1,"user_usec":26250.0,"real_usec":27664.4,"est_time":2.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":35,"user_time":15.01,"real_time":15.67,"user_ops":37.3,"real_ops":35.7,"user_usec":26803.6,"real_usec":27985.4,"est_time":1.4,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":9,"user_time":14.84,"real_time":15.48,"user_ops":38.8,"real_ops":37.2,"user_usec":25763.9,"real_usec":26875.1,"est_time":3.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":2,"user_time":12.94,"real_time":13.64,"user_ops":39.6,"real_ops":37.5,"user_usec":25273.4,"real_usec":26632.4,"est_time":13.74,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":84164,"user_time":16.59,"real_time":29.93,"user_ops":5073.2,"real_ops":2812.4,"user_usec":197.1,"real_usec":355.6,"est_time":3.42,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":60235,"user_time":14.75,"real_time":28.22,"user_ops":16334.9,"real_ops":8537.1,"user_usec":61.2,"real_usec":117.1,"est_time":3.24,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":30117,"user_time":14.87,"real_time":28.88,"user_ops":32405.6,"real_ops":16682.5,"user_usec":30.9,"real_usec":59.9,"est_time":5.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":11130,"user_time":15.2,"real_time":31.42,"user_ops":46863.2,"real_ops":22669.1,"user_usec":21.3,"real_usec":44.1,"est_time":4.64,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":3147,"user_time":15.29,"real_time":30.91,"user_ops":52690.1,"real_ops":26062.5,"user_usec":19.0,"real_usec":38.4,"est_time":4.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":799,"user_time":15.13,"real_time":29.27,"user_ops":54076.4,"real_ops":27955.0,"user_usec":18.5,"real_usec":35.8,"est_time":4.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":193,"user_time":15.24,"real_time":28.63,"user_ops":51871.9,"real_ops":27613.2,"user_usec":19.3,"real_usec":36.2,"est_time":3.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":73142,"user_time":13.85,"real_time":24.11,"user_ops":5281.0,"real_ops":3033.5,"user_usec":189.4,"real_usec":329.7,"est_time":3.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":59076,"user_time":15.99,"real_time":29.25,"user_ops":14778.2,"real_ops":8079.8,"user_usec":67.7,"real_usec":123.8,"est_time":3.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":27927,"user_time":15.21,"real_time":29.19,"user_ops":29377.5,"real_ops":15305.8,"user_usec":34.0,"real_usec":65.3,"est_time":3.6,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":9481,"user_time":15.12,"real_time":31.08,"user_ops":40131.2,"real_ops":19523.0,"user_usec":24.9,"real_usec":51.2,"est_time":4.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":2594,"user_time":14.89,"real_time":28.67,"user_ops":44598.0,"real_ops":23162.8,"user_usec":22.4,"real_usec":43.2,"est_time":4.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":666,"user_time":15.09,"real_time":28.43,"user_ops":45194.4,"real_ops":23986.1,"user_usec":22.1,"real_usec":41.7,"est_time":4.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":113,"user_time":11.54,"real_time":20.71,"user_ops":40108.1,"real_ops":22344.0,"user_usec":24.9,"real_usec":44.8,"est_time":2.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":75851,"user_time":15.3,"real_time":26.66,"user_ops":4957.6,"real_ops":2845.0,"user_usec":201.7,"real_usec":351.5,"est_time":3.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":49548,"user_time":16.36,"real_time":28.87,"user_ops":12114.4,"real_ops":6864.8,"user_usec":82.5,"real_usec":145.7,"est_time":3.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":19948,"user_time":15.03,"real_time":26.2,"user_ops":21235.4,"real_ops":12180.1,"user_usec":47.1,"real_usec":82.1,"est_time":3.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":6193,"user_time":14.99,"real_time":24.47,"user_ops":26441.1,"real_ops":16195.6,"user_usec":37.8,"real_usec":61.7,"est_time":3.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1655,"user_time":15.01,"real_time":23.55,"user_ops":28226.5,"real_ops":17989.4,"user_usec":35.4,"real_usec":55.6,"est_time":3.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":406,"user_time":14.89,"real_time":22.97,"user_ops":27921.0,"real_ops":18103.3,"user_usec":35.8,"real_usec":55.2,"est_time":3.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":96,"user_time":14.92,"real_time":23.09,"user_ops":26355.0,"real_ops":17030.7,"user_usec":37.9,"real_usec":58.7,"est_time":2.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":57962,"user_time":15.32,"real_time":25.93,"user_ops":3783.4,"real_ops":2235.3,"user_usec":264.3,"real_usec":447.4,"est_time":2.31,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":27428,"user_time":14.82,"real_time":23.32,"user_ops":7403.0,"real_ops":4703.6,"user_usec":135.1,"real_usec":212.6,"est_time":2.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":9253,"user_time":14.79,"real_time":21.9,"user_ops":10010.0,"real_ops":6760.2,"user_usec":99.9,"real_usec":147.9,"est_time":3.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":2560,"user_time":14.99,"real_time":20.52,"user_ops":10930.0,"real_ops":7982.6,"user_usec":91.5,"real_usec":125.3,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":648,"user_time":15.13,"real_time":19.32,"user_ops":10964.2,"real_ops":8588.1,"user_usec":91.2,"real_usec":116.4,"est_time":2.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":160,"user_time":15.07,"real_time":19.3,"user_ops":10871.9,"real_ops":8488.6,"user_usec":92.0,"real_usec":117.8,"est_time":2.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":36,"user_time":14.78,"real_time":19.28,"user_ops":9976.7,"real_ops":7647.2,"user_usec":100.2,"real_usec":130.8,"est_time":2.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":31346,"user_time":15.09,"real_time":22.95,"user_ops":2077.3,"real_ops":1365.7,"user_usec":481.4,"real_usec":732.2,"est_time":3.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":10971,"user_time":15.14,"real_time":21.4,"user_ops":2898.5,"real_ops":2051.0,"user_usec":345.0,"real_usec":487.6,"est_time":2.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":3047,"user_time":14.85,"real_time":18.71,"user_ops":3283.0,"real_ops":2605.4,"user_usec":304.6,"real_usec":383.8,"est_time":2.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":761,"user_time":14.57,"real_time":18.11,"user_ops":3342.8,"real_ops":2689.1,"user_usec":299.2,"real_usec":371.9,"est_time":2.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":193,"user_time":14.9,"real_time":17.33,"user_ops":3316.0,"real_ops":2850.8,"user_usec":301.6,"real_usec":350.8,"est_time":1.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":48,"user_time":14.79,"real_time":16.73,"user_ops":3323.3,"real_ops":2937.7,"user_usec":300.9,"real_usec":340.4,"est_time":1.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":10,"user_time":14.04,"real_time":16.44,"user_ops":2917.4,"real_ops":2492.1,"user_usec":342.8,"real_usec":401.3,"est_time":3.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":11462,"user_time":15.37,"real_time":21.26,"user_ops":745.7,"real_ops":539.2,"user_usec":1341.0,"real_usec":1854.6,"est_time":2.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":3199,"user_time":15.17,"real_time":18.42,"user_ops":843.5,"real_ops":694.7,"user_usec":1185.5,"real_usec":1439.4,"est_time":2.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":827,"user_time":14.97,"real_time":17.13,"user_ops":883.9,"real_ops":772.6,"user_usec":1131.3,"real_usec":1294.4,"est_time":1.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":206,"user_time":14.82,"real_time":16.72,"user_ops":889.6,"real_ops":788.4,"user_usec":1124.1,"real_usec":1268.5,"est_time":1.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":52,"user_time":14.75,"real_time":16.28,"user_ops":902.5,"real_ops":817.5,"user_usec":1108.0,"real_usec":1223.2,"est_time":1.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":12,"user_time":13.9,"real_time":15.31,"user_ops":884.0,"real_ops":802.8,"user_usec":1131.2,"real_usec":1245.6,"est_time":3.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":2909,"user_time":14.9,"real_time":18.04,"user_ops":195.2,"real_ops":161.2,"user_usec":5122.0,"real_usec":6201.6,"est_time":2.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":761,"user_time":15.17,"real_time":17.21,"user_ops":200.7,"real_ops":176.9,"user_usec":4983.6,"real_usec":5654.0,"est_time":1.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":187,"user_time":14.46,"real_time":16.11,"user_ops":206.9,"real_ops":185.7,"user_usec":4832.9,"real_usec":5384.3,"est_time":1.76,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":49,"user_time":14.87,"real_time":16.14,"user_ops":210.9,"real_ops":194.3,"user_usec":4741.7,"real_usec":5145.8,"est_time":1.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":12,"user_time":14.66,"real_time":15.99,"user_ops":209.5,"real_ops":192.1,"user_usec":4772.1,"real_usec":5204.8,"est_time":3.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1955","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
]; // 395 minutes

View File

@ -0,0 +1,590 @@
exp_series_suite_insert_many_ruby = [
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":126680,"user_time":15.19,"real_time":16.59,"user_ops":8339.7,"real_ops":7634.6,"user_usec":119.9,"real_usec":131.0,"est_time":3.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":48761,"user_time":14.81,"real_time":15.34,"user_ops":13169.8,"real_ops":12717.0,"user_usec":75.9,"real_usec":78.6,"est_time":2.49,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":14769,"user_time":14.62,"real_time":14.79,"user_ops":16163.1,"real_ops":15972.8,"user_usec":61.9,"real_usec":62.6,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":3958,"user_time":14.78,"real_time":14.84,"user_ops":17138.8,"real_ops":17074.3,"user_usec":58.3,"real_usec":58.6,"est_time":3.43,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":1000,"user_time":14.8,"real_time":14.82,"user_ops":17297.3,"real_ops":17278.3,"user_usec":57.8,"real_usec":57.9,"est_time":3.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":242,"user_time":14.89,"real_time":14.9,"user_ops":16642.6,"real_ops":16627.6,"user_usec":60.1,"real_usec":60.1,"est_time":3.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":66,"user_time":14.76,"real_time":14.78,"user_ops":18315.4,"real_ops":18286.9,"user_usec":54.6,"real_usec":54.7,"est_time":2.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":135032,"user_time":15.02,"real_time":16.55,"user_ops":8990.1,"real_ops":8159.5,"user_usec":111.2,"real_usec":122.6,"est_time":2.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":53894,"user_time":15.0,"real_time":15.59,"user_ops":14371.7,"real_ops":13826.0,"user_usec":69.6,"real_usec":72.3,"est_time":2.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":16000,"user_time":14.69,"real_time":14.89,"user_ops":17426.8,"real_ops":17189.5,"user_usec":57.4,"real_usec":58.2,"est_time":3.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":4363,"user_time":15.06,"real_time":15.14,"user_ops":18541.3,"real_ops":18438.2,"user_usec":53.9,"real_usec":54.2,"est_time":3.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":1103,"user_time":15.03,"real_time":15.07,"user_ops":18787.0,"real_ops":18741.5,"user_usec":53.2,"real_usec":53.4,"est_time":3.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":275,"user_time":15.09,"real_time":15.11,"user_ops":18661.4,"real_ops":18632.4,"user_usec":53.6,"real_usec":53.7,"est_time":3.3,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":63,"user_time":14.6,"real_time":14.61,"user_ops":17674.5,"real_ops":17657.6,"user_usec":56.6,"real_usec":56.6,"est_time":2.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":132129,"user_time":14.97,"real_time":16.43,"user_ops":8826.3,"real_ops":8042.7,"user_usec":113.3,"real_usec":124.3,"est_time":3.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":52965,"user_time":14.96,"real_time":15.67,"user_ops":14161.8,"real_ops":13520.9,"user_usec":70.6,"real_usec":74.0,"est_time":2.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":16168,"user_time":15.03,"real_time":15.25,"user_ops":17211.4,"real_ops":16961.0,"user_usec":58.1,"real_usec":59.0,"est_time":3.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":4363,"user_time":15.17,"real_time":15.41,"user_ops":18406.9,"real_ops":18119.9,"user_usec":54.3,"real_usec":55.2,"est_time":3.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":1078,"user_time":14.94,"real_time":14.98,"user_ops":18471.8,"real_ops":18421.8,"user_usec":54.1,"real_usec":54.3,"est_time":3.41,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":269,"user_time":14.97,"real_time":15.11,"user_ops":18400.5,"real_ops":18226.8,"user_usec":54.3,"real_usec":54.9,"est_time":3.2,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":64,"user_time":14.6,"real_time":14.76,"user_ops":17955.1,"real_ops":17765.2,"user_usec":55.7,"real_usec":56.3,"est_time":3.27,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":128000,"user_time":14.74,"real_time":18.16,"user_ops":8683.9,"real_ops":7048.9,"user_usec":115.2,"real_usec":141.9,"est_time":3.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":51199,"user_time":15.08,"real_time":16.15,"user_ops":13580.6,"real_ops":12677.9,"user_usec":73.6,"real_usec":78.9,"est_time":2.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":14769,"user_time":14.57,"real_time":15.37,"user_ops":16218.5,"real_ops":15374.2,"user_usec":61.7,"real_usec":65.0,"est_time":2.43,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":4042,"user_time":15.02,"real_time":15.45,"user_ops":17222.9,"real_ops":16744.8,"user_usec":58.1,"real_usec":59.7,"est_time":3.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":1021,"user_time":14.95,"real_time":15.41,"user_ops":17483.3,"real_ops":16964.5,"user_usec":57.2,"real_usec":58.9,"est_time":3.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":255,"user_time":15.08,"real_time":15.79,"user_ops":17315.6,"real_ops":16540.0,"user_usec":57.8,"real_usec":60.5,"est_time":3.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":60,"user_time":14.85,"real_time":15.28,"user_ops":16549.5,"real_ops":16086.8,"user_usec":60.4,"real_usec":62.2,"est_time":3.35,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":120470,"user_time":14.98,"real_time":16.47,"user_ops":8042.1,"real_ops":7315.8,"user_usec":124.3,"real_usec":136.7,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":44521,"user_time":14.7,"real_time":15.51,"user_ops":12114.6,"real_ops":11481.3,"user_usec":82.5,"real_usec":87.1,"est_time":2.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":13473,"user_time":15.11,"real_time":16.68,"user_ops":14266.6,"real_ops":12920.9,"user_usec":70.1,"real_usec":77.4,"est_time":2.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":3622,"user_time":15.03,"real_time":16.47,"user_ops":15423.0,"real_ops":14075.9,"user_usec":64.8,"real_usec":71.0,"est_time":2.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":905,"user_time":15.28,"real_time":17.05,"user_ops":15162.3,"real_ops":13587.5,"user_usec":66.0,"real_usec":73.6,"est_time":2.51,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":218,"user_time":14.83,"real_time":16.49,"user_ops":15052.7,"real_ops":13538.2,"user_usec":66.4,"real_usec":73.9,"est_time":2.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":54,"user_time":15.26,"real_time":16.17,"user_ops":14494.4,"real_ops":13675.1,"user_usec":69.0,"real_usec":73.1,"est_time":1.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":100721,"user_time":15.11,"real_time":16.71,"user_ops":6665.9,"real_ops":6026.9,"user_usec":150.0,"real_usec":165.9,"est_time":2.31,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":35310,"user_time":15.48,"real_time":18.72,"user_ops":9124.0,"real_ops":7542.9,"user_usec":109.6,"real_usec":132.6,"est_time":3.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":9846,"user_time":14.87,"real_time":16.76,"user_ops":10594.2,"real_ops":9396.9,"user_usec":94.4,"real_usec":106.4,"est_time":2.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":2560,"user_time":14.82,"real_time":21.71,"user_ops":11055.3,"real_ops":7548.0,"user_usec":90.5,"real_usec":132.5,"est_time":2.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":648,"user_time":14.84,"real_time":16.09,"user_ops":11178.4,"real_ops":10313.0,"user_usec":89.5,"real_usec":97.0,"est_time":2.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":162,"user_time":14.95,"real_time":16.3,"user_ops":11096.2,"real_ops":10178.4,"user_usec":90.1,"real_usec":98.2,"est_time":2.27,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":38,"user_time":14.73,"real_time":15.54,"user_ops":10566.7,"real_ops":10019.0,"user_usec":94.6,"real_usec":99.8,"est_time":1.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":64673,"user_time":15.06,"real_time":17.96,"user_ops":4294.4,"real_ops":3601.6,"user_usec":232.9,"real_usec":277.7,"est_time":2.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert","iterations":19692,"user_time":15.0,"real_time":19.56,"user_ops":5251.2,"real_ops":4026.2,"user_usec":190.4,"real_usec":248.4,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert","iterations":5260,"user_time":14.92,"real_time":17.84,"user_ops":5640.8,"real_ops":4718.5,"user_usec":177.3,"real_usec":211.9,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert","iterations":1352,"user_time":15.0,"real_time":21.4,"user_ops":5768.5,"real_ops":4042.7,"user_usec":173.4,"real_usec":247.4,"est_time":2.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert","iterations":338,"user_time":14.96,"real_time":17.87,"user_ops":5784.0,"real_ops":4840.8,"user_usec":172.9,"real_usec":206.6,"est_time":2.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert","iterations":84,"user_time":14.83,"real_time":17.62,"user_ops":5800.1,"real_ops":4882.2,"user_usec":172.4,"real_usec":204.8,"est_time":1.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":136533,"user_time":15.01,"real_time":16.57,"user_ops":9096.1,"real_ops":8238.0,"user_usec":109.9,"real_usec":121.4,"est_time":2.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":54857,"user_time":14.55,"real_time":15.18,"user_ops":15081.0,"real_ops":14454.6,"user_usec":66.3,"real_usec":69.2,"est_time":2.36,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":17454,"user_time":15.07,"real_time":15.29,"user_ops":18531.1,"real_ops":18258.7,"user_usec":54.0,"real_usec":54.8,"est_time":3.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":4626,"user_time":14.94,"real_time":15.03,"user_ops":19816.9,"real_ops":19692.9,"user_usec":50.5,"real_usec":50.8,"est_time":3.28,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":1156,"user_time":14.76,"real_time":14.78,"user_ops":20049.9,"real_ops":20028.4,"user_usec":49.9,"real_usec":49.9,"est_time":3.2,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":285,"user_time":14.8,"real_time":14.81,"user_ops":19718.9,"real_ops":19706.5,"user_usec":50.7,"real_usec":50.7,"est_time":3.59,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":67,"user_time":14.79,"real_time":14.81,"user_ops":18555.2,"real_ops":18528.3,"user_usec":53.9,"real_usec":54.0,"est_time":2.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":138067,"user_time":15.31,"real_time":16.79,"user_ops":9018.1,"real_ops":8221.2,"user_usec":110.9,"real_usec":121.6,"est_time":2.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":55854,"user_time":15.01,"real_time":15.63,"user_ops":14884.5,"real_ops":14295.6,"user_usec":67.2,"real_usec":70.0,"est_time":2.31,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":17066,"user_time":14.84,"real_time":15.06,"user_ops":18400.0,"real_ops":18131.2,"user_usec":54.3,"real_usec":55.2,"est_time":3.27,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":4571,"user_time":15.06,"real_time":15.17,"user_ops":19425.2,"real_ops":19290.6,"user_usec":51.5,"real_usec":51.8,"est_time":3.27,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":1156,"user_time":14.92,"real_time":14.94,"user_ops":19834.9,"real_ops":19803.1,"user_usec":50.4,"real_usec":50.5,"est_time":3.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":285,"user_time":14.85,"real_time":14.9,"user_ops":19652.5,"real_ops":19584.4,"user_usec":50.9,"real_usec":51.1,"est_time":3.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":68,"user_time":14.89,"real_time":14.95,"user_ops":18705.7,"real_ops":18635.0,"user_usec":53.5,"real_usec":53.7,"est_time":2.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":135032,"user_time":15.06,"real_time":16.55,"user_ops":8966.3,"real_ops":8158.9,"user_usec":111.5,"real_usec":122.6,"est_time":3.14,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":53894,"user_time":14.75,"real_time":15.34,"user_ops":14615.3,"real_ops":14053.4,"user_usec":68.4,"real_usec":71.2,"est_time":2.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":17066,"user_time":14.93,"real_time":15.14,"user_ops":18289.1,"real_ops":18035.0,"user_usec":54.7,"real_usec":55.4,"est_time":3.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":4517,"user_time":14.82,"real_time":15.33,"user_ops":19506.6,"real_ops":18863.4,"user_usec":51.3,"real_usec":53.0,"est_time":3.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":1156,"user_time":15.25,"real_time":15.28,"user_ops":19405.6,"real_ops":19371.7,"user_usec":51.5,"real_usec":51.6,"est_time":3.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":289,"user_time":15.11,"real_time":15.12,"user_ops":19585.4,"real_ops":19571.5,"user_usec":51.1,"real_usec":51.1,"est_time":3.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":67,"user_time":14.82,"real_time":14.85,"user_ops":18517.7,"real_ops":18475.3,"user_usec":54.0,"real_usec":54.1,"est_time":2.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":129347,"user_time":14.82,"real_time":16.25,"user_ops":8727.9,"real_ops":7961.8,"user_usec":114.6,"real_usec":125.6,"est_time":3.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":52067,"user_time":15.03,"real_time":15.66,"user_ops":13856.8,"real_ops":13296.6,"user_usec":72.2,"real_usec":75.2,"est_time":2.62,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":16168,"user_time":15.09,"real_time":15.99,"user_ops":17143.0,"real_ops":16182.0,"user_usec":58.3,"real_usec":61.8,"est_time":3.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":4266,"user_time":14.92,"real_time":15.77,"user_ops":18299.2,"real_ops":17312.7,"user_usec":54.6,"real_usec":57.8,"est_time":3.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":1078,"user_time":14.88,"real_time":15.75,"user_ops":18546.2,"real_ops":17517.1,"user_usec":53.9,"real_usec":57.1,"est_time":3.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":263,"user_time":14.96,"real_time":15.27,"user_ops":18002.1,"real_ops":17637.2,"user_usec":55.5,"real_usec":56.7,"est_time":3.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":61,"user_time":15.04,"real_time":15.48,"user_ops":16612.8,"real_ops":16136.0,"user_usec":60.2,"real_usec":62.0,"est_time":3.28,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":120470,"user_time":14.8,"real_time":16.35,"user_ops":8139.9,"real_ops":7366.4,"user_usec":122.9,"real_usec":135.8,"est_time":2.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":46545,"user_time":14.92,"real_time":15.72,"user_ops":12478.6,"real_ops":11841.7,"user_usec":80.1,"real_usec":84.4,"est_time":2.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":13714,"user_time":14.77,"real_time":15.88,"user_ops":14856.1,"real_ops":13813.6,"user_usec":67.3,"real_usec":72.4,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":3622,"user_time":14.77,"real_time":16.57,"user_ops":15694.5,"real_ops":13987.4,"user_usec":63.7,"real_usec":71.5,"est_time":2.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":923,"user_time":14.96,"real_time":16.14,"user_ops":15794.7,"real_ops":14637.1,"user_usec":63.3,"real_usec":68.3,"est_time":2.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":230,"user_time":15.01,"real_time":16.21,"user_ops":15690.9,"real_ops":14525.2,"user_usec":63.7,"real_usec":68.8,"est_time":2.2,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":55,"user_time":14.83,"real_time":15.61,"user_ops":15190.8,"real_ops":14435.2,"user_usec":65.8,"real_usec":69.3,"est_time":1.69,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":99096,"user_time":14.74,"real_time":16.4,"user_ops":6722.9,"real_ops":6040.7,"user_usec":148.7,"real_usec":165.5,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":35310,"user_time":14.92,"real_time":16.74,"user_ops":9466.5,"real_ops":8439.4,"user_usec":105.6,"real_usec":118.5,"est_time":3.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":10378,"user_time":15.35,"real_time":16.81,"user_ops":10817.5,"real_ops":9880.4,"user_usec":92.4,"real_usec":101.2,"est_time":2.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":2666,"user_time":15.05,"real_time":16.35,"user_ops":11337.1,"real_ops":10433.6,"user_usec":88.2,"real_usec":95.8,"est_time":2.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":666,"user_time":15.0,"real_time":16.16,"user_ops":11366.4,"real_ops":10547.7,"user_usec":88.0,"real_usec":94.8,"est_time":2.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":162,"user_time":14.72,"real_time":16.17,"user_ops":11269.6,"real_ops":10256.1,"user_usec":88.7,"real_usec":97.5,"est_time":2.22,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":40,"user_time":15.2,"real_time":16.66,"user_ops":10778.9,"real_ops":9834.6,"user_usec":92.8,"real_usec":101.7,"est_time":1.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":63340,"user_time":15.06,"real_time":17.77,"user_ops":4205.8,"real_ops":3564.7,"user_usec":237.8,"real_usec":280.5,"est_time":2.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert","iterations":19200,"user_time":15.01,"real_time":18.79,"user_ops":5116.6,"real_ops":4086.8,"user_usec":195.4,"real_usec":244.7,"est_time":2.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert","iterations":5120,"user_time":14.82,"real_time":17.57,"user_ops":5527.7,"real_ops":4662.2,"user_usec":180.9,"real_usec":214.5,"est_time":2.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert","iterations":1297,"user_time":14.79,"real_time":19.37,"user_ops":5612.4,"real_ops":4286.3,"user_usec":178.2,"real_usec":233.3,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert","iterations":333,"user_time":15.16,"real_time":18.04,"user_ops":5623.2,"real_ops":4726.7,"user_usec":177.8,"real_usec":211.6,"est_time":2.41,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert","iterations":82,"user_time":15.01,"real_time":16.68,"user_ops":5594.1,"real_ops":5033.2,"user_usec":178.8,"real_usec":198.7,"est_time":1.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":109714,"user_time":14.73,"real_time":15.98,"user_ops":7448.3,"real_ops":6864.9,"user_usec":134.3,"real_usec":145.7,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":40960,"user_time":14.7,"real_time":15.21,"user_ops":11145.6,"real_ops":10770.1,"user_usec":89.7,"real_usec":92.8,"est_time":2.58,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":12000,"user_time":14.68,"real_time":14.83,"user_ops":13079.0,"real_ops":12944.7,"user_usec":76.5,"real_usec":77.3,"est_time":2.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":3147,"user_time":14.91,"real_time":14.95,"user_ops":13508.2,"real_ops":13468.1,"user_usec":74.0,"real_usec":74.2,"est_time":2.71,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":800,"user_time":14.85,"real_time":14.87,"user_ops":13791.2,"real_ops":13771.5,"user_usec":72.5,"real_usec":72.6,"est_time":2.36,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":199,"user_time":14.93,"real_time":14.94,"user_ops":13648.8,"real_ops":13640.8,"user_usec":73.3,"real_usec":73.3,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":46,"user_time":14.58,"real_time":14.6,"user_ops":12922.9,"real_ops":12902.5,"user_usec":77.4,"real_usec":77.5,"est_time":2.22,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":84164,"user_time":15.04,"real_time":15.91,"user_ops":5596.0,"real_ops":5290.9,"user_usec":178.7,"real_usec":189.0,"est_time":2.4,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":27927,"user_time":14.89,"real_time":15.21,"user_ops":7502.2,"real_ops":7345.8,"user_usec":133.3,"real_usec":136.1,"est_time":1.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":7917,"user_time":15.14,"real_time":15.24,"user_ops":8366.7,"real_ops":8313.6,"user_usec":119.5,"real_usec":120.3,"est_time":2.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":2021,"user_time":15.07,"real_time":15.1,"user_ops":8582.9,"real_ops":8564.9,"user_usec":116.5,"real_usec":116.8,"est_time":3.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":505,"user_time":15.03,"real_time":15.04,"user_ops":8601.5,"real_ops":8594.7,"user_usec":116.3,"real_usec":116.4,"est_time":2.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":124,"user_time":14.86,"real_time":14.87,"user_ops":8544.8,"real_ops":8539.5,"user_usec":117.0,"real_usec":117.1,"est_time":2.62,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":29,"user_time":14.83,"real_time":14.85,"user_ops":8009.7,"real_ops":7999.3,"user_usec":124.8,"real_usec":125.0,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":42666,"user_time":15.01,"real_time":15.54,"user_ops":2842.5,"real_ops":2746.1,"user_usec":351.8,"real_usec":364.1,"est_time":2.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":12190,"user_time":14.5,"real_time":14.68,"user_ops":3362.8,"real_ops":3322.2,"user_usec":297.4,"real_usec":301.0,"est_time":2.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":3310,"user_time":15.07,"real_time":15.11,"user_ops":3514.3,"real_ops":3505.1,"user_usec":284.6,"real_usec":285.3,"est_time":1.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":827,"user_time":14.95,"real_time":14.99,"user_ops":3540.3,"real_ops":3530.1,"user_usec":282.5,"real_usec":283.3,"est_time":1.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":206,"user_time":14.92,"real_time":14.93,"user_ops":3534.6,"real_ops":3533.0,"user_usec":282.9,"real_usec":283.0,"est_time":1.59,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":50,"user_time":14.69,"real_time":14.7,"user_ops":3485.4,"real_ops":3481.9,"user_usec":286.9,"real_usec":287.2,"est_time":0.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":11,"user_time":13.94,"real_time":13.97,"user_ops":3232.1,"real_ops":3225.1,"user_usec":309.4,"real_usec":310.1,"est_time":2.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":15058,"user_time":15.06,"real_time":15.23,"user_ops":999.9,"real_ops":988.6,"user_usec":1000.1,"real_usec":1011.6,"est_time":1.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":3958,"user_time":15.04,"real_time":15.09,"user_ops":1052.7,"real_ops":1048.9,"user_usec":950.0,"real_usec":953.3,"est_time":2.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":999,"user_time":15.02,"real_time":15.04,"user_ops":1064.2,"real_ops":1063.1,"user_usec":939.7,"real_usec":940.6,"est_time":2.48,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":252,"user_time":15.08,"real_time":15.08,"user_ops":1069.5,"real_ops":1069.2,"user_usec":935.0,"real_usec":935.3,"est_time":2.41,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":62,"user_time":14.91,"real_time":14.95,"user_ops":1064.5,"real_ops":1061.8,"user_usec":939.4,"real_usec":941.8,"est_time":1.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":15,"user_time":14.63,"real_time":14.69,"user_ops":1049.9,"real_ops":1045.5,"user_usec":952.5,"real_usec":956.4,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":3,"user_time":12.83,"real_time":12.87,"user_ops":957.8,"real_ops":954.5,"user_usec":1044.1,"real_usec":1047.7,"est_time":8.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":4129,"user_time":15.17,"real_time":15.23,"user_ops":272.2,"real_ops":271.2,"user_usec":3674.0,"real_usec":3687.5,"est_time":2.48,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":1043,"user_time":15.2,"real_time":15.22,"user_ops":274.5,"real_ops":274.1,"user_usec":3643.3,"real_usec":3647.8,"est_time":2.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":260,"user_time":14.96,"real_time":14.98,"user_ops":278.1,"real_ops":277.7,"user_usec":3596.2,"real_usec":3600.4,"est_time":2.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":64,"user_time":14.72,"real_time":14.73,"user_ops":278.3,"real_ops":278.2,"user_usec":3593.8,"real_usec":3595.1,"est_time":1.71,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":16,"user_time":14.71,"real_time":14.74,"user_ops":278.5,"real_ops":277.9,"user_usec":3591.3,"real_usec":3598.1,"est_time":1.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":4,"user_time":14.98,"real_time":15.0,"user_ops":273.4,"real_ops":273.0,"user_usec":3657.2,"real_usec":3662.6,"est_time":7.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.3,"est_time":32.64,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":1043,"user_time":14.95,"real_time":14.98,"user_ops":69.8,"real_ops":69.6,"user_usec":14333.7,"real_usec":14360.4,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":263,"user_time":14.93,"real_time":14.94,"user_ops":70.5,"real_ops":70.4,"user_usec":14192.0,"real_usec":14204.5,"est_time":2.21,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":65,"user_time":14.82,"real_time":14.83,"user_ops":70.2,"real_ops":70.1,"user_usec":14250.0,"real_usec":14258.6,"est_time":1.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":16,"user_time":14.61,"real_time":14.63,"user_ops":70.1,"real_ops":70.0,"user_usec":14267.6,"real_usec":14286.9,"est_time":1.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":4,"user_time":14.64,"real_time":14.66,"user_ops":69.9,"real_ops":69.9,"user_usec":14296.9,"real_usec":14314.1,"est_time":7.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":1,"user_time":14.88,"real_time":14.93,"user_ops":68.8,"real_ops":68.6,"user_usec":14531.3,"real_usec":14576.3,"est_time":29.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":252,"user_time":15.01,"real_time":15.08,"user_ops":16.8,"real_ops":16.7,"user_usec":59563.5,"real_usec":59824.6,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert","iterations":61,"user_time":14.52,"real_time":14.61,"user_ops":16.8,"real_ops":16.7,"user_usec":59508.2,"real_usec":59872.1,"est_time":1.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert","iterations":15,"user_time":14.44,"real_time":14.52,"user_ops":16.6,"real_ops":16.5,"user_usec":60166.7,"real_usec":60496.4,"est_time":1.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert","iterations":3,"user_time":11.4,"real_time":11.44,"user_ops":16.8,"real_ops":16.8,"user_usec":59375.0,"real_usec":59602.3,"est_time":7.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.3,"est_time":30.32,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":109714,"user_time":14.83,"real_time":16.06,"user_ops":7398.1,"real_ops":6832.2,"user_usec":135.2,"real_usec":146.4,"est_time":1.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":39384,"user_time":14.52,"real_time":14.96,"user_ops":10849.6,"real_ops":10532.9,"user_usec":92.2,"real_usec":94.9,"est_time":2.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":11815,"user_time":14.89,"real_time":15.04,"user_ops":12695.8,"real_ops":12571.2,"user_usec":78.8,"real_usec":79.5,"est_time":2.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":3047,"user_time":14.87,"real_time":14.92,"user_ops":13114.2,"real_ops":13071.7,"user_usec":76.3,"real_usec":76.5,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":774,"user_time":14.94,"real_time":14.96,"user_ops":13262.7,"real_ops":13249.0,"user_usec":75.4,"real_usec":75.5,"est_time":2.31,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":190,"user_time":14.8,"real_time":14.82,"user_ops":13145.9,"real_ops":13127.8,"user_usec":76.1,"real_usec":76.2,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":45,"user_time":14.88,"real_time":14.9,"user_ops":12387.1,"real_ops":12374.2,"user_usec":80.7,"real_usec":80.8,"est_time":2.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":81920,"user_time":15.09,"real_time":16.02,"user_ops":5428.8,"real_ops":5112.2,"user_usec":184.2,"real_usec":195.6,"est_time":2.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":26482,"user_time":14.77,"real_time":15.1,"user_ops":7171.8,"real_ops":7015.3,"user_usec":139.4,"real_usec":142.5,"est_time":2.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":7384,"user_time":14.8,"real_time":14.89,"user_ops":7982.7,"real_ops":7934.1,"user_usec":125.3,"real_usec":126.0,"est_time":1.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":1882,"user_time":14.6,"real_time":14.63,"user_ops":8249.9,"real_ops":8231.1,"user_usec":121.2,"real_usec":121.5,"est_time":1.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":484,"user_time":14.91,"real_time":14.92,"user_ops":8310.1,"real_ops":8307.1,"user_usec":120.3,"real_usec":120.4,"est_time":2.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":117,"user_time":14.63,"real_time":14.64,"user_ops":8189.2,"real_ops":8181.9,"user_usec":122.1,"real_usec":122.2,"est_time":1.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":28,"user_time":14.78,"real_time":14.81,"user_ops":7759.7,"real_ops":7744.0,"user_usec":128.9,"real_usec":129.1,"est_time":2.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":38886,"user_time":14.1,"real_time":14.53,"user_ops":2757.9,"real_ops":2676.6,"user_usec":362.6,"real_usec":373.6,"est_time":2.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":12000,"user_time":15.02,"real_time":15.17,"user_ops":3195.7,"real_ops":3163.2,"user_usec":312.9,"real_usec":316.1,"est_time":1.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":3096,"user_time":14.83,"real_time":14.87,"user_ops":3340.3,"real_ops":3330.2,"user_usec":299.4,"real_usec":300.3,"est_time":1.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":786,"user_time":14.85,"real_time":14.87,"user_ops":3387.5,"real_ops":3383.7,"user_usec":295.2,"real_usec":295.5,"est_time":1.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":196,"user_time":14.89,"real_time":14.9,"user_ops":3369.8,"real_ops":3367.5,"user_usec":296.8,"real_usec":297.0,"est_time":1.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":48,"user_time":14.81,"real_time":14.84,"user_ops":3318.8,"real_ops":3313.0,"user_usec":301.3,"real_usec":301.8,"est_time":1.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":11,"user_time":14.54,"real_time":14.56,"user_ops":3098.8,"real_ops":3094.3,"user_usec":322.7,"real_usec":323.2,"est_time":2.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":14222,"user_time":14.81,"real_time":14.99,"user_ops":960.3,"real_ops":948.8,"user_usec":1041.3,"real_usec":1053.9,"est_time":1.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":3692,"user_time":15.01,"real_time":15.06,"user_ops":983.9,"real_ops":980.5,"user_usec":1016.4,"real_usec":1019.9,"est_time":1.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":941,"user_time":14.96,"real_time":14.98,"user_ops":1006.4,"real_ops":1004.9,"user_usec":993.6,"real_usec":995.1,"est_time":1.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":240,"user_time":14.99,"real_time":15.0,"user_ops":1024.7,"real_ops":1024.3,"user_usec":975.9,"real_usec":976.3,"est_time":2.41,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":58,"user_time":14.49,"real_time":14.5,"user_ops":1024.7,"real_ops":1024.1,"user_usec":975.9,"real_usec":976.4,"est_time":0.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":14,"user_time":14.28,"real_time":14.3,"user_ops":1003.9,"real_ops":1002.6,"user_usec":996.1,"real_usec":997.4,"est_time":2.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":3,"user_time":13.49,"real_time":13.51,"user_ops":910.9,"real_ops":909.4,"user_usec":1097.8,"real_usec":1099.7,"est_time":8.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":3918,"user_time":14.87,"real_time":14.92,"user_ops":263.5,"real_ops":262.6,"user_usec":3795.3,"real_usec":3808.6,"est_time":2.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":989,"user_time":14.8,"real_time":14.82,"user_ops":267.3,"real_ops":266.9,"user_usec":3741.2,"real_usec":3746.8,"est_time":2.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":252,"user_time":15.15,"real_time":15.19,"user_ops":266.1,"real_ops":265.4,"user_usec":3757.4,"real_usec":3767.7,"est_time":2.28,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":61,"user_time":14.64,"real_time":14.65,"user_ops":266.7,"real_ops":266.5,"user_usec":3750.0,"real_usec":3751.8,"est_time":2.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":15,"user_time":14.34,"real_time":14.36,"user_ops":267.8,"real_ops":267.4,"user_usec":3734.4,"real_usec":3739.5,"est_time":1.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":3,"user_time":11.72,"real_time":11.73,"user_ops":262.1,"real_ops":261.9,"user_usec":3815.1,"real_usec":3818.5,"est_time":7.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":5.2,"est_time":34.27,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":1010,"user_time":14.97,"real_time":14.99,"user_ops":67.5,"real_ops":67.4,"user_usec":14821.8,"real_usec":14843.8,"est_time":2.63,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":252,"user_time":15.0,"real_time":15.01,"user_ops":67.2,"real_ops":67.2,"user_usec":14881.0,"real_usec":14888.7,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":63,"user_time":14.93,"real_time":14.96,"user_ops":67.5,"real_ops":67.4,"user_usec":14811.5,"real_usec":14842.3,"est_time":1.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":15,"user_time":14.27,"real_time":14.3,"user_ops":67.3,"real_ops":67.1,"user_usec":14864.6,"real_usec":14895.7,"est_time":1.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":3,"user_time":11.37,"real_time":11.38,"user_ops":67.5,"real_ops":67.5,"user_usec":14804.7,"real_usec":14821.7,"est_time":7.58,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":5.0,"est_time":30.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":244,"user_time":15.01,"real_time":15.07,"user_ops":16.3,"real_ops":16.2,"user_usec":61516.4,"real_usec":61751.2,"est_time":2.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert","iterations":58,"user_time":14.32,"real_time":14.39,"user_ops":16.2,"real_ops":16.1,"user_usec":61724.1,"real_usec":62022.4,"est_time":1.14,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert","iterations":14,"user_time":14.46,"real_time":14.53,"user_ops":15.5,"real_ops":15.4,"user_usec":64553.6,"real_usec":64865.6,"est_time":2.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert","iterations":3,"user_time":12.43,"real_time":12.5,"user_ops":15.4,"real_ops":15.4,"user_usec":64739.6,"real_usec":65081.7,"est_time":8.31,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.3,"est_time":31.31,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":136533,"user_time":15.07,"real_time":16.45,"user_ops":9059.9,"real_ops":8299.0,"user_usec":110.4,"real_usec":120.5,"est_time":3.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":54857,"user_time":14.96,"real_time":15.61,"user_ops":14667.6,"real_ops":14056.5,"user_usec":68.2,"real_usec":71.1,"est_time":2.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":16879,"user_time":14.78,"real_time":14.99,"user_ops":18272.3,"real_ops":18011.3,"user_usec":54.7,"real_usec":55.5,"est_time":3.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":4517,"user_time":14.98,"real_time":15.04,"user_ops":19298.3,"real_ops":19219.8,"user_usec":51.8,"real_usec":52.0,"est_time":3.25,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":1129,"user_time":14.67,"real_time":14.7,"user_ops":19701.7,"real_ops":19660.4,"user_usec":50.8,"real_usec":50.9,"est_time":3.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":285,"user_time":15.1,"real_time":15.11,"user_ops":19327.2,"real_ops":19311.3,"user_usec":51.7,"real_usec":51.8,"est_time":2.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":66,"user_time":14.79,"real_time":14.83,"user_ops":18278.3,"real_ops":18229.9,"user_usec":54.7,"real_usec":54.9,"est_time":2.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":62693,"user_time":15.18,"real_time":15.9,"user_ops":4130.0,"real_ops":3942.7,"user_usec":242.1,"real_usec":253.6,"est_time":2.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":19199,"user_time":14.77,"real_time":15.03,"user_ops":5199.5,"real_ops":5110.9,"user_usec":192.3,"real_usec":195.7,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":5260,"user_time":14.84,"real_time":14.92,"user_ops":5671.2,"real_ops":5642.5,"user_usec":176.3,"real_usec":177.2,"est_time":2.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":1352,"user_time":15.04,"real_time":15.07,"user_ops":5753.2,"real_ops":5742.5,"user_usec":173.8,"real_usec":174.1,"est_time":2.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":338,"user_time":15.07,"real_time":15.08,"user_ops":5741.7,"real_ops":5736.3,"user_usec":174.2,"real_usec":174.3,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":83,"user_time":14.9,"real_time":14.91,"user_ops":5704.2,"real_ops":5700.6,"user_usec":175.3,"real_usec":175.4,"est_time":1.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":19,"user_time":14.68,"real_time":14.7,"user_ops":5301.4,"real_ops":5294.2,"user_usec":188.6,"real_usec":188.9,"est_time":2.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":20210,"user_time":14.91,"real_time":15.15,"user_ops":1355.5,"real_ops":1333.6,"user_usec":737.8,"real_usec":749.8,"est_time":2.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":5408,"user_time":15.06,"real_time":15.13,"user_ops":1436.4,"real_ops":1429.5,"user_usec":696.2,"real_usec":699.6,"est_time":2.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":1371,"user_time":14.97,"real_time":14.99,"user_ops":1465.3,"real_ops":1463.7,"user_usec":682.4,"real_usec":683.2,"est_time":1.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":342,"user_time":14.85,"real_time":14.86,"user_ops":1473.9,"real_ops":1473.0,"user_usec":678.5,"real_usec":678.9,"est_time":1.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":84,"user_time":14.54,"real_time":14.55,"user_ops":1479.0,"real_ops":1478.0,"user_usec":676.2,"real_usec":676.6,"est_time":1.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":21,"user_time":14.84,"real_time":14.86,"user_ops":1449.1,"real_ops":1447.4,"user_usec":690.1,"real_usec":690.9,"est_time":1.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":4,"user_time":12.16,"real_time":12.17,"user_ops":1347.4,"real_ops":1346.5,"user_usec":742.2,"real_usec":742.7,"est_time":6.27,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":5120,"user_time":14.78,"real_time":14.87,"user_ops":346.4,"real_ops":344.3,"user_usec":2886.7,"real_usec":2904.6,"est_time":2.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":1315,"user_time":14.87,"real_time":14.89,"user_ops":353.7,"real_ops":353.3,"user_usec":2827.0,"real_usec":2830.4,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":324,"user_time":14.55,"real_time":14.57,"user_ops":356.3,"real_ops":355.8,"user_usec":2806.7,"real_usec":2810.8,"est_time":1.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":83,"user_time":14.88,"real_time":14.89,"user_ops":357.0,"real_ops":356.7,"user_usec":2801.2,"real_usec":2803.8,"est_time":1.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":20,"user_time":14.44,"real_time":14.46,"user_ops":354.6,"real_ops":354.2,"user_usec":2820.3,"real_usec":2823.6,"est_time":1.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":5,"user_time":14.52,"real_time":14.54,"user_ops":352.6,"real_ops":352.2,"user_usec":2835.9,"real_usec":2839.0,"est_time":5.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":1,"user_time":12.66,"real_time":12.68,"user_ops":323.5,"real_ops":323.1,"user_usec":3090.8,"real_usec":3095.4,"est_time":25.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1280,"user_time":15.09,"real_time":15.1,"user_ops":84.8,"real_ops":84.7,"user_usec":11789.1,"real_usec":11800.7,"est_time":2.28,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":320,"user_time":15.01,"real_time":15.05,"user_ops":85.3,"real_ops":85.0,"user_usec":11726.6,"real_usec":11760.2,"est_time":1.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":77,"user_time":14.45,"real_time":14.49,"user_ops":85.3,"real_ops":85.0,"user_usec":11728.9,"real_usec":11761.9,"est_time":1.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":19,"user_time":14.27,"real_time":14.29,"user_ops":85.2,"real_ops":85.1,"user_usec":11735.2,"real_usec":11750.1,"est_time":1.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":5,"user_time":14.95,"real_time":14.97,"user_ops":85.6,"real_ops":85.5,"user_usec":11679.7,"real_usec":11693.0,"est_time":5.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":1,"user_time":12.15,"real_time":12.16,"user_ops":84.3,"real_ops":84.2,"user_usec":11865.2,"real_usec":11876.3,"est_time":24.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":5.2,"est_time":103.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":307,"user_time":15.02,"real_time":15.04,"user_ops":20.4,"real_ops":20.4,"user_usec":48925.1,"real_usec":48984.9,"est_time":2.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":76,"user_time":14.8,"real_time":14.81,"user_ops":20.5,"real_ops":20.5,"user_usec":48684.2,"real_usec":48726.4,"est_time":1.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":19,"user_time":14.8,"real_time":14.82,"user_ops":20.5,"real_ops":20.5,"user_usec":48684.2,"real_usec":48759.1,"est_time":1.58,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":4,"user_time":12.43,"real_time":12.45,"user_ops":20.6,"real_ops":20.6,"user_usec":48554.7,"real_usec":48639.0,"est_time":6.22,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":1,"user_time":12.47,"real_time":12.51,"user_ops":20.5,"real_ops":20.5,"user_usec":48710.9,"real_usec":48862.1,"est_time":24.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":6.0,"est_time":100.41,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":71,"user_time":14.2,"real_time":14.23,"user_ops":5.0,"real_ops":5.0,"user_usec":200000.0,"real_usec":200481.1,"est_time":1.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert","iterations":18,"user_time":14.63,"real_time":14.71,"user_ops":4.9,"real_ops":4.9,"user_usec":203194.4,"real_usec":204245.6,"est_time":1.65,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert","iterations":4,"user_time":12.94,"real_time":12.97,"user_ops":4.9,"real_ops":4.9,"user_usec":202187.5,"real_usec":202690.8,"est_time":6.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert","iterations":1,"user_time":12.95,"real_time":12.98,"user_ops":4.9,"real_ops":4.9,"user_usec":202343.7,"real_usec":202873.0,"est_time":25.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.1,"est_time":103.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":132129,"user_time":14.81,"real_time":16.16,"user_ops":8921.6,"real_ops":8178.1,"user_usec":112.1,"real_usec":122.3,"est_time":2.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":52965,"user_time":14.5,"real_time":15.17,"user_ops":14611.0,"real_ops":13967.6,"user_usec":68.4,"real_usec":71.6,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":16695,"user_time":14.82,"real_time":15.02,"user_ops":18024.3,"real_ops":17780.4,"user_usec":55.5,"real_usec":56.2,"est_time":3.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":4413,"user_time":14.64,"real_time":14.7,"user_ops":19291.8,"real_ops":19211.1,"user_usec":51.8,"real_usec":52.1,"est_time":3.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":1142,"user_time":15.31,"real_time":15.34,"user_ops":19095.5,"real_ops":19062.7,"user_usec":52.4,"real_usec":52.5,"est_time":3.3,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":275,"user_time":14.94,"real_time":14.96,"user_ops":18848.7,"real_ops":18819.4,"user_usec":53.1,"real_usec":53.1,"est_time":3.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":64,"user_time":14.77,"real_time":14.81,"user_ops":17748.4,"real_ops":17702.9,"user_usec":56.3,"real_usec":56.5,"est_time":2.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":64673,"user_time":14.87,"real_time":15.52,"user_ops":4349.2,"real_ops":4167.2,"user_usec":229.9,"real_usec":240.0,"est_time":2.71,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":20210,"user_time":14.88,"real_time":15.15,"user_ops":5432.8,"real_ops":5336.9,"user_usec":184.1,"real_usec":187.4,"est_time":2.28,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":5485,"user_time":15.01,"real_time":15.11,"user_ops":5846.8,"real_ops":5807.2,"user_usec":171.0,"real_usec":172.2,"est_time":2.22,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":1391,"user_time":14.93,"real_time":14.95,"user_ops":5962.8,"real_ops":5954.6,"user_usec":167.7,"real_usec":167.9,"est_time":2.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":342,"user_time":14.6,"real_time":14.62,"user_ops":5996.7,"real_ops":5990.3,"user_usec":166.8,"real_usec":166.9,"est_time":2.41,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":86,"user_time":14.89,"real_time":14.9,"user_ops":5914.3,"real_ops":5911.3,"user_usec":169.1,"real_usec":169.2,"est_time":1.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":19,"user_time":14.19,"real_time":14.24,"user_ops":5484.4,"real_ops":5465.9,"user_usec":182.3,"real_usec":183.0,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":21041,"user_time":15.02,"real_time":15.31,"user_ops":1400.9,"real_ops":1374.0,"user_usec":713.8,"real_usec":727.8,"est_time":2.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":5647,"user_time":15.06,"real_time":15.18,"user_ops":1499.9,"real_ops":1488.0,"user_usec":666.7,"real_usec":672.0,"est_time":1.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":1432,"user_time":14.93,"real_time":14.96,"user_ops":1534.6,"real_ops":1531.7,"user_usec":651.6,"real_usec":652.9,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":358,"user_time":14.88,"real_time":14.93,"user_ops":1539.8,"real_ops":1535.1,"user_usec":649.4,"real_usec":651.4,"est_time":1.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":89,"user_time":14.83,"real_time":14.85,"user_ops":1536.3,"real_ops":1534.7,"user_usec":650.9,"real_usec":651.6,"est_time":1.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":21,"user_time":14.18,"real_time":14.21,"user_ops":1516.5,"real_ops":1513.5,"user_usec":659.4,"real_usec":660.7,"est_time":1.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":5,"user_time":14.41,"real_time":14.45,"user_ops":1421.2,"real_ops":1417.1,"user_usec":703.6,"real_usec":705.7,"est_time":5.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":5408,"user_time":14.78,"real_time":14.86,"user_ops":365.9,"real_ops":364.0,"user_usec":2733.0,"real_usec":2747.3,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":1411,"user_time":15.11,"real_time":15.14,"user_ops":373.5,"real_ops":372.8,"user_usec":2677.2,"real_usec":2682.7,"est_time":1.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":347,"user_time":14.81,"real_time":14.86,"user_ops":374.9,"real_ops":373.7,"user_usec":2667.5,"real_usec":2676.3,"est_time":1.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":88,"user_time":14.86,"real_time":14.91,"user_ops":379.0,"real_ops":377.8,"user_usec":2638.5,"real_usec":2646.6,"est_time":1.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":21,"user_time":14.39,"real_time":14.4,"user_ops":373.6,"real_ops":373.2,"user_usec":2676.7,"real_usec":2679.2,"est_time":1.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":5,"user_time":13.82,"real_time":13.83,"user_ops":370.5,"real_ops":370.2,"user_usec":2699.2,"real_usec":2701.4,"est_time":5.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":1,"user_time":11.79,"real_time":11.81,"user_ops":347.4,"real_ops":346.9,"user_usec":2878.4,"real_usec":2882.6,"est_time":23.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1333,"user_time":14.89,"real_time":14.91,"user_ops":89.5,"real_ops":89.4,"user_usec":11170.3,"real_usec":11188.7,"est_time":2.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":338,"user_time":14.94,"real_time":14.98,"user_ops":90.5,"real_ops":90.2,"user_usec":11050.3,"real_usec":11081.6,"est_time":1.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":83,"user_time":14.7,"real_time":14.7,"user_ops":90.3,"real_ops":90.3,"user_usec":11069.3,"real_usec":11070.5,"est_time":1.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":20,"user_time":14.2,"real_time":14.22,"user_ops":90.1,"real_ops":90.0,"user_usec":11093.7,"real_usec":11107.7,"est_time":1.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":5,"user_time":14.17,"real_time":14.19,"user_ops":90.3,"real_ops":90.2,"user_usec":11070.3,"real_usec":11082.5,"est_time":5.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":1,"user_time":11.51,"real_time":11.53,"user_ops":89.0,"real_ops":88.8,"user_usec":11240.2,"real_usec":11260.0,"est_time":23.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.1,"est_time":98.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":320,"user_time":14.83,"real_time":14.85,"user_ops":21.6,"real_ops":21.6,"user_usec":46343.7,"real_usec":46392.5,"est_time":1.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":80,"user_time":14.79,"real_time":14.8,"user_ops":21.6,"real_ops":21.6,"user_usec":46218.7,"real_usec":46242.9,"est_time":1.51,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":20,"user_time":14.79,"real_time":14.82,"user_ops":21.6,"real_ops":21.6,"user_usec":46218.7,"real_usec":46300.3,"est_time":1.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":5,"user_time":14.73,"real_time":14.75,"user_ops":21.7,"real_ops":21.7,"user_usec":46031.2,"real_usec":46078.7,"est_time":5.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":1,"user_time":11.82,"real_time":11.83,"user_ops":21.7,"real_ops":21.6,"user_usec":46171.9,"real_usec":46219.3,"est_time":23.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":5.2,"est_time":95.65,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":74,"user_time":14.89,"real_time":14.92,"user_ops":5.0,"real_ops":5.0,"user_usec":201216.2,"real_usec":201558.3,"est_time":1.62,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert","iterations":17,"user_time":13.62,"real_time":13.66,"user_ops":5.0,"real_ops":5.0,"user_usec":200294.1,"real_usec":200832.9,"est_time":1.69,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert","iterations":4,"user_time":12.78,"real_time":12.81,"user_ops":5.0,"real_ops":5.0,"user_usec":199687.5,"real_usec":200188.3,"est_time":6.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert","iterations":1,"user_time":12.73,"real_time":12.76,"user_ops":5.0,"real_ops":5.0,"user_usec":198906.2,"real_usec":199330.9,"est_time":25.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":5.0,"est_time":102.72,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0630","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":44521,"user_time":14.46,"real_time":22.19,"user_ops":3078.9,"real_ops":2006.3,"user_usec":324.8,"real_usec":498.4,"est_time":2.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":28981,"user_time":15.24,"real_time":24.76,"user_ops":7606.6,"real_ops":4681.7,"user_usec":131.5,"real_usec":213.6,"est_time":2.58,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":12387,"user_time":15.17,"real_time":22.98,"user_ops":13064.7,"real_ops":8624.7,"user_usec":76.5,"real_usec":115.9,"est_time":2.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":3692,"user_time":14.81,"real_time":19.7,"user_ops":15954.6,"real_ops":11994.2,"user_usec":62.7,"real_usec":83.4,"est_time":2.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":989,"user_time":15.07,"real_time":18.77,"user_ops":16800.5,"real_ops":13489.7,"user_usec":59.5,"real_usec":74.1,"est_time":3.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":240,"user_time":15.07,"real_time":18.32,"user_ops":16307.9,"real_ops":13413.1,"user_usec":61.3,"real_usec":74.6,"est_time":3.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":65,"user_time":14.99,"real_time":19.2,"user_ops":17761.2,"real_ops":13865.0,"user_usec":56.3,"real_usec":72.1,"est_time":3.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":47999,"user_time":14.02,"real_time":22.22,"user_ops":3423.6,"real_ops":2160.5,"user_usec":292.1,"real_usec":462.8,"est_time":2.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":32680,"user_time":15.94,"real_time":25.22,"user_ops":8200.8,"real_ops":5184.0,"user_usec":121.9,"real_usec":192.9,"est_time":3.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":13473,"user_time":15.09,"real_time":22.79,"user_ops":14285.5,"real_ops":9458.4,"user_usec":70.0,"real_usec":105.7,"est_time":2.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":3999,"user_time":14.85,"real_time":20.47,"user_ops":17234.7,"real_ops":12501.7,"user_usec":58.0,"real_usec":80.0,"est_time":4.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":1078,"user_time":14.86,"real_time":18.69,"user_ops":18571.2,"real_ops":14766.3,"user_usec":53.8,"real_usec":67.7,"est_time":3.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":269,"user_time":14.84,"real_time":18.27,"user_ops":18561.7,"real_ops":15075.4,"user_usec":53.9,"real_usec":66.3,"est_time":3.4,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":65,"user_time":14.86,"real_time":19.08,"user_ops":17916.6,"real_ops":13952.5,"user_usec":55.8,"real_usec":71.7,"est_time":3.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51200,"user_time":15.12,"real_time":23.35,"user_ops":3386.2,"real_ops":2193.0,"user_usec":295.3,"real_usec":456.0,"est_time":2.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":30117,"user_time":14.9,"real_time":23.57,"user_ops":8085.1,"real_ops":5111.7,"user_usec":123.7,"real_usec":195.6,"est_time":2.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":13016,"user_time":14.78,"real_time":22.82,"user_ops":14090.4,"real_ops":9127.2,"user_usec":71.0,"real_usec":109.6,"est_time":2.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":4042,"user_time":15.0,"real_time":20.18,"user_ops":17245.9,"real_ops":12816.0,"user_usec":58.0,"real_usec":78.0,"est_time":3.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":1066,"user_time":15.02,"real_time":18.92,"user_ops":18168.8,"real_ops":14424.9,"user_usec":55.0,"real_usec":69.3,"est_time":3.69,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":269,"user_time":15.2,"real_time":20.6,"user_ops":18122.1,"real_ops":13373.9,"user_usec":55.2,"real_usec":74.8,"est_time":3.27,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":65,"user_time":15.05,"real_time":19.7,"user_ops":17690.4,"real_ops":13514.2,"user_usec":56.5,"real_usec":74.0,"est_time":2.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":51199,"user_time":15.99,"real_time":25.21,"user_ops":3201.9,"real_ops":2030.5,"user_usec":312.3,"real_usec":492.5,"est_time":2.72,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":31346,"user_time":14.99,"real_time":27.12,"user_ops":8364.5,"real_ops":4624.1,"user_usec":119.6,"real_usec":216.3,"est_time":8.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":12387,"user_time":14.92,"real_time":27.28,"user_ops":13283.6,"real_ops":7266.1,"user_usec":75.3,"real_usec":137.6,"est_time":5.4,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":3692,"user_time":14.62,"real_time":31.57,"user_ops":16162.0,"real_ops":7485.7,"user_usec":61.9,"real_usec":133.6,"est_time":4.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":1000,"user_time":14.88,"real_time":18.64,"user_ops":17204.3,"real_ops":13734.7,"user_usec":58.1,"real_usec":72.8,"est_time":3.65,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":247,"user_time":14.83,"real_time":18.21,"user_ops":17055.2,"real_ops":13891.8,"user_usec":58.6,"real_usec":72.0,"est_time":3.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":58,"user_time":14.46,"real_time":18.71,"user_ops":16429.3,"real_ops":12694.5,"user_usec":60.9,"real_usec":78.8,"est_time":1.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":48761,"user_time":14.95,"real_time":22.39,"user_ops":3261.6,"real_ops":2177.4,"user_usec":306.6,"real_usec":459.3,"est_time":2.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":28444,"user_time":15.43,"real_time":24.09,"user_ops":7373.7,"real_ops":4723.3,"user_usec":135.6,"real_usec":211.7,"est_time":2.31,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":11462,"user_time":15.04,"real_time":22.48,"user_ops":12193.6,"real_ops":8157.1,"user_usec":82.0,"real_usec":122.6,"est_time":3.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":3368,"user_time":14.73,"real_time":20.07,"user_ops":14633.5,"real_ops":10738.4,"user_usec":68.3,"real_usec":93.1,"est_time":2.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":905,"user_time":15.07,"real_time":20.0,"user_ops":15373.6,"real_ops":11586.0,"user_usec":65.0,"real_usec":86.3,"est_time":2.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":226,"user_time":15.3,"real_time":19.8,"user_ops":15125.8,"real_ops":11690.3,"user_usec":66.1,"real_usec":85.5,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":54,"user_time":14.88,"real_time":19.07,"user_ops":14864.5,"real_ops":11598.1,"user_usec":67.3,"real_usec":86.2,"est_time":2.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":45850,"user_time":16.25,"real_time":25.86,"user_ops":2821.5,"real_ops":1773.1,"user_usec":354.4,"real_usec":564.0,"est_time":2.62,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":23272,"user_time":14.42,"real_time":21.87,"user_ops":6455.5,"real_ops":4256.7,"user_usec":154.9,"real_usec":234.9,"est_time":2.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":8727,"user_time":15.02,"real_time":21.87,"user_ops":9296.4,"real_ops":6383.3,"user_usec":107.6,"real_usec":156.7,"est_time":3.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":2461,"user_time":14.54,"real_time":19.41,"user_ops":10832.5,"real_ops":8115.6,"user_usec":92.3,"real_usec":123.2,"est_time":2.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":648,"user_time":14.77,"real_time":18.87,"user_ops":11231.4,"real_ops":8792.5,"user_usec":89.0,"real_usec":113.7,"est_time":2.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":162,"user_time":15.0,"real_time":19.41,"user_ops":11059.2,"real_ops":8544.4,"user_usec":90.4,"real_usec":117.0,"est_time":2.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":37,"user_time":14.22,"real_time":18.9,"user_ops":10657.7,"real_ops":8018.2,"user_usec":93.8,"real_usec":124.7,"est_time":2.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":35720,"user_time":15.1,"real_time":22.77,"user_ops":2365.6,"real_ops":1568.5,"user_usec":422.7,"real_usec":637.6,"est_time":3.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"value_string_size","operation":"insert_safe","iterations":15999,"user_time":15.08,"real_time":24.39,"user_ops":4243.8,"real_ops":2624.0,"user_usec":235.6,"real_usec":381.1,"est_time":4.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"value_string_size","operation":"insert_safe","iterations":4987,"user_time":15.13,"real_time":21.65,"user_ops":5273.8,"real_ops":3684.7,"user_usec":189.6,"real_usec":271.4,"est_time":2.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"value_string_size","operation":"insert_safe","iterations":1315,"user_time":14.89,"real_time":20.81,"user_ops":5652.1,"real_ops":4043.6,"user_usec":176.9,"real_usec":247.3,"est_time":2.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"value_string_size","operation":"insert_safe","iterations":338,"user_time":14.98,"real_time":20.32,"user_ops":5776.2,"real_ops":4258.5,"user_usec":173.1,"real_usec":234.8,"est_time":2.35,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"value_string_size","operation":"insert_safe","iterations":83,"user_time":14.81,"real_time":20.42,"user_ops":5738.8,"real_ops":4162.9,"user_usec":174.3,"real_usec":240.2,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"value_string_size","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":51199,"user_time":15.18,"real_time":23.64,"user_ops":3372.8,"real_ops":2165.5,"user_usec":296.5,"real_usec":461.8,"est_time":2.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":33032,"user_time":14.95,"real_time":23.42,"user_ops":8838.0,"real_ops":5640.7,"user_usec":113.1,"real_usec":177.3,"est_time":5.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":13473,"user_time":14.76,"real_time":22.74,"user_ops":14604.9,"real_ops":9481.3,"user_usec":68.5,"real_usec":105.5,"est_time":2.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":4219,"user_time":14.88,"real_time":22.41,"user_ops":18146.2,"real_ops":12048.3,"user_usec":55.1,"real_usec":83.0,"est_time":3.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":1129,"user_time":14.96,"real_time":18.78,"user_ops":19319.8,"real_ops":15390.5,"user_usec":51.8,"real_usec":65.0,"est_time":3.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":279,"user_time":14.7,"real_time":18.57,"user_ops":19435.1,"real_ops":15384.8,"user_usec":51.5,"real_usec":65.0,"est_time":3.64,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":66,"user_time":14.52,"real_time":18.83,"user_ops":18618.2,"real_ops":14359.5,"user_usec":53.7,"real_usec":69.6,"est_time":3.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":50360,"user_time":15.28,"real_time":23.53,"user_ops":3295.8,"real_ops":2140.0,"user_usec":303.4,"real_usec":467.3,"est_time":2.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":33391,"user_time":15.13,"real_time":22.41,"user_ops":8827.8,"real_ops":5959.2,"user_usec":113.3,"real_usec":167.8,"est_time":3.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":13714,"user_time":15.07,"real_time":22.44,"user_ops":14560.3,"real_ops":9776.9,"user_usec":68.7,"real_usec":102.3,"est_time":3.2,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":4129,"user_time":14.8,"real_time":19.44,"user_ops":17855.1,"real_ops":13596.2,"user_usec":56.0,"real_usec":73.5,"est_time":3.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":1116,"user_time":14.9,"real_time":18.84,"user_ops":19174.2,"real_ops":15166.4,"user_usec":52.2,"real_usec":65.9,"est_time":3.58,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":275,"user_time":14.65,"real_time":18.13,"user_ops":19221.8,"real_ops":15536.0,"user_usec":52.0,"real_usec":64.4,"est_time":3.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":68,"user_time":15.06,"real_time":18.88,"user_ops":18494.6,"real_ops":14753.7,"user_usec":54.1,"real_usec":67.8,"est_time":3.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":52965,"user_time":15.48,"real_time":23.76,"user_ops":3421.5,"real_ops":2229.6,"user_usec":292.3,"real_usec":448.5,"est_time":2.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":33391,"user_time":15.55,"real_time":23.9,"user_ops":8589.3,"real_ops":5587.4,"user_usec":116.4,"real_usec":179.0,"est_time":3.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":13714,"user_time":15.13,"real_time":23.51,"user_ops":14502.6,"real_ops":9332.1,"user_usec":69.0,"real_usec":107.2,"est_time":2.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":4219,"user_time":14.91,"real_time":19.93,"user_ops":18109.7,"real_ops":13551.4,"user_usec":55.2,"real_usec":73.8,"est_time":3.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":1129,"user_time":15.13,"real_time":19.13,"user_ops":19102.7,"real_ops":15109.8,"user_usec":52.3,"real_usec":66.2,"est_time":3.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":282,"user_time":14.93,"real_time":18.42,"user_ops":19341.5,"real_ops":15675.8,"user_usec":51.7,"real_usec":63.8,"est_time":3.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":67,"user_time":14.88,"real_time":18.45,"user_ops":18443.0,"real_ops":14874.9,"user_usec":54.2,"real_usec":67.2,"est_time":3.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":50360,"user_time":14.73,"real_time":22.71,"user_ops":3418.9,"real_ops":2217.7,"user_usec":292.5,"real_usec":450.9,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":31999,"user_time":15.76,"real_time":24.43,"user_ops":8121.6,"real_ops":5238.4,"user_usec":123.1,"real_usec":190.9,"est_time":3.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":12799,"user_time":14.78,"real_time":22.45,"user_ops":13855.5,"real_ops":9120.7,"user_usec":72.2,"real_usec":109.6,"est_time":2.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":4000,"user_time":15.02,"real_time":20.18,"user_ops":17043.9,"real_ops":12688.8,"user_usec":58.7,"real_usec":78.8,"est_time":3.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":1054,"user_time":14.95,"real_time":19.1,"user_ops":18048.4,"real_ops":14125.8,"user_usec":55.4,"real_usec":70.8,"est_time":3.62,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":260,"user_time":14.72,"real_time":18.13,"user_ops":18087.0,"real_ops":14688.8,"user_usec":55.3,"real_usec":68.1,"est_time":3.31,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":63,"user_time":14.74,"real_time":18.46,"user_ops":17506.6,"real_ops":13975.2,"user_usec":57.1,"real_usec":71.6,"est_time":3.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":50360,"user_time":15.8,"real_time":24.58,"user_ops":3187.3,"real_ops":2048.5,"user_usec":313.7,"real_usec":488.2,"est_time":2.64,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":29538,"user_time":15.17,"real_time":22.85,"user_ops":7788.5,"real_ops":5171.5,"user_usec":128.4,"real_usec":193.4,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":11462,"user_time":14.63,"real_time":21.93,"user_ops":12535.3,"real_ops":8364.5,"user_usec":79.8,"real_usec":119.6,"est_time":2.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":3428,"user_time":14.72,"real_time":20.08,"user_ops":14904.3,"real_ops":10926.9,"user_usec":67.1,"real_usec":91.5,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":923,"user_time":15.13,"real_time":19.71,"user_ops":15617.2,"real_ops":11990.2,"user_usec":64.0,"real_usec":83.4,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":230,"user_time":15.06,"real_time":19.97,"user_ops":15638.8,"real_ops":11792.9,"user_usec":63.9,"real_usec":84.8,"est_time":2.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":55,"user_time":14.84,"real_time":19.13,"user_ops":15180.6,"real_ops":11775.0,"user_usec":65.9,"real_usec":84.9,"est_time":1.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":42082,"user_time":13.88,"real_time":21.32,"user_ops":3031.8,"real_ops":1973.4,"user_usec":329.8,"real_usec":506.7,"est_time":2.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":24774,"user_time":15.15,"real_time":23.2,"user_ops":6541.0,"real_ops":4271.0,"user_usec":152.9,"real_usec":234.1,"est_time":2.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":8930,"user_time":14.94,"real_time":22.07,"user_ops":9563.6,"real_ops":6475.2,"user_usec":104.6,"real_usec":154.4,"est_time":3.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":2560,"user_time":14.9,"real_time":19.88,"user_ops":10996.0,"real_ops":8239.9,"user_usec":90.9,"real_usec":121.4,"est_time":2.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":657,"user_time":14.89,"real_time":19.45,"user_ops":11295.6,"real_ops":8646.3,"user_usec":88.5,"real_usec":115.7,"est_time":2.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":162,"user_time":14.89,"real_time":19.18,"user_ops":11140.9,"real_ops":8647.3,"user_usec":89.8,"real_usec":115.6,"est_time":2.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":39,"user_time":14.79,"real_time":19.39,"user_ops":10800.8,"real_ops":8238.0,"user_usec":92.6,"real_usec":121.4,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":33758,"user_time":14.43,"real_time":22.03,"user_ops":2339.4,"real_ops":1532.7,"user_usec":427.5,"real_usec":652.5,"est_time":3.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"key_string_size","operation":"insert_safe","iterations":15360,"user_time":15.02,"real_time":23.59,"user_ops":4090.5,"real_ops":2604.5,"user_usec":244.5,"real_usec":383.9,"est_time":3.72,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"key_string_size","operation":"insert_safe","iterations":4800,"user_time":14.99,"real_time":21.39,"user_ops":5123.4,"real_ops":3591.0,"user_usec":195.2,"real_usec":278.5,"est_time":2.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"key_string_size","operation":"insert_safe","iterations":1315,"user_time":15.09,"real_time":21.23,"user_ops":5577.2,"real_ops":3964.0,"user_usec":179.3,"real_usec":252.3,"est_time":2.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"key_string_size","operation":"insert_safe","iterations":333,"user_time":15.1,"real_time":20.24,"user_ops":5645.6,"real_ops":4211.5,"user_usec":177.1,"real_usec":237.4,"est_time":2.36,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"key_string_size","operation":"insert_safe","iterations":81,"user_time":14.94,"real_time":19.48,"user_ops":5551.8,"real_ops":4257.0,"user_usec":180.1,"real_usec":234.9,"est_time":2.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"key_string_size","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":45176,"user_time":14.32,"real_time":22.23,"user_ops":3154.7,"real_ops":2032.3,"user_usec":317.0,"real_usec":492.1,"est_time":2.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":27428,"user_time":15.1,"real_time":21.95,"user_ops":7265.7,"real_ops":4998.7,"user_usec":137.6,"real_usec":200.1,"est_time":2.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":9846,"user_time":14.3,"real_time":20.15,"user_ops":11016.5,"real_ops":7818.9,"user_usec":90.8,"real_usec":127.9,"est_time":3.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2953,"user_time":14.76,"real_time":18.5,"user_ops":12804.3,"real_ops":10215.7,"user_usec":78.1,"real_usec":97.9,"est_time":2.58,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":774,"user_time":14.82,"real_time":17.69,"user_ops":13370.0,"real_ops":11203.6,"user_usec":74.8,"real_usec":89.3,"est_time":2.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":196,"user_time":14.94,"real_time":17.73,"user_ops":13434.0,"real_ops":11317.7,"user_usec":74.4,"real_usec":88.4,"est_time":2.23,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":46,"user_time":15.34,"real_time":18.49,"user_ops":12282.7,"real_ops":10188.3,"user_usec":81.4,"real_usec":98.2,"est_time":1.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":41513,"user_time":15.38,"real_time":22.82,"user_ops":2699.2,"real_ops":1819.4,"user_usec":370.5,"real_usec":549.6,"est_time":3.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":20480,"user_time":14.95,"real_time":21.57,"user_ops":5479.6,"real_ops":3797.8,"user_usec":182.5,"real_usec":263.3,"est_time":2.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":6981,"user_time":15.08,"real_time":19.3,"user_ops":7406.9,"real_ops":5788.1,"user_usec":135.0,"real_usec":172.8,"est_time":2.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1920,"user_time":14.98,"real_time":17.68,"user_ops":8202.9,"real_ops":6951.7,"user_usec":121.9,"real_usec":143.9,"est_time":3.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":461,"user_time":13.74,"real_time":15.67,"user_ops":8589.2,"real_ops":7532.5,"user_usec":116.4,"real_usec":132.8,"est_time":4.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":122,"user_time":14.8,"real_time":16.57,"user_ops":8441.1,"real_ops":7537.9,"user_usec":118.5,"real_usec":132.7,"est_time":2.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":28,"user_time":14.68,"real_time":17.32,"user_ops":7812.5,"real_ops":6622.9,"user_usec":128.0,"real_usec":151.0,"est_time":2.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":26482,"user_time":14.67,"real_time":20.52,"user_ops":1805.2,"real_ops":1290.6,"user_usec":554.0,"real_usec":774.9,"est_time":2.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":10378,"user_time":14.83,"real_time":19.77,"user_ops":2799.2,"real_ops":2099.6,"user_usec":357.2,"real_usec":476.3,"est_time":2.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2999,"user_time":14.52,"real_time":16.91,"user_ops":3304.7,"real_ops":2837.6,"user_usec":302.6,"real_usec":352.4,"est_time":2.28,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":813,"user_time":15.22,"real_time":16.72,"user_ops":3418.7,"real_ops":3112.3,"user_usec":292.5,"real_usec":321.3,"est_time":1.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":193,"user_time":14.31,"real_time":15.56,"user_ops":3452.7,"real_ops":3174.5,"user_usec":289.6,"real_usec":315.0,"est_time":2.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":50,"user_time":14.8,"real_time":15.83,"user_ops":3459.5,"real_ops":3234.3,"user_usec":289.1,"real_usec":309.2,"est_time":1.21,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":11,"user_time":13.93,"real_time":15.28,"user_ops":3234.5,"real_ops":2947.8,"user_usec":309.2,"real_usec":339.2,"est_time":3.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":12387,"user_time":15.11,"real_time":19.7,"user_ops":819.8,"real_ops":628.7,"user_usec":1219.8,"real_usec":1590.6,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":3692,"user_time":15.36,"real_time":17.91,"user_ops":961.5,"real_ops":824.6,"user_usec":1040.1,"real_usec":1212.8,"est_time":1.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":969,"user_time":14.85,"real_time":15.98,"user_ops":1044.0,"real_ops":970.5,"user_usec":957.8,"real_usec":1030.4,"est_time":2.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":247,"user_time":14.94,"real_time":15.81,"user_ops":1058.1,"real_ops":999.8,"user_usec":945.1,"real_usec":1000.2,"est_time":2.43,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":61,"user_time":14.64,"real_time":15.38,"user_ops":1066.7,"real_ops":1015.5,"user_usec":937.5,"real_usec":984.7,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":15,"user_time":14.89,"real_time":15.73,"user_ops":1031.6,"real_ops":976.6,"user_usec":969.4,"real_usec":1023.9,"est_time":2.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":3,"user_time":12.9,"real_time":13.7,"user_ops":952.6,"real_ops":896.8,"user_usec":1049.8,"real_usec":1115.1,"est_time":9.4,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":3840,"user_time":15.02,"real_time":17.41,"user_ops":255.7,"real_ops":220.6,"user_usec":3911.5,"real_usec":4533.8,"est_time":2.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1032,"user_time":15.08,"real_time":16.29,"user_ops":273.7,"real_ops":253.4,"user_usec":3653.1,"real_usec":3946.6,"est_time":2.49,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":260,"user_time":15.07,"real_time":15.94,"user_ops":276.0,"real_ops":261.0,"user_usec":3622.6,"real_usec":3831.6,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":64,"user_time":14.83,"real_time":15.54,"user_ops":276.2,"real_ops":263.6,"user_usec":3620.6,"real_usec":3794.0,"est_time":1.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":16,"user_time":14.75,"real_time":15.75,"user_ops":277.7,"real_ops":260.1,"user_usec":3601.1,"real_usec":3844.7,"est_time":2.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":3,"user_time":11.29,"real_time":11.97,"user_ops":272.1,"real_ops":256.6,"user_usec":3675.1,"real_usec":3897.4,"est_time":8.22,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":3.8,"est_time":34.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1021,"user_time":14.8,"real_time":15.89,"user_ops":69.0,"real_ops":64.2,"user_usec":14495.6,"real_usec":15567.9,"est_time":2.64,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":260,"user_time":14.83,"real_time":15.57,"user_ops":70.1,"real_ops":66.8,"user_usec":14259.6,"real_usec":14969.4,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":65,"user_time":14.72,"real_time":15.5,"user_ops":70.7,"real_ops":67.1,"user_usec":14153.8,"real_usec":14907.0,"est_time":2.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":16,"user_time":14.47,"real_time":15.07,"user_ops":70.8,"real_ops":68.0,"user_usec":14130.9,"real_usec":14715.1,"est_time":2.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":4,"user_time":14.55,"real_time":15.17,"user_ops":70.4,"real_ops":67.5,"user_usec":14209.0,"real_usec":14810.0,"est_time":7.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1,"user_time":14.8,"real_time":15.43,"user_ops":69.2,"real_ops":66.4,"user_usec":14453.1,"real_usec":15066.9,"est_time":30.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":249,"user_time":14.83,"real_time":15.62,"user_ops":16.8,"real_ops":15.9,"user_usec":59558.2,"real_usec":62744.1,"est_time":2.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":63,"user_time":14.91,"real_time":15.61,"user_ops":16.9,"real_ops":16.1,"user_usec":59166.7,"real_usec":61950.1,"est_time":2.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":15,"user_time":14.14,"real_time":14.8,"user_ops":17.0,"real_ops":16.2,"user_usec":58916.7,"real_usec":61685.5,"est_time":2.49,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":3,"user_time":11.4,"real_time":12.02,"user_ops":16.8,"real_ops":16.0,"user_usec":59375.0,"real_usec":62622.2,"est_time":8.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":6.9,"est_time":31.22,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":47261,"user_time":15.84,"real_time":24.74,"user_ops":2983.6,"real_ops":1910.0,"user_usec":335.2,"real_usec":523.6,"est_time":2.58,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":26947,"user_time":14.98,"real_time":21.81,"user_ops":7195.5,"real_ops":4942.3,"user_usec":139.0,"real_usec":202.3,"est_time":2.41,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":9846,"user_time":14.83,"real_time":21.28,"user_ops":10622.8,"real_ops":7404.1,"user_usec":94.1,"real_usec":135.1,"est_time":3.21,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":2909,"user_time":14.94,"real_time":18.54,"user_ops":12461.6,"real_ops":10039.8,"user_usec":80.2,"real_usec":99.6,"est_time":2.64,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":750,"user_time":14.65,"real_time":17.49,"user_ops":13105.8,"real_ops":10976.7,"user_usec":76.3,"real_usec":91.1,"est_time":2.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":187,"user_time":14.84,"real_time":17.31,"user_ops":12903.5,"real_ops":11059.2,"user_usec":77.5,"real_usec":90.4,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":45,"user_time":15.0,"real_time":18.16,"user_ops":12288.0,"real_ops":10149.2,"user_usec":81.4,"real_usec":98.5,"est_time":1.97,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":38886,"user_time":15.01,"real_time":22.72,"user_ops":2590.7,"real_ops":1711.7,"user_usec":386.0,"real_usec":584.2,"est_time":3.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":19948,"user_time":15.48,"real_time":22.63,"user_ops":5154.5,"real_ops":3526.0,"user_usec":194.0,"real_usec":283.6,"est_time":2.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":6620,"user_time":14.74,"real_time":19.07,"user_ops":7185.9,"real_ops":5555.6,"user_usec":139.2,"real_usec":180.0,"est_time":2.23,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1846,"user_time":15.04,"real_time":17.83,"user_ops":7855.3,"real_ops":6624.8,"user_usec":127.3,"real_usec":150.9,"est_time":1.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":470,"user_time":14.82,"real_time":16.81,"user_ops":8118.8,"real_ops":7159.6,"user_usec":123.2,"real_usec":139.7,"est_time":2.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":117,"user_time":15.12,"real_time":16.88,"user_ops":7923.8,"real_ops":7098.5,"user_usec":126.2,"real_usec":140.9,"est_time":1.48,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":27,"user_time":14.57,"real_time":17.15,"user_ops":7590.4,"real_ops":6448.4,"user_usec":131.7,"real_usec":155.1,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":27428,"user_time":15.16,"real_time":20.93,"user_ops":1809.2,"real_ops":1310.3,"user_usec":552.7,"real_usec":763.2,"est_time":2.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":10240,"user_time":15.14,"real_time":20.06,"user_ops":2705.4,"real_ops":2042.1,"user_usec":369.6,"real_usec":489.7,"est_time":2.59,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":2953,"user_time":14.95,"real_time":17.29,"user_ops":3160.4,"real_ops":2732.4,"user_usec":316.4,"real_usec":366.0,"est_time":2.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":774,"user_time":14.9,"real_time":16.37,"user_ops":3324.6,"real_ops":3025.8,"user_usec":300.8,"real_usec":330.5,"est_time":1.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":193,"user_time":14.7,"real_time":15.94,"user_ops":3361.1,"real_ops":3099.9,"user_usec":297.5,"real_usec":322.6,"est_time":1.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":49,"user_time":15.04,"real_time":16.11,"user_ops":3336.2,"real_ops":3114.2,"user_usec":299.7,"real_usec":321.1,"est_time":1.21,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":11,"user_time":14.43,"real_time":15.73,"user_ops":3122.4,"real_ops":2863.7,"user_usec":320.3,"real_usec":349.2,"est_time":3.43,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":11815,"user_time":14.93,"real_time":19.95,"user_ops":791.4,"real_ops":592.2,"user_usec":1263.6,"real_usec":1688.5,"est_time":2.25,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3555,"user_time":15.22,"real_time":17.56,"user_ops":934.3,"real_ops":809.9,"user_usec":1070.3,"real_usec":1234.8,"est_time":1.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":923,"user_time":15.0,"real_time":16.35,"user_ops":984.5,"real_ops":903.4,"user_usec":1015.7,"real_usec":1106.9,"est_time":1.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":235,"user_time":14.81,"real_time":15.83,"user_ops":1015.5,"real_ops":950.0,"user_usec":984.7,"real_usec":1052.6,"est_time":1.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":57,"user_time":14.38,"real_time":15.12,"user_ops":1014.7,"real_ops":965.3,"user_usec":985.5,"real_usec":1035.9,"est_time":1.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":14,"user_time":14.26,"real_time":14.98,"user_ops":1005.3,"real_ops":957.1,"user_usec":994.7,"real_usec":1044.9,"est_time":2.65,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3,"user_time":13.17,"real_time":13.97,"user_ops":933.0,"real_ops":879.6,"user_usec":1071.8,"real_usec":1136.8,"est_time":9.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3692,"user_time":15.03,"real_time":17.42,"user_ops":245.6,"real_ops":211.9,"user_usec":4071.0,"real_usec":4719.3,"est_time":1.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":950,"user_time":14.66,"real_time":15.79,"user_ops":259.2,"real_ops":240.6,"user_usec":3857.9,"real_usec":4156.2,"est_time":2.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":249,"user_time":14.9,"real_time":15.67,"user_ops":267.4,"real_ops":254.3,"user_usec":3740.0,"real_usec":3932.7,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":62,"user_time":14.69,"real_time":15.4,"user_ops":270.1,"real_ops":257.7,"user_usec":3702.1,"real_usec":3880.5,"est_time":2.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":15,"user_time":14.33,"real_time":14.96,"user_ops":268.0,"real_ops":256.7,"user_usec":3731.8,"real_usec":3895.9,"est_time":2.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3,"user_time":11.81,"real_time":12.46,"user_ops":260.1,"real_ops":246.6,"user_usec":3844.4,"real_usec":4055.5,"est_time":8.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.1,"est_time":35.25,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":979,"user_time":14.91,"real_time":16.44,"user_ops":65.7,"real_ops":59.6,"user_usec":15229.8,"real_usec":16791.8,"est_time":2.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":255,"user_time":15.05,"real_time":15.81,"user_ops":67.8,"real_ops":64.5,"user_usec":14754.9,"real_usec":15503.9,"est_time":2.58,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":63,"user_time":14.86,"real_time":15.51,"user_ops":67.8,"real_ops":65.0,"user_usec":14742.1,"real_usec":15388.9,"est_time":2.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":15,"user_time":14.22,"real_time":14.86,"user_ops":67.5,"real_ops":64.6,"user_usec":14812.5,"real_usec":15475.2,"est_time":2.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3,"user_time":11.37,"real_time":11.98,"user_ops":67.5,"real_ops":64.1,"user_usec":14804.7,"real_usec":15593.3,"est_time":8.23,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.1,"est_time":31.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":235,"user_time":14.7,"real_time":15.61,"user_ops":16.0,"real_ops":15.1,"user_usec":62553.2,"real_usec":66422.5,"est_time":1.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"array_size_fixnum","operation":"insert_safe","iterations":58,"user_time":14.25,"real_time":14.93,"user_ops":16.3,"real_ops":15.5,"user_usec":61422.4,"real_usec":64365.7,"est_time":1.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"array_size_fixnum","operation":"insert_safe","iterations":15,"user_time":14.72,"real_time":15.45,"user_ops":16.3,"real_ops":15.5,"user_usec":61333.3,"real_usec":64364.1,"est_time":2.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3,"user_time":11.74,"real_time":12.36,"user_ops":16.4,"real_ops":15.5,"user_usec":61145.8,"real_usec":64366.3,"est_time":8.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"array_size_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.1,"est_time":32.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"array_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"array_size_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":50360,"user_time":15.03,"real_time":23.32,"user_ops":3350.6,"real_ops":2159.5,"user_usec":298.5,"real_usec":463.1,"est_time":2.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":33032,"user_time":15.86,"real_time":24.89,"user_ops":8330.9,"real_ops":5309.3,"user_usec":120.0,"real_usec":188.3,"est_time":3.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":13473,"user_time":14.96,"real_time":23.38,"user_ops":14409.6,"real_ops":9218.9,"user_usec":69.4,"real_usec":108.5,"est_time":2.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4129,"user_time":14.76,"real_time":20.07,"user_ops":17903.5,"real_ops":13169.6,"user_usec":55.9,"real_usec":75.9,"est_time":3.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1116,"user_time":15.05,"real_time":19.11,"user_ops":18983.1,"real_ops":14948.0,"user_usec":52.7,"real_usec":66.9,"est_time":3.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":272,"user_time":14.73,"real_time":18.23,"user_ops":18908.9,"real_ops":15277.9,"user_usec":52.9,"real_usec":65.5,"est_time":3.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":66,"user_time":15.03,"real_time":19.25,"user_ops":17986.4,"real_ops":14041.6,"user_usec":55.6,"real_usec":71.2,"est_time":3.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":36141,"user_time":15.54,"real_time":21.96,"user_ops":2325.7,"real_ops":1645.5,"user_usec":430.0,"real_usec":607.7,"est_time":3.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":15360,"user_time":15.06,"real_time":20.49,"user_ops":4079.7,"real_ops":2998.3,"user_usec":245.1,"real_usec":333.5,"est_time":3.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4800,"user_time":15.21,"real_time":18.43,"user_ops":5049.3,"real_ops":4167.6,"user_usec":198.0,"real_usec":239.9,"est_time":2.69,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1263,"user_time":14.72,"real_time":16.56,"user_ops":5491.3,"real_ops":4880.1,"user_usec":182.1,"real_usec":204.9,"est_time":2.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":328,"user_time":15.03,"real_time":16.62,"user_ops":5586.7,"real_ops":5052.3,"user_usec":179.0,"real_usec":197.9,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":81,"user_time":15.03,"real_time":16.44,"user_ops":5518.6,"real_ops":5046.1,"user_usec":181.2,"real_usec":198.2,"est_time":1.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":19,"user_time":14.89,"real_time":16.68,"user_ops":5226.6,"real_ops":4666.0,"user_usec":191.3,"real_usec":214.3,"est_time":2.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":14222,"user_time":13.87,"real_time":18.45,"user_ops":1025.4,"real_ops":770.7,"user_usec":975.2,"real_usec":1297.5,"est_time":1.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4860,"user_time":15.09,"real_time":17.79,"user_ops":1288.3,"real_ops":1092.4,"user_usec":776.2,"real_usec":915.4,"est_time":2.48,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1297,"user_time":14.81,"real_time":16.63,"user_ops":1401.2,"real_ops":1248.1,"user_usec":713.7,"real_usec":801.2,"est_time":2.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":338,"user_time":14.91,"real_time":15.84,"user_ops":1450.8,"real_ops":1365.7,"user_usec":689.3,"real_usec":732.2,"est_time":2.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":84,"user_time":14.7,"real_time":15.52,"user_ops":1462.9,"real_ops":1385.2,"user_usec":683.6,"real_usec":721.9,"est_time":1.63,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":21,"user_time":14.77,"real_time":15.55,"user_ops":1455.9,"real_ops":1383.3,"user_usec":686.8,"real_usec":722.9,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4,"user_time":12.33,"real_time":13.23,"user_ops":1328.8,"real_ops":1237.9,"user_usec":752.6,"real_usec":807.8,"est_time":7.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4626,"user_time":14.63,"real_time":17.24,"user_ops":316.2,"real_ops":268.4,"user_usec":3162.6,"real_usec":3726.4,"est_time":2.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1263,"user_time":14.66,"real_time":15.91,"user_ops":344.6,"real_ops":317.5,"user_usec":2901.8,"real_usec":3150.1,"est_time":2.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":324,"user_time":15.03,"real_time":16.0,"user_ops":344.9,"real_ops":324.0,"user_usec":2899.3,"real_usec":3086.4,"est_time":1.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":80,"user_time":14.56,"real_time":15.33,"user_ops":351.6,"real_ops":334.0,"user_usec":2843.8,"real_usec":2994.3,"est_time":1.69,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":20,"user_time":14.33,"real_time":14.98,"user_ops":357.3,"real_ops":341.7,"user_usec":2798.8,"real_usec":2926.2,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":5,"user_time":14.62,"real_time":15.26,"user_ops":350.2,"real_ops":335.4,"user_usec":2855.5,"real_usec":2981.1,"est_time":6.48,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1,"user_time":12.63,"real_time":14.47,"user_ops":324.3,"real_ops":283.1,"user_usec":3083.5,"real_usec":3532.0,"est_time":25.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1043,"user_time":12.78,"real_time":14.76,"user_ops":81.6,"real_ops":70.7,"user_usec":12253.1,"real_usec":14151.6,"est_time":5.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":311,"user_time":14.86,"real_time":15.67,"user_ops":83.7,"real_ops":79.4,"user_usec":11945.3,"real_usec":12597.8,"est_time":2.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":77,"user_time":14.97,"real_time":15.65,"user_ops":82.3,"real_ops":78.7,"user_usec":12151.0,"real_usec":12700.5,"est_time":1.69,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":19,"user_time":14.33,"real_time":15.0,"user_ops":84.9,"real_ops":81.0,"user_usec":11784.5,"real_usec":12339.5,"est_time":2.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4,"user_time":11.95,"real_time":12.54,"user_ops":85.7,"real_ops":81.7,"user_usec":11669.9,"real_usec":12246.5,"est_time":6.62,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1,"user_time":12.19,"real_time":12.76,"user_ops":84.0,"real_ops":80.2,"user_usec":11904.3,"real_usec":12462.5,"est_time":24.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":11.2,"est_time":105.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":303,"user_time":15.01,"real_time":15.82,"user_ops":20.2,"real_ops":19.2,"user_usec":49538.0,"real_usec":52196.5,"est_time":2.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":75,"user_time":14.69,"real_time":15.35,"user_ops":20.4,"real_ops":19.5,"user_usec":48966.7,"real_usec":51174.7,"est_time":1.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":18,"user_time":14.1,"real_time":14.71,"user_ops":20.4,"real_ops":19.6,"user_usec":48958.3,"real_usec":51064.9,"est_time":2.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4,"user_time":12.5,"real_time":13.07,"user_ops":20.5,"real_ops":19.6,"user_usec":48828.1,"real_usec":51040.2,"est_time":6.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1,"user_time":12.49,"real_time":13.07,"user_ops":20.5,"real_ops":19.6,"user_usec":48789.1,"real_usec":51041.2,"est_time":25.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":32.9,"est_time":102.23,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":73,"user_time":14.77,"real_time":15.44,"user_ops":4.9,"real_ops":4.7,"user_usec":202328.8,"real_usec":211488.4,"est_time":1.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":18,"user_time":14.62,"real_time":15.25,"user_ops":4.9,"real_ops":4.7,"user_usec":203055.6,"real_usec":211824.4,"est_time":2.21,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4,"user_time":12.85,"real_time":13.49,"user_ops":5.0,"real_ops":4.7,"user_usec":200781.3,"real_usec":210802.4,"est_time":7.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1,"user_time":12.78,"real_time":13.38,"user_ops":5.0,"real_ops":4.8,"user_usec":199687.5,"real_usec":209024.1,"est_time":26.35,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.1,"est_time":103.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":51199,"user_time":15.46,"real_time":23.68,"user_ops":3311.7,"real_ops":2162.1,"user_usec":302.0,"real_usec":462.5,"est_time":2.64,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":32336,"user_time":15.12,"real_time":22.61,"user_ops":8554.5,"real_ops":5721.1,"user_usec":116.9,"real_usec":174.8,"est_time":3.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":13241,"user_time":14.9,"real_time":21.85,"user_ops":14218.5,"real_ops":9695.6,"user_usec":70.3,"real_usec":103.1,"est_time":2.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":4173,"user_time":15.46,"real_time":20.71,"user_ops":17275.0,"real_ops":12897.2,"user_usec":57.9,"real_usec":77.5,"est_time":3.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1103,"user_time":15.27,"real_time":19.27,"user_ops":18491.7,"real_ops":14653.6,"user_usec":54.1,"real_usec":68.2,"est_time":3.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":266,"user_time":14.55,"real_time":17.93,"user_ops":18720.5,"real_ops":15190.0,"user_usec":53.4,"real_usec":65.8,"est_time":3.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":64,"user_time":14.97,"real_time":19.2,"user_ops":17511.3,"real_ops":13649.8,"user_usec":57.1,"real_usec":73.3,"est_time":3.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":34133,"user_time":14.59,"real_time":21.02,"user_ops":2339.5,"real_ops":1624.1,"user_usec":427.4,"real_usec":615.7,"est_time":3.21,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":15999,"user_time":15.29,"real_time":20.41,"user_ops":4185.5,"real_ops":3135.2,"user_usec":238.9,"real_usec":319.0,"est_time":3.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":4860,"user_time":14.58,"real_time":18.11,"user_ops":5333.3,"real_ops":4294.5,"user_usec":187.5,"real_usec":232.9,"est_time":2.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1352,"user_time":14.9,"real_time":17.07,"user_ops":5807.2,"real_ops":5069.4,"user_usec":172.2,"real_usec":197.3,"est_time":2.32,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":342,"user_time":15.0,"real_time":16.66,"user_ops":5836.8,"real_ops":5255.1,"user_usec":171.3,"real_usec":190.3,"est_time":2.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":85,"user_time":15.17,"real_time":16.59,"user_ops":5737.6,"real_ops":5246.4,"user_usec":174.3,"real_usec":190.6,"est_time":1.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":20,"user_time":15.06,"real_time":17.1,"user_ops":5439.6,"real_ops":4789.4,"user_usec":183.8,"real_usec":208.8,"est_time":2.43,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":16168,"user_time":15.22,"real_time":19.97,"user_ops":1062.3,"real_ops":809.5,"user_usec":941.4,"real_usec":1235.3,"est_time":3.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":4987,"user_time":14.64,"real_time":17.21,"user_ops":1362.6,"real_ops":1159.1,"user_usec":733.9,"real_usec":862.8,"est_time":2.4,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1371,"user_time":14.75,"real_time":16.33,"user_ops":1487.2,"real_ops":1343.6,"user_usec":672.4,"real_usec":744.3,"est_time":2.25,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":347,"user_time":14.97,"real_time":15.96,"user_ops":1483.5,"real_ops":1391.9,"user_usec":674.1,"real_usec":718.5,"est_time":1.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":89,"user_time":14.98,"real_time":15.8,"user_ops":1521.0,"real_ops":1442.4,"user_usec":657.5,"real_usec":693.3,"est_time":1.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":21,"user_time":14.28,"real_time":15.11,"user_ops":1505.9,"real_ops":1423.4,"user_usec":664.1,"real_usec":702.6,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":5,"user_time":14.47,"real_time":15.36,"user_ops":1415.3,"real_ops":1333.1,"user_usec":706.5,"real_usec":750.1,"est_time":6.68,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":5052,"user_time":14.9,"real_time":17.4,"user_ops":339.1,"real_ops":290.4,"user_usec":2949.3,"real_usec":3443.9,"est_time":2.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1371,"user_time":14.91,"real_time":16.26,"user_ops":367.8,"real_ops":337.2,"user_usec":2718.8,"real_usec":2965.7,"est_time":2.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":342,"user_time":14.58,"real_time":15.39,"user_ops":375.3,"real_ops":355.6,"user_usec":2664.5,"real_usec":2812.3,"est_time":1.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":86,"user_time":14.64,"real_time":15.36,"user_ops":376.0,"real_ops":358.3,"user_usec":2659.9,"real_usec":2791.2,"est_time":1.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":21,"user_time":14.54,"real_time":15.22,"user_ops":369.7,"real_ops":353.3,"user_usec":2704.6,"real_usec":2830.5,"est_time":2.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":5,"user_time":13.82,"real_time":14.45,"user_ops":370.5,"real_ops":354.4,"user_usec":2699.2,"real_usec":2821.9,"est_time":6.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1,"user_time":11.69,"real_time":12.35,"user_ops":350.4,"real_ops":331.7,"user_usec":2854.0,"real_usec":3014.6,"est_time":24.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1297,"user_time":14.84,"real_time":15.99,"user_ops":87.4,"real_ops":81.1,"user_usec":11441.8,"real_usec":12329.9,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":338,"user_time":15.17,"real_time":15.93,"user_ops":89.1,"real_ops":84.9,"user_usec":11220.4,"real_usec":11780.0,"est_time":1.92,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":83,"user_time":15.07,"real_time":15.74,"user_ops":88.1,"real_ops":84.4,"user_usec":11347.9,"real_usec":11855.0,"est_time":1.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":20,"user_time":14.3,"real_time":14.95,"user_ops":89.5,"real_ops":85.6,"user_usec":11171.9,"real_usec":11677.8,"est_time":2.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":5,"user_time":14.32,"real_time":14.95,"user_ops":89.4,"real_ops":85.6,"user_usec":11187.5,"real_usec":11681.4,"est_time":6.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1,"user_time":11.45,"real_time":12.04,"user_ops":89.4,"real_ops":85.0,"user_usec":11181.6,"real_usec":11762.3,"est_time":23.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":4.8,"est_time":99.63,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":303,"user_time":14.33,"real_time":15.11,"user_ops":21.1,"real_ops":20.1,"user_usec":47293.7,"real_usec":49856.5,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":78,"user_time":14.54,"real_time":15.25,"user_ops":21.5,"real_ops":20.5,"user_usec":46602.6,"real_usec":48864.6,"est_time":1.69,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":19,"user_time":14.18,"real_time":14.82,"user_ops":21.4,"real_ops":20.5,"user_usec":46644.7,"real_usec":48765.9,"est_time":2.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":4,"user_time":12.01,"real_time":12.58,"user_ops":21.3,"real_ops":20.4,"user_usec":46914.1,"real_usec":49130.2,"est_time":6.63,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1,"user_time":12.14,"real_time":12.72,"user_ops":21.1,"real_ops":20.1,"user_usec":47421.9,"real_usec":49670.1,"est_time":24.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":2.9,"est_time":98.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":0,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":74,"user_time":15.05,"real_time":15.75,"user_ops":4.9,"real_ops":4.7,"user_usec":203378.4,"real_usec":212776.1,"est_time":1.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":2,"multi_size":4,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":18,"user_time":14.6,"real_time":15.24,"user_ops":4.9,"real_ops":4.7,"user_usec":202777.8,"real_usec":211640.8,"est_time":2.21,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":4,"multi_size":16,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":4,"user_time":13.07,"real_time":13.79,"user_ops":4.9,"real_ops":4.6,"user_usec":204218.8,"real_usec":215393.3,"est_time":7.59,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":6,"multi_size":64,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1,"user_time":13.03,"real_time":13.63,"user_ops":4.9,"real_ops":4.7,"user_usec":203593.7,"real_usec":212954.0,"est_time":26.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":8,"multi_size":256,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":0.0,"real_time":0.0,"user_ops":0,"real_ops":0.0,"user_usec":0.0,"real_usec":2.9,"est_time":105.43,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":10,"multi_size":1024,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":12,"multi_size":4096,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":0,"user_time":1.0,"real_time":1.0,"user_ops":0.0,"real_ops":0.0,"user_usec":1000000.0,"real_usec":1000000.0,"est_time":1.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0915","tag":"suite_insert_many","status":"Mongo::InvalidOperation: Exceded maximum insert size of 16,000,000 bytes"},
]; // 345 minutes

View File

@ -0,0 +1,190 @@
exp_series_suite_insert_one_c = [
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":189046,"user_time":14.95,"real_time":16.83,"user_ops":12645.2,"real_ops":11234.0,"user_usec":79.1,"real_usec":89.0,"est_time":2.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":183402,"user_time":14.72,"real_time":16.76,"user_ops":12459.4,"real_ops":10943.2,"user_usec":80.3,"real_usec":91.4,"est_time":2.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":186181,"user_time":14.92,"real_time":16.91,"user_ops":12478.6,"real_ops":11009.5,"user_usec":80.1,"real_usec":90.8,"est_time":2.63,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":186181,"user_time":14.72,"real_time":16.65,"user_ops":12648.2,"real_ops":11185.3,"user_usec":79.1,"real_usec":89.4,"est_time":2.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":183402,"user_time":14.86,"real_time":16.89,"user_ops":12342.0,"real_ops":10860.4,"user_usec":81.0,"real_usec":92.1,"est_time":2.44,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":183402,"user_time":14.97,"real_time":16.98,"user_ops":12251.3,"real_ops":10799.0,"user_usec":81.6,"real_usec":92.6,"est_time":2.6,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":180705,"user_time":14.5,"real_time":16.23,"user_ops":12462.4,"real_ops":11131.9,"user_usec":80.2,"real_usec":89.8,"est_time":2.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":180705,"user_time":15.02,"real_time":17.18,"user_ops":12031.0,"real_ops":10519.7,"user_usec":83.1,"real_usec":95.1,"est_time":2.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":178086,"user_time":14.98,"real_time":17.29,"user_ops":11888.3,"real_ops":10300.9,"user_usec":84.1,"real_usec":97.1,"est_time":2.64,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":173070,"user_time":15.25,"real_time":17.68,"user_ops":11348.9,"real_ops":9790.1,"user_usec":88.1,"real_usec":102.1,"est_time":2.64,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":163840,"user_time":14.93,"real_time":17.49,"user_ops":10973.9,"real_ops":9365.9,"user_usec":91.1,"real_usec":106.8,"est_time":2.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":153600,"user_time":14.95,"real_time":18.09,"user_ops":10274.2,"real_ops":8492.8,"user_usec":97.3,"real_usec":117.7,"est_time":2.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":129347,"user_time":14.88,"real_time":20.22,"user_ops":8692.7,"real_ops":6397.7,"user_usec":115.0,"real_usec":156.3,"est_time":3.29,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":107789,"user_time":15.14,"real_time":22.13,"user_ops":7119.5,"real_ops":4870.1,"user_usec":140.5,"real_usec":205.3,"est_time":2.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":74024,"user_time":14.94,"real_time":43.03,"user_ops":4954.8,"real_ops":1720.2,"user_usec":201.8,"real_usec":581.3,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":43885,"user_time":14.4,"real_time":26.11,"user_ops":3047.6,"real_ops":1680.7,"user_usec":328.1,"real_usec":595.0,"est_time":2.44,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":186181,"user_time":15.25,"real_time":17.31,"user_ops":12208.6,"real_ops":10755.8,"user_usec":81.9,"real_usec":93.0,"est_time":2.44,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":183402,"user_time":14.74,"real_time":16.51,"user_ops":12442.5,"real_ops":11110.1,"user_usec":80.4,"real_usec":90.0,"est_time":2.53,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":178086,"user_time":14.79,"real_time":16.62,"user_ops":12041.0,"real_ops":10713.3,"user_usec":83.0,"real_usec":93.3,"est_time":2.54,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":183402,"user_time":15.19,"real_time":17.13,"user_ops":12073.9,"real_ops":10705.2,"user_usec":82.8,"real_usec":93.4,"est_time":2.46,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":183402,"user_time":15.2,"real_time":17.23,"user_ops":12065.9,"real_ops":10641.7,"user_usec":82.9,"real_usec":94.0,"est_time":2.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":178086,"user_time":14.72,"real_time":16.53,"user_ops":12098.2,"real_ops":10775.9,"user_usec":82.7,"real_usec":92.8,"est_time":3.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":183402,"user_time":15.03,"real_time":16.88,"user_ops":12202.4,"real_ops":10868.2,"user_usec":82.0,"real_usec":92.0,"est_time":2.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":180705,"user_time":14.77,"real_time":16.75,"user_ops":12234.6,"real_ops":10787.1,"user_usec":81.7,"real_usec":92.7,"est_time":2.54,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":178086,"user_time":14.89,"real_time":17.08,"user_ops":11960.1,"real_ops":10425.9,"user_usec":83.6,"real_usec":95.9,"est_time":2.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":166054,"user_time":14.68,"real_time":16.95,"user_ops":11311.6,"real_ops":9798.0,"user_usec":88.4,"real_usec":102.1,"est_time":2.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":153599,"user_time":14.35,"real_time":16.92,"user_ops":10703.8,"real_ops":9078.3,"user_usec":93.4,"real_usec":110.2,"est_time":2.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":151703,"user_time":15.37,"real_time":18.63,"user_ops":9870.1,"real_ops":8142.4,"user_usec":101.3,"real_usec":122.8,"est_time":2.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":121663,"user_time":14.93,"real_time":19.53,"user_ops":8148.9,"real_ops":6228.9,"user_usec":122.7,"real_usec":160.5,"est_time":3.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":93090,"user_time":14.72,"real_time":20.98,"user_ops":6324.0,"real_ops":4438.0,"user_usec":158.1,"real_usec":225.3,"est_time":2.31,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":63340,"user_time":15.21,"real_time":23.3,"user_ops":4164.4,"real_ops":2718.6,"user_usec":240.1,"real_usec":367.8,"est_time":3.24,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":37925,"user_time":15.0,"real_time":27.18,"user_ops":2528.3,"real_ops":1395.3,"user_usec":395.5,"real_usec":716.7,"est_time":2.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":170666,"user_time":14.82,"real_time":16.7,"user_ops":11515.9,"real_ops":10218.2,"user_usec":86.8,"real_usec":97.9,"est_time":2.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":166054,"user_time":15.06,"real_time":16.74,"user_ops":11026.2,"real_ops":9918.4,"user_usec":90.7,"real_usec":100.8,"est_time":2.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":148048,"user_time":14.98,"real_time":16.54,"user_ops":9883.0,"real_ops":8949.5,"user_usec":101.2,"real_usec":111.7,"est_time":3.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":129347,"user_time":14.92,"real_time":16.27,"user_ops":8669.4,"real_ops":7948.6,"user_usec":115.3,"real_usec":125.8,"est_time":3.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":97523,"user_time":15.06,"real_time":16.1,"user_ops":6475.6,"real_ops":6058.4,"user_usec":154.4,"real_usec":165.1,"est_time":2.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":64673,"user_time":14.88,"real_time":15.63,"user_ops":4346.3,"real_ops":4137.8,"user_usec":230.1,"real_usec":241.7,"est_time":2.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":38399,"user_time":15.01,"real_time":15.42,"user_ops":2558.2,"real_ops":2489.5,"user_usec":390.9,"real_usec":401.7,"est_time":2.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":21942,"user_time":15.34,"real_time":15.58,"user_ops":1430.4,"real_ops":1408.4,"user_usec":699.1,"real_usec":710.0,"est_time":2.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":11462,"user_time":14.94,"real_time":15.09,"user_ops":767.2,"real_ops":759.7,"user_usec":1303.4,"real_usec":1316.3,"est_time":1.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":6000,"user_time":15.23,"real_time":15.31,"user_ops":394.0,"real_ops":391.9,"user_usec":2538.3,"real_usec":2551.8,"est_time":1.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":3000,"user_time":14.72,"real_time":14.77,"user_ops":203.8,"real_ops":203.1,"user_usec":4906.7,"real_usec":4923.9,"est_time":1.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":1573,"user_time":15.26,"real_time":15.31,"user_ops":103.1,"real_ops":102.7,"user_usec":9701.2,"real_usec":9733.1,"est_time":1.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":774,"user_time":15.11,"real_time":15.16,"user_ops":51.2,"real_ops":51.1,"user_usec":19522.0,"real_usec":19587.6,"est_time":1.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":393,"user_time":15.06,"real_time":15.08,"user_ops":26.1,"real_ops":26.1,"user_usec":38320.6,"real_usec":38383.4,"est_time":1.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":190,"user_time":14.67,"real_time":15.03,"user_ops":13.0,"real_ops":12.6,"user_usec":77210.5,"real_usec":79110.5,"est_time":1.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":180705,"user_time":15.03,"real_time":16.77,"user_ops":12023.0,"real_ops":10772.6,"user_usec":83.2,"real_usec":92.8,"est_time":2.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":180705,"user_time":15.07,"real_time":17.04,"user_ops":11991.0,"real_ops":10606.8,"user_usec":83.4,"real_usec":94.3,"est_time":2.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":175542,"user_time":14.92,"real_time":16.73,"user_ops":11765.5,"real_ops":10494.1,"user_usec":85.0,"real_usec":95.3,"est_time":2.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":173070,"user_time":14.71,"real_time":16.31,"user_ops":11765.5,"real_ops":10608.8,"user_usec":85.0,"real_usec":94.3,"est_time":2.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":166054,"user_time":14.86,"real_time":16.82,"user_ops":11174.6,"real_ops":9873.3,"user_usec":89.5,"real_usec":101.3,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":157538,"user_time":15.13,"real_time":17.01,"user_ops":10412.3,"real_ops":9261.2,"user_usec":96.0,"real_usec":108.0,"est_time":2.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":135032,"user_time":15.11,"real_time":17.06,"user_ops":8936.6,"real_ops":7917.2,"user_usec":111.9,"real_usec":126.3,"est_time":3.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":109714,"user_time":14.62,"real_time":16.58,"user_ops":7504.4,"real_ops":6618.5,"user_usec":133.3,"real_usec":151.1,"est_time":1.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":78769,"user_time":14.9,"real_time":16.78,"user_ops":5286.5,"real_ops":4694.0,"user_usec":189.2,"real_usec":213.0,"est_time":2.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":52965,"user_time":15.28,"real_time":21.32,"user_ops":3466.3,"real_ops":2483.9,"user_usec":288.5,"real_usec":402.6,"est_time":2.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":31030,"user_time":15.53,"real_time":17.39,"user_ops":1998.1,"real_ops":1784.6,"user_usec":500.5,"real_usec":560.3,"est_time":2.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":16168,"user_time":15.07,"real_time":16.52,"user_ops":1072.9,"real_ops":978.4,"user_usec":932.1,"real_usec":1022.0,"est_time":2.59,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":7917,"user_time":14.79,"real_time":16.09,"user_ops":535.3,"real_ops":492.1,"user_usec":1868.1,"real_usec":2032.0,"est_time":2.6,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":5565,"user_time":15.04,"real_time":17.27,"user_ops":370.0,"real_ops":322.2,"user_usec":2702.6,"real_usec":3103.4,"est_time":2.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":2526,"user_time":14.98,"real_time":20.88,"user_ops":168.6,"real_ops":121.0,"user_usec":5930.3,"real_usec":8264.2,"est_time":2.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":1032,"user_time":14.95,"real_time":16.5,"user_ops":69.0,"real_ops":62.6,"user_usec":14486.4,"real_usec":15986.1,"est_time":2.52,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":545,"user_time":14.78,"real_time":16.92,"user_ops":36.9,"real_ops":32.2,"user_usec":27119.3,"real_usec":31049.9,"est_time":2.53,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":260,"user_time":15.34,"real_time":16.73,"user_ops":16.9,"real_ops":15.5,"user_usec":59000.0,"real_usec":64336.6,"est_time":2.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":198193,"user_time":15.06,"real_time":17.03,"user_ops":13160.2,"real_ops":11638.8,"user_usec":76.0,"real_usec":85.9,"est_time":2.57,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":170666,"user_time":14.89,"real_time":16.85,"user_ops":11461.8,"real_ops":10127.7,"user_usec":87.2,"real_usec":98.7,"est_time":2.52,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":139636,"user_time":14.91,"real_time":16.46,"user_ops":9365.3,"real_ops":8482.8,"user_usec":106.8,"real_usec":117.9,"est_time":2.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":104135,"user_time":15.19,"real_time":16.25,"user_ops":6855.5,"real_ops":6406.4,"user_usec":145.9,"real_usec":156.1,"est_time":2.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":67516,"user_time":14.89,"real_time":15.58,"user_ops":4534.3,"real_ops":4332.2,"user_usec":220.5,"real_usec":230.8,"est_time":2.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":40421,"user_time":15.26,"real_time":15.69,"user_ops":2648.8,"real_ops":2576.5,"user_usec":377.5,"real_usec":388.1,"est_time":2.26,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":22925,"user_time":15.48,"real_time":15.77,"user_ops":1480.9,"real_ops":1454.0,"user_usec":675.2,"real_usec":687.8,"est_time":1.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":12190,"user_time":14.29,"real_time":14.44,"user_ops":853.0,"real_ops":844.2,"user_usec":1172.3,"real_usec":1184.6,"est_time":2.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":5999,"user_time":14.75,"real_time":14.83,"user_ops":406.7,"real_ops":404.4,"user_usec":2458.7,"real_usec":2472.6,"est_time":2.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":3147,"user_time":15.09,"real_time":15.18,"user_ops":208.5,"real_ops":207.4,"user_usec":4795.0,"real_usec":4822.6,"est_time":1.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1548,"user_time":14.81,"real_time":14.85,"user_ops":104.5,"real_ops":104.2,"user_usec":9567.2,"real_usec":9593.4,"est_time":1.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":813,"user_time":14.88,"real_time":14.91,"user_ops":54.6,"real_ops":54.5,"user_usec":18302.6,"real_usec":18344.6,"est_time":1.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":413,"user_time":14.78,"real_time":14.81,"user_ops":27.9,"real_ops":27.9,"user_usec":35786.9,"real_usec":35850.2,"est_time":1.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":201442,"user_time":15.05,"real_time":17.42,"user_ops":13384.9,"real_ops":11567.1,"user_usec":74.7,"real_usec":86.5,"est_time":2.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":195047,"user_time":15.16,"real_time":17.33,"user_ops":12865.9,"real_ops":11255.4,"user_usec":77.7,"real_usec":88.8,"est_time":2.52,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":178086,"user_time":14.5,"real_time":16.53,"user_ops":12281.8,"real_ops":10773.0,"user_usec":81.4,"real_usec":92.8,"est_time":2.57,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":175542,"user_time":14.72,"real_time":16.74,"user_ops":11925.4,"real_ops":10488.3,"user_usec":83.9,"real_usec":95.3,"est_time":3.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":161684,"user_time":14.76,"real_time":16.92,"user_ops":10954.2,"real_ops":9558.2,"user_usec":91.3,"real_usec":104.6,"est_time":2.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":136533,"user_time":15.22,"real_time":17.07,"user_ops":8970.6,"real_ops":8000.2,"user_usec":111.5,"real_usec":125.0,"est_time":3.14,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":100721,"user_time":14.81,"real_time":16.69,"user_ops":6800.9,"real_ops":6033.4,"user_usec":147.0,"real_usec":165.7,"est_time":2.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":68266,"user_time":15.05,"real_time":16.44,"user_ops":4535.9,"real_ops":4152.7,"user_usec":220.5,"real_usec":240.8,"est_time":2.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":43267,"user_time":15.05,"real_time":16.17,"user_ops":2874.9,"real_ops":2675.3,"user_usec":347.8,"real_usec":373.8,"est_time":2.29,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":25180,"user_time":14.92,"real_time":16.19,"user_ops":1687.7,"real_ops":1555.7,"user_usec":592.5,"real_usec":642.8,"est_time":1.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":13714,"user_time":15.04,"real_time":16.23,"user_ops":911.8,"real_ops":844.7,"user_usec":1096.7,"real_usec":1183.8,"est_time":1.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":7111,"user_time":14.97,"real_time":15.74,"user_ops":475.0,"real_ops":451.8,"user_usec":2105.2,"real_usec":2213.5,"est_time":1.76,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":3622,"user_time":15.01,"real_time":15.9,"user_ops":241.3,"real_ops":227.8,"user_usec":4144.1,"real_usec":4389.9,"est_time":1.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1714,"user_time":15.1,"real_time":15.76,"user_ops":113.5,"real_ops":108.7,"user_usec":8809.8,"real_usec":9195.6,"est_time":1.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":705,"user_time":14.99,"real_time":16.04,"user_ops":47.0,"real_ops":44.0,"user_usec":21262.4,"real_usec":22750.0,"est_time":1.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":369,"user_time":14.98,"real_time":15.74,"user_ops":24.6,"real_ops":23.4,"user_usec":40596.2,"real_usec":42659.9,"est_time":1.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1452","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":79792,"user_time":15.34,"real_time":27.01,"user_ops":5201.6,"real_ops":2953.6,"user_usec":192.2,"real_usec":338.6,"est_time":3.34,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":71441,"user_time":14.03,"real_time":24.7,"user_ops":5092.0,"real_ops":2892.3,"user_usec":196.4,"real_usec":345.8,"est_time":3.76,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":78769,"user_time":14.87,"real_time":25.83,"user_ops":5297.2,"real_ops":3049.3,"user_usec":188.8,"real_usec":327.9,"est_time":3.66,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":69818,"user_time":13.41,"real_time":23.82,"user_ops":5206.4,"real_ops":2931.7,"user_usec":192.1,"real_usec":341.1,"est_time":3.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":78769,"user_time":15.54,"real_time":27.17,"user_ops":5068.8,"real_ops":2899.1,"user_usec":197.3,"real_usec":344.9,"est_time":3.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":79792,"user_time":15.48,"real_time":26.99,"user_ops":5154.5,"real_ops":2956.3,"user_usec":194.0,"real_usec":338.3,"est_time":3.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":79792,"user_time":15.67,"real_time":27.23,"user_ops":5092.0,"real_ops":2930.5,"user_usec":196.4,"real_usec":341.2,"est_time":3.52,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":78769,"user_time":15.18,"real_time":26.76,"user_ops":5189.0,"real_ops":2944.0,"user_usec":192.7,"real_usec":339.7,"est_time":3.49,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":70620,"user_time":13.96,"real_time":24.81,"user_ops":5058.7,"real_ops":2846.7,"user_usec":197.7,"real_usec":351.3,"est_time":3.59,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":75851,"user_time":15.08,"real_time":25.9,"user_ops":5029.9,"real_ops":2929.1,"user_usec":198.8,"real_usec":341.4,"est_time":3.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":74926,"user_time":15.58,"real_time":28.07,"user_ops":4809.1,"real_ops":2668.8,"user_usec":207.9,"real_usec":374.7,"est_time":3.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":72282,"user_time":15.66,"real_time":28.13,"user_ops":4615.7,"real_ops":2569.6,"user_usec":216.7,"real_usec":389.2,"est_time":3.8,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":67516,"user_time":15.75,"real_time":30.64,"user_ops":4286.7,"real_ops":2203.4,"user_usec":233.3,"real_usec":453.8,"est_time":4.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":57962,"user_time":16.03,"real_time":30.97,"user_ops":3615.8,"real_ops":1871.3,"user_usec":276.6,"real_usec":534.4,"est_time":2.42,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":43885,"user_time":14.0,"real_time":27.24,"user_ops":3134.6,"real_ops":1611.2,"user_usec":319.0,"real_usec":620.6,"est_time":3.07,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":32680,"user_time":15.31,"real_time":29.65,"user_ops":2134.6,"real_ops":1102.3,"user_usec":468.5,"real_usec":907.2,"est_time":3.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":74024,"user_time":14.87,"real_time":25.73,"user_ops":4978.1,"real_ops":2876.9,"user_usec":200.9,"real_usec":347.6,"est_time":3.4,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":78769,"user_time":15.67,"real_time":26.58,"user_ops":5026.7,"real_ops":2963.3,"user_usec":198.9,"real_usec":337.5,"est_time":3.25,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":70620,"user_time":14.1,"real_time":23.99,"user_ops":5008.5,"real_ops":2943.4,"user_usec":199.7,"real_usec":339.7,"est_time":3.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":77772,"user_time":15.12,"real_time":25.69,"user_ops":5143.7,"real_ops":3027.4,"user_usec":194.4,"real_usec":330.3,"est_time":3.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":70620,"user_time":14.26,"real_time":24.77,"user_ops":4952.3,"real_ops":2851.5,"user_usec":201.9,"real_usec":350.7,"est_time":3.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":74926,"user_time":14.51,"real_time":24.3,"user_ops":5163.7,"real_ops":3082.8,"user_usec":193.7,"real_usec":324.4,"est_time":3.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":77772,"user_time":15.59,"real_time":26.9,"user_ops":4988.6,"real_ops":2891.4,"user_usec":200.5,"real_usec":345.9,"est_time":3.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":69818,"user_time":13.78,"real_time":23.03,"user_ops":5066.6,"real_ops":3031.8,"user_usec":197.4,"real_usec":329.8,"est_time":3.79,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":75851,"user_time":15.84,"real_time":27.62,"user_ops":4788.6,"real_ops":2746.7,"user_usec":208.8,"real_usec":364.1,"est_time":3.47,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":69033,"user_time":14.19,"real_time":24.84,"user_ops":4864.9,"real_ops":2778.8,"user_usec":205.6,"real_usec":359.9,"est_time":3.63,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":66782,"user_time":13.89,"real_time":23.92,"user_ops":4807.9,"real_ops":2791.8,"user_usec":208.0,"real_usec":358.2,"est_time":3.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":70620,"user_time":15.87,"real_time":28.48,"user_ops":4449.9,"real_ops":2479.6,"user_usec":224.7,"real_usec":403.3,"est_time":3.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":63999,"user_time":15.02,"real_time":27.97,"user_ops":4260.9,"real_ops":2287.9,"user_usec":234.7,"real_usec":437.1,"est_time":4.15,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":53894,"user_time":15.07,"real_time":27.64,"user_ops":3576.2,"real_ops":1949.5,"user_usec":279.6,"real_usec":512.9,"est_time":2.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":42082,"user_time":15.12,"real_time":30.92,"user_ops":2783.2,"real_ops":1360.8,"user_usec":359.3,"real_usec":734.9,"est_time":3.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":27428,"user_time":14.95,"real_time":26.3,"user_ops":1834.6,"real_ops":1042.9,"user_usec":545.1,"real_usec":958.9,"est_time":2.59,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":71441,"user_time":14.11,"real_time":23.78,"user_ops":5063.1,"real_ops":3003.9,"user_usec":197.5,"real_usec":332.9,"est_time":3.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":69033,"user_time":13.83,"real_time":23.08,"user_ops":4991.5,"real_ops":2991.1,"user_usec":200.3,"real_usec":334.3,"est_time":3.64,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":64673,"user_time":13.92,"real_time":23.29,"user_ops":4646.0,"real_ops":2776.4,"user_usec":215.2,"real_usec":360.2,"est_time":3.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":61440,"user_time":14.81,"real_time":24.64,"user_ops":4148.5,"real_ops":2493.5,"user_usec":241.0,"real_usec":401.0,"est_time":4.0,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":54857,"user_time":15.57,"real_time":26.67,"user_ops":3523.2,"real_ops":2057.0,"user_usec":283.8,"real_usec":486.1,"est_time":2.51,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":45850,"user_time":14.82,"real_time":21.7,"user_ops":3093.8,"real_ops":2113.4,"user_usec":323.2,"real_usec":473.2,"est_time":2.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":30117,"user_time":14.42,"real_time":20.35,"user_ops":2088.6,"real_ops":1479.8,"user_usec":478.8,"real_usec":675.8,"est_time":1.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":19443,"user_time":15.33,"real_time":21.67,"user_ops":1268.3,"real_ops":897.3,"user_usec":788.5,"real_usec":1114.5,"est_time":2.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":10971,"user_time":14.68,"real_time":19.31,"user_ops":747.3,"real_ops":568.3,"user_usec":1338.1,"real_usec":1759.6,"est_time":2.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":5731,"user_time":14.19,"real_time":17.09,"user_ops":403.9,"real_ops":335.3,"user_usec":2476.0,"real_usec":2982.3,"est_time":2.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3147,"user_time":15.24,"real_time":17.22,"user_ops":206.5,"real_ops":182.7,"user_usec":4842.7,"real_usec":5472.4,"est_time":2.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1627,"user_time":14.89,"real_time":16.22,"user_ops":109.3,"real_ops":100.3,"user_usec":9151.8,"real_usec":9966.2,"est_time":1.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":857,"user_time":15.18,"real_time":16.28,"user_ops":56.5,"real_ops":52.6,"user_usec":17713.0,"real_usec":18999.3,"est_time":1.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":413,"user_time":14.49,"real_time":15.39,"user_ops":28.5,"real_ops":26.8,"user_usec":35084.7,"real_usec":37251.8,"est_time":1.7,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":210,"user_time":15.1,"real_time":16.35,"user_ops":13.9,"real_ops":12.8,"user_usec":71904.8,"real_usec":77870.3,"est_time":1.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":77772,"user_time":15.1,"real_time":25.47,"user_ops":5150.5,"real_ops":3053.2,"user_usec":194.2,"real_usec":327.5,"est_time":3.48,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":71441,"user_time":14.54,"real_time":25.02,"user_ops":4913.4,"real_ops":2855.2,"user_usec":203.5,"real_usec":350.2,"est_time":3.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":77772,"user_time":15.65,"real_time":26.87,"user_ops":4969.5,"real_ops":2894.4,"user_usec":201.2,"real_usec":345.5,"est_time":3.31,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":76800,"user_time":16.3,"real_time":28.67,"user_ops":4711.7,"real_ops":2678.8,"user_usec":212.2,"real_usec":373.3,"est_time":3.4,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":75851,"user_time":16.08,"real_time":27.69,"user_ops":4717.1,"real_ops":2739.7,"user_usec":212.0,"real_usec":365.0,"est_time":3.45,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":72282,"user_time":16.25,"real_time":27.47,"user_ops":4448.1,"real_ops":2631.7,"user_usec":224.8,"real_usec":380.0,"est_time":3.44,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":62693,"user_time":14.41,"real_time":23.87,"user_ops":4350.7,"real_ops":2626.8,"user_usec":229.9,"real_usec":380.7,"est_time":3.97,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":59076,"user_time":15.1,"real_time":24.32,"user_ops":3912.3,"real_ops":2429.5,"user_usec":255.6,"real_usec":411.6,"est_time":2.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":48761,"user_time":14.82,"real_time":23.16,"user_ops":3290.2,"real_ops":2105.7,"user_usec":303.9,"real_usec":474.9,"est_time":2.59,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":36571,"user_time":15.52,"real_time":23.61,"user_ops":2356.4,"real_ops":1548.7,"user_usec":424.4,"real_usec":645.7,"est_time":3.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":24000,"user_time":15.19,"real_time":22.55,"user_ops":1580.0,"real_ops":1064.1,"user_usec":632.9,"real_usec":939.7,"est_time":2.61,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":13963,"user_time":15.37,"real_time":25.84,"user_ops":908.5,"real_ops":540.3,"user_usec":1100.8,"real_usec":1850.7,"est_time":2.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":7245,"user_time":15.11,"real_time":19.5,"user_ops":479.5,"real_ops":371.5,"user_usec":2085.6,"real_usec":2691.4,"est_time":1.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":4923,"user_time":14.83,"real_time":18.98,"user_ops":332.0,"real_ops":259.4,"user_usec":3012.4,"real_usec":3855.2,"est_time":2.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":2493,"user_time":15.77,"real_time":19.9,"user_ops":158.1,"real_ops":125.3,"user_usec":6325.7,"real_usec":7982.8,"est_time":2.43,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1000,"user_time":14.92,"real_time":17.68,"user_ops":67.0,"real_ops":56.6,"user_usec":14920.0,"real_usec":17681.4,"est_time":2.67,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":539,"user_time":15.24,"real_time":17.85,"user_ops":35.4,"real_ops":30.2,"user_usec":28274.6,"real_usec":33113.0,"est_time":2.41,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":249,"user_time":14.76,"real_time":17.28,"user_ops":16.9,"real_ops":14.4,"user_usec":59277.1,"real_usec":69406.4,"est_time":3.03,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":86535,"user_time":14.6,"real_time":25.23,"user_ops":5927.1,"real_ops":3430.4,"user_usec":168.7,"real_usec":291.5,"est_time":3.04,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":84164,"user_time":15.52,"real_time":25.68,"user_ops":5422.9,"real_ops":3277.1,"user_usec":184.4,"real_usec":305.1,"est_time":3.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":72282,"user_time":14.93,"real_time":24.0,"user_ops":4841.4,"real_ops":3011.8,"user_usec":206.6,"real_usec":332.0,"est_time":3.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":60235,"user_time":15.08,"real_time":23.2,"user_ops":3994.4,"real_ops":2596.5,"user_usec":250.4,"real_usec":385.1,"est_time":2.17,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":45850,"user_time":15.14,"real_time":23.79,"user_ops":3028.4,"real_ops":1927.3,"user_usec":330.2,"real_usec":518.9,"est_time":2.84,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":31999,"user_time":15.07,"real_time":21.83,"user_ops":2123.4,"real_ops":1465.6,"user_usec":471.0,"real_usec":682.3,"est_time":3.22,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":19443,"user_time":15.72,"real_time":19.81,"user_ops":1236.8,"real_ops":981.7,"user_usec":808.5,"real_usec":1018.6,"est_time":2.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":9846,"user_time":14.49,"real_time":17.49,"user_ops":679.5,"real_ops":562.8,"user_usec":1471.7,"real_usec":1776.7,"est_time":2.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":5260,"user_time":14.7,"real_time":16.87,"user_ops":357.8,"real_ops":311.7,"user_usec":2794.7,"real_usec":3208.1,"est_time":2.23,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":2666,"user_time":14.0,"real_time":15.5,"user_ops":190.4,"real_ops":172.0,"user_usec":5251.3,"real_usec":5815.2,"est_time":2.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1548,"user_time":15.72,"real_time":16.97,"user_ops":98.5,"real_ops":91.2,"user_usec":10155.0,"real_usec":10962.4,"est_time":2.28,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":716,"user_time":13.41,"real_time":14.35,"user_ops":53.4,"real_ops":49.9,"user_usec":18729.1,"real_usec":20044.5,"est_time":1.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":400,"user_time":15.74,"real_time":16.71,"user_ops":25.4,"real_ops":23.9,"user_usec":39350.0,"real_usec":41763.7,"est_time":1.71,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":86535,"user_time":14.91,"real_time":25.28,"user_ops":5803.8,"real_ops":3422.7,"user_usec":172.3,"real_usec":292.2,"est_time":3.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":86535,"user_time":14.93,"real_time":25.3,"user_ops":5796.0,"real_ops":3420.0,"user_usec":172.5,"real_usec":292.4,"est_time":3.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":85333,"user_time":14.88,"real_time":25.4,"user_ops":5734.7,"real_ops":3360.1,"user_usec":174.4,"real_usec":297.6,"est_time":3.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":84164,"user_time":15.02,"real_time":25.43,"user_ops":5603.5,"real_ops":3310.0,"user_usec":178.5,"real_usec":302.1,"est_time":3.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":77772,"user_time":14.95,"real_time":24.35,"user_ops":5202.1,"real_ops":3193.8,"user_usec":192.2,"real_usec":313.1,"est_time":3.4,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":73142,"user_time":15.17,"real_time":24.23,"user_ops":4821.5,"real_ops":3018.2,"user_usec":207.4,"real_usec":331.3,"est_time":3.32,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":62060,"user_time":14.81,"real_time":23.22,"user_ops":4190.4,"real_ops":2672.1,"user_usec":238.6,"real_usec":374.2,"est_time":3.63,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":48761,"user_time":15.06,"real_time":22.15,"user_ops":3237.8,"real_ops":2201.8,"user_usec":308.9,"real_usec":454.2,"est_time":2.52,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":34909,"user_time":15.19,"real_time":20.99,"user_ops":2298.2,"real_ops":1663.5,"user_usec":435.1,"real_usec":601.2,"est_time":2.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":22260,"user_time":14.97,"real_time":19.27,"user_ops":1487.0,"real_ops":1155.4,"user_usec":672.5,"real_usec":865.5,"est_time":2.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":12590,"user_time":14.85,"real_time":18.6,"user_ops":847.8,"real_ops":676.7,"user_usec":1179.5,"real_usec":1477.7,"est_time":1.98,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":7111,"user_time":15.29,"real_time":18.37,"user_ops":465.1,"real_ops":387.1,"user_usec":2150.2,"real_usec":2583.3,"est_time":1.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":3368,"user_time":14.42,"real_time":16.66,"user_ops":233.6,"real_ops":202.2,"user_usec":4281.5,"real_usec":4945.7,"est_time":1.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1777,"user_time":16.53,"real_time":18.56,"user_ops":107.5,"real_ops":95.7,"user_usec":9302.2,"real_usec":10445.6,"est_time":1.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":676,"user_time":15.59,"real_time":17.08,"user_ops":43.4,"real_ops":39.6,"user_usec":23062.1,"real_usec":25271.2,"est_time":2.18,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":352,"user_time":15.13,"real_time":16.79,"user_ops":23.3,"real_ops":21.0,"user_usec":42983.0,"real_usec":47699.6,"est_time":1.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120510-1530","tag":"suite_insert_one","status":"OK"},
]; // 83 minutes

View File

@ -0,0 +1,190 @@
exp_series_suite_insert_one_ruby = [
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":125387,"user_time":15.11,"real_time":16.31,"user_ops":8298.3,"real_ops":7687.7,"user_usec":120.5,"real_usec":130.1,"est_time":3.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":125387,"user_time":15.21,"real_time":16.6,"user_ops":8243.7,"real_ops":7554.1,"user_usec":121.3,"real_usec":132.4,"est_time":3.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":122880,"user_time":14.93,"real_time":16.24,"user_ops":8230.4,"real_ops":7567.0,"user_usec":121.5,"real_usec":132.2,"est_time":3.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":121663,"user_time":14.59,"real_time":15.89,"user_ops":8338.8,"real_ops":7656.9,"user_usec":119.9,"real_usec":130.6,"est_time":3.3,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":122880,"user_time":14.78,"real_time":16.12,"user_ops":8313.9,"real_ops":7622.7,"user_usec":120.3,"real_usec":131.2,"est_time":3.2,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":120470,"user_time":14.91,"real_time":16.28,"user_ops":8079.8,"real_ops":7400.4,"user_usec":123.8,"real_usec":135.1,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":120470,"user_time":15.18,"real_time":16.39,"user_ops":7936.1,"real_ops":7348.8,"user_usec":126.0,"real_usec":136.1,"est_time":2.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":115924,"user_time":15.2,"real_time":16.41,"user_ops":7626.6,"real_ops":7064.0,"user_usec":131.1,"real_usec":141.6,"est_time":2.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":104135,"user_time":13.91,"real_time":15.28,"user_ops":7486.3,"real_ops":6815.6,"user_usec":133.6,"real_usec":146.7,"est_time":2.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":107789,"user_time":15.07,"real_time":16.6,"user_ops":7152.6,"real_ops":6495.1,"user_usec":139.8,"real_usec":154.0,"est_time":2.14,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":94523,"user_time":14.91,"real_time":16.49,"user_ops":6339.6,"real_ops":5732.3,"user_usec":157.7,"real_usec":174.4,"est_time":2.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":80842,"user_time":15.07,"real_time":16.97,"user_ops":5364.4,"real_ops":4762.6,"user_usec":186.4,"real_usec":210.0,"est_time":2.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":60235,"user_time":14.88,"real_time":19.31,"user_ops":4048.1,"real_ops":3120.0,"user_usec":247.0,"real_usec":320.5,"est_time":1.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":40960,"user_time":15.08,"real_time":16.94,"user_ops":2716.2,"real_ops":2417.4,"user_usec":368.2,"real_usec":413.7,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":23272,"user_time":14.53,"real_time":17.18,"user_ops":1601.7,"real_ops":1354.6,"user_usec":624.4,"real_usec":738.2,"est_time":2.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert","iterations":14490,"user_time":15.03,"real_time":17.89,"user_ops":964.1,"real_ops":810.0,"user_usec":1037.3,"real_usec":1234.6,"est_time":1.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":127999,"user_time":15.13,"real_time":16.45,"user_ops":8459.9,"real_ops":7783.2,"user_usec":118.2,"real_usec":128.5,"est_time":3.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":125387,"user_time":15.13,"real_time":16.53,"user_ops":8287.3,"real_ops":7585.3,"user_usec":120.7,"real_usec":131.8,"est_time":3.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":124121,"user_time":14.68,"real_time":15.86,"user_ops":8455.1,"real_ops":7826.5,"user_usec":118.3,"real_usec":127.8,"est_time":3.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":120470,"user_time":14.34,"real_time":15.49,"user_ops":8401.0,"real_ops":7778.6,"user_usec":119.0,"real_usec":128.6,"est_time":1.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":125387,"user_time":14.9,"real_time":16.21,"user_ops":8415.2,"real_ops":7736.4,"user_usec":118.8,"real_usec":129.3,"est_time":3.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":120470,"user_time":14.76,"real_time":16.12,"user_ops":8161.9,"real_ops":7474.0,"user_usec":122.5,"real_usec":133.8,"est_time":1.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":121663,"user_time":14.98,"real_time":16.3,"user_ops":8121.7,"real_ops":7462.3,"user_usec":123.1,"real_usec":134.0,"est_time":3.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":118153,"user_time":15.04,"real_time":16.42,"user_ops":7855.9,"real_ops":7195.3,"user_usec":127.3,"real_usec":139.0,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":111709,"user_time":14.79,"real_time":16.08,"user_ops":7553.0,"real_ops":6946.2,"user_usec":132.4,"real_usec":144.0,"est_time":1.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":105931,"user_time":14.98,"real_time":16.47,"user_ops":7071.5,"real_ops":6430.7,"user_usec":141.4,"real_usec":155.5,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":93090,"user_time":14.77,"real_time":16.23,"user_ops":6302.6,"real_ops":5735.5,"user_usec":158.7,"real_usec":174.4,"est_time":2.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":77772,"user_time":15.02,"real_time":16.59,"user_ops":5177.9,"real_ops":4689.0,"user_usec":193.1,"real_usec":213.3,"est_time":2.51,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":57962,"user_time":14.84,"real_time":17.83,"user_ops":3905.8,"real_ops":3250.0,"user_usec":256.0,"real_usec":307.7,"est_time":1.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":39384,"user_time":15.06,"real_time":17.85,"user_ops":2615.1,"real_ops":2206.1,"user_usec":382.4,"real_usec":453.3,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":23630,"user_time":14.96,"real_time":18.07,"user_ops":1579.5,"real_ops":1307.8,"user_usec":633.1,"real_usec":764.6,"est_time":2.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert","iterations":13963,"user_time":15.13,"real_time":18.23,"user_ops":922.9,"real_ops":765.8,"user_usec":1083.6,"real_usec":1305.9,"est_time":1.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":99096,"user_time":14.81,"real_time":15.93,"user_ops":6691.2,"real_ops":6222.5,"user_usec":149.5,"real_usec":160.7,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":89043,"user_time":14.85,"real_time":15.85,"user_ops":5996.2,"real_ops":5617.3,"user_usec":166.8,"real_usec":178.0,"est_time":2.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":74024,"user_time":15.11,"real_time":15.89,"user_ops":4899.0,"real_ops":4659.5,"user_usec":204.1,"real_usec":214.6,"est_time":2.51,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":54857,"user_time":14.89,"real_time":15.52,"user_ops":3684.2,"real_ops":3535.1,"user_usec":271.4,"real_usec":282.9,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":36571,"user_time":15.05,"real_time":15.46,"user_ops":2430.0,"real_ops":2365.7,"user_usec":411.5,"real_usec":422.7,"est_time":2.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":21942,"user_time":14.65,"real_time":14.91,"user_ops":1497.7,"real_ops":1472.1,"user_usec":667.7,"real_usec":679.3,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":12190,"user_time":14.59,"real_time":14.73,"user_ops":835.5,"real_ops":827.7,"user_usec":1196.9,"real_usec":1208.2,"est_time":2.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":6620,"user_time":15.09,"real_time":15.17,"user_ops":438.7,"real_ops":436.3,"user_usec":2279.5,"real_usec":2292.0,"est_time":1.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":3428,"user_time":15.13,"real_time":15.17,"user_ops":226.6,"real_ops":225.9,"user_usec":4413.7,"real_usec":4425.8,"est_time":1.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":1714,"user_time":14.79,"real_time":14.83,"user_ops":115.9,"real_ops":115.6,"user_usec":8628.9,"real_usec":8649.9,"est_time":2.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":857,"user_time":14.82,"real_time":14.84,"user_ops":57.8,"real_ops":57.7,"user_usec":17292.9,"real_usec":17319.0,"est_time":1.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":428,"user_time":15.03,"real_time":15.07,"user_ops":28.5,"real_ops":28.4,"user_usec":35116.8,"real_usec":35211.2,"est_time":1.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":210,"user_time":14.82,"real_time":14.86,"user_ops":14.2,"real_ops":14.1,"user_usec":70571.4,"real_usec":70741.6,"est_time":1.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":103,"user_time":15.15,"real_time":15.2,"user_ops":6.8,"real_ops":6.8,"user_usec":147087.4,"real_usec":147614.9,"est_time":1.36,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert","iterations":50,"user_time":14.73,"real_time":14.8,"user_ops":3.4,"real_ops":3.4,"user_usec":294600.0,"real_usec":296016.1,"est_time":1.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":100721,"user_time":14.8,"real_time":15.91,"user_ops":6805.5,"real_ops":6330.4,"user_usec":146.9,"real_usec":158.0,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":93090,"user_time":15.09,"real_time":16.1,"user_ops":6169.0,"real_ops":5782.0,"user_usec":162.1,"real_usec":173.0,"est_time":2.31,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":74926,"user_time":14.93,"real_time":15.76,"user_ops":5018.5,"real_ops":4754.4,"user_usec":199.3,"real_usec":210.3,"est_time":2.64,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":54857,"user_time":14.69,"real_time":15.3,"user_ops":3734.3,"real_ops":3584.5,"user_usec":267.8,"real_usec":279.0,"est_time":1.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":37012,"user_time":14.83,"real_time":15.28,"user_ops":2495.8,"real_ops":2422.2,"user_usec":400.7,"real_usec":412.9,"est_time":2.49,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":22260,"user_time":14.7,"real_time":14.97,"user_ops":1514.3,"real_ops":1487.3,"user_usec":660.4,"real_usec":672.3,"est_time":2.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":12590,"user_time":14.59,"real_time":14.73,"user_ops":862.9,"real_ops":854.7,"user_usec":1158.9,"real_usec":1170.1,"est_time":1.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":6736,"user_time":14.8,"real_time":14.88,"user_ops":455.1,"real_ops":452.7,"user_usec":2197.1,"real_usec":2209.1,"est_time":1.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":3490,"user_time":14.77,"real_time":14.81,"user_ops":236.3,"real_ops":235.6,"user_usec":4232.1,"real_usec":4244.7,"est_time":1.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":1777,"user_time":14.93,"real_time":14.96,"user_ops":119.0,"real_ops":118.8,"user_usec":8401.8,"real_usec":8416.6,"est_time":1.72,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":872,"user_time":14.81,"real_time":14.82,"user_ops":58.9,"real_ops":58.8,"user_usec":16983.9,"real_usec":16998.6,"est_time":1.71,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":421,"user_time":14.84,"real_time":14.85,"user_ops":28.4,"real_ops":28.3,"user_usec":35249.4,"real_usec":35276.9,"est_time":1.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":200,"user_time":15.02,"real_time":15.1,"user_ops":13.3,"real_ops":13.2,"user_usec":75100.0,"real_usec":75524.3,"est_time":1.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":125,"user_time":14.76,"real_time":14.84,"user_ops":8.5,"real_ops":8.4,"user_usec":118080.0,"real_usec":118739.9,"est_time":2.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":58,"user_time":14.25,"real_time":14.31,"user_ops":4.1,"real_ops":4.1,"user_usec":245689.7,"real_usec":246795.2,"est_time":0.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":26,"user_time":14.29,"real_time":14.36,"user_ops":1.8,"real_ops":1.8,"user_usec":549615.4,"real_usec":552262.9,"est_time":1.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":14,"user_time":14.12,"real_time":14.19,"user_ops":1.0,"real_ops":1.0,"user_usec":1008571.4,"real_usec":1013872.0,"est_time":2.05,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert","iterations":7,"user_time":13.94,"real_time":14.03,"user_ops":0.5,"real_ops":0.5,"user_usec":1991428.6,"real_usec":2004297.9,"est_time":4.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":138067,"user_time":14.98,"real_time":16.4,"user_ops":9216.8,"real_ops":8416.6,"user_usec":108.5,"real_usec":118.8,"est_time":2.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":100721,"user_time":15.09,"real_time":16.21,"user_ops":6674.7,"real_ops":6214.2,"user_usec":149.8,"real_usec":160.9,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":63999,"user_time":14.95,"real_time":15.63,"user_ops":4280.9,"real_ops":4094.0,"user_usec":233.6,"real_usec":244.3,"est_time":2.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":37012,"user_time":14.88,"real_time":15.3,"user_ops":2487.4,"real_ops":2419.1,"user_usec":402.0,"real_usec":413.4,"est_time":2.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":20210,"user_time":14.77,"real_time":15.04,"user_ops":1368.3,"real_ops":1344.1,"user_usec":730.8,"real_usec":744.0,"est_time":2.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":10666,"user_time":15.12,"real_time":15.25,"user_ops":705.4,"real_ops":699.2,"user_usec":1417.6,"real_usec":1430.2,"est_time":2.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":5260,"user_time":14.96,"real_time":15.03,"user_ops":351.6,"real_ops":350.0,"user_usec":2844.1,"real_usec":2857.1,"est_time":2.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":2630,"user_time":14.97,"real_time":15.02,"user_ops":175.7,"real_ops":175.1,"user_usec":5692.0,"real_usec":5712.2,"est_time":2.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1297,"user_time":14.87,"real_time":14.9,"user_ops":87.2,"real_ops":87.1,"user_usec":11464.9,"real_usec":11485.9,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":640,"user_time":14.85,"real_time":14.87,"user_ops":43.1,"real_ops":43.0,"user_usec":23203.1,"real_usec":23233.0,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":315,"user_time":14.9,"real_time":14.92,"user_ops":21.1,"real_ops":21.1,"user_usec":47301.6,"real_usec":47380.6,"est_time":2.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":153,"user_time":14.75,"real_time":14.77,"user_ops":10.4,"real_ops":10.4,"user_usec":96405.2,"real_usec":96521.4,"est_time":2.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":75,"user_time":14.8,"real_time":14.85,"user_ops":5.1,"real_ops":5.1,"user_usec":197333.3,"real_usec":197963.7,"est_time":1.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":138067,"user_time":14.88,"real_time":16.3,"user_ops":9278.7,"real_ops":8470.8,"user_usec":107.8,"real_usec":118.1,"est_time":3.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":102400,"user_time":14.85,"real_time":15.85,"user_ops":6895.6,"real_ops":6460.3,"user_usec":145.0,"real_usec":154.8,"est_time":2.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":66064,"user_time":14.87,"real_time":15.63,"user_ops":4442.8,"real_ops":4226.3,"user_usec":225.1,"real_usec":236.6,"est_time":2.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":38886,"user_time":14.76,"real_time":15.24,"user_ops":2634.6,"real_ops":2552.1,"user_usec":379.6,"real_usec":391.8,"est_time":2.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":21333,"user_time":14.9,"real_time":15.17,"user_ops":1431.7,"real_ops":1406.1,"user_usec":698.4,"real_usec":711.2,"est_time":2.14,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":11130,"user_time":14.87,"real_time":15.04,"user_ops":748.5,"real_ops":740.0,"user_usec":1336.0,"real_usec":1351.4,"est_time":2.25,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":5647,"user_time":14.94,"real_time":15.05,"user_ops":378.0,"real_ops":375.3,"user_usec":2645.7,"real_usec":2664.5,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":2823,"user_time":14.98,"real_time":15.02,"user_ops":188.5,"real_ops":187.9,"user_usec":5306.4,"real_usec":5322.3,"est_time":1.95,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1371,"user_time":14.76,"real_time":14.79,"user_ops":92.9,"real_ops":92.7,"user_usec":10765.9,"real_usec":10789.7,"est_time":1.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":676,"user_time":14.9,"real_time":14.92,"user_ops":45.4,"real_ops":45.3,"user_usec":22041.4,"real_usec":22072.1,"est_time":2.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":333,"user_time":14.87,"real_time":14.89,"user_ops":22.4,"real_ops":22.4,"user_usec":44654.7,"real_usec":44714.6,"est_time":1.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":164,"user_time":14.98,"real_time":14.99,"user_ops":10.9,"real_ops":10.9,"user_usec":91341.5,"real_usec":91427.1,"est_time":1.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":80,"user_time":15.05,"real_time":15.08,"user_ops":5.3,"real_ops":5.3,"user_usec":188125.0,"real_usec":188557.7,"est_time":1.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":37,"user_time":14.36,"real_time":14.43,"user_ops":2.6,"real_ops":2.6,"user_usec":388108.1,"real_usec":390024.8,"est_time":0.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":17,"user_time":14.4,"real_time":14.5,"user_ops":1.2,"real_ops":1.2,"user_usec":847058.8,"real_usec":852695.0,"est_time":1.71,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":9,"user_time":14.95,"real_time":15.09,"user_ops":0.6,"real_ops":0.6,"user_usec":1661111.1,"real_usec":1677129.5,"est_time":3.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0524","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":45850,"user_time":14.84,"real_time":22.19,"user_ops":3089.6,"real_ops":2066.3,"user_usec":323.7,"real_usec":484.0,"est_time":2.65,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":44521,"user_time":15.0,"real_time":23.0,"user_ops":2968.1,"real_ops":1935.5,"user_usec":336.9,"real_usec":516.7,"est_time":2.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":47261,"user_time":15.0,"real_time":22.17,"user_ops":3150.7,"real_ops":2132.1,"user_usec":317.4,"real_usec":469.0,"est_time":2.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":47261,"user_time":15.48,"real_time":23.25,"user_ops":3053.0,"real_ops":2032.5,"user_usec":327.5,"real_usec":492.0,"est_time":2.57,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":44521,"user_time":14.3,"real_time":20.86,"user_ops":3113.4,"real_ops":2134.3,"user_usec":321.2,"real_usec":468.5,"est_time":2.63,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":46545,"user_time":14.84,"real_time":22.24,"user_ops":3136.5,"real_ops":2092.7,"user_usec":318.8,"real_usec":477.8,"est_time":2.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":45850,"user_time":14.74,"real_time":21.73,"user_ops":3110.6,"real_ops":2110.3,"user_usec":321.5,"real_usec":473.9,"est_time":2.72,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":47261,"user_time":15.35,"real_time":22.42,"user_ops":3078.9,"real_ops":2108.0,"user_usec":324.8,"real_usec":474.4,"est_time":2.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":42666,"user_time":14.91,"real_time":22.91,"user_ops":2861.6,"real_ops":1862.7,"user_usec":349.5,"real_usec":536.9,"est_time":2.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":40960,"user_time":13.96,"real_time":21.24,"user_ops":2934.1,"real_ops":1928.0,"user_usec":340.8,"real_usec":518.7,"est_time":3.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":39896,"user_time":14.78,"real_time":22.98,"user_ops":2699.3,"real_ops":1735.9,"user_usec":370.5,"real_usec":576.1,"est_time":3.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":38399,"user_time":14.84,"real_time":22.77,"user_ops":2587.5,"real_ops":1686.2,"user_usec":386.5,"real_usec":593.0,"est_time":3.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":32336,"user_time":15.45,"real_time":24.4,"user_ops":2092.9,"real_ops":1325.2,"user_usec":477.8,"real_usec":754.6,"est_time":3.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":25600,"user_time":14.9,"real_time":22.87,"user_ops":1718.1,"real_ops":1119.2,"user_usec":582.0,"real_usec":893.5,"est_time":2.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":17655,"user_time":15.15,"real_time":22.7,"user_ops":1165.3,"real_ops":777.8,"user_usec":858.1,"real_usec":1285.7,"est_time":2.99,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"value_string_size","operation":"insert_safe","iterations":11294,"user_time":14.73,"real_time":22.0,"user_ops":766.7,"real_ops":513.4,"user_usec":1304.2,"real_usec":1947.7,"est_time":2.35,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":47261,"user_time":15.04,"real_time":22.45,"user_ops":3142.4,"real_ops":2105.6,"user_usec":318.2,"real_usec":474.9,"est_time":2.48,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":47261,"user_time":15.25,"real_time":22.88,"user_ops":3099.1,"real_ops":2065.8,"user_usec":322.7,"real_usec":484.1,"est_time":2.41,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":48000,"user_time":15.16,"real_time":22.24,"user_ops":3166.2,"real_ops":2157.8,"user_usec":315.8,"real_usec":463.4,"est_time":2.59,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":48000,"user_time":15.07,"real_time":21.71,"user_ops":3185.1,"real_ops":2211.1,"user_usec":314.0,"real_usec":452.3,"est_time":2.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":48000,"user_time":15.17,"real_time":22.43,"user_ops":3164.1,"real_ops":2140.2,"user_usec":316.0,"real_usec":467.2,"est_time":2.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":47261,"user_time":14.93,"real_time":21.24,"user_ops":3165.5,"real_ops":2224.7,"user_usec":315.9,"real_usec":449.5,"est_time":2.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":47261,"user_time":15.07,"real_time":22.54,"user_ops":3136.1,"real_ops":2096.5,"user_usec":318.9,"real_usec":477.0,"est_time":2.85,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":45850,"user_time":14.8,"real_time":22.13,"user_ops":3098.0,"real_ops":2072.3,"user_usec":322.8,"real_usec":482.6,"est_time":2.46,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":46545,"user_time":15.39,"real_time":22.78,"user_ops":3024.4,"real_ops":2043.2,"user_usec":330.6,"real_usec":489.4,"est_time":2.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":43885,"user_time":15.41,"real_time":23.41,"user_ops":2847.8,"real_ops":1874.3,"user_usec":351.1,"real_usec":533.5,"est_time":3.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":39896,"user_time":14.52,"real_time":22.41,"user_ops":2747.7,"real_ops":1780.0,"user_usec":363.9,"real_usec":561.8,"est_time":3.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":38400,"user_time":15.2,"real_time":23.08,"user_ops":2526.3,"real_ops":1663.4,"user_usec":395.8,"real_usec":601.2,"est_time":3.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":31030,"user_time":14.73,"real_time":22.98,"user_ops":2106.6,"real_ops":1350.2,"user_usec":474.7,"real_usec":740.6,"est_time":3.49,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":25599,"user_time":15.08,"real_time":22.59,"user_ops":1697.5,"real_ops":1133.4,"user_usec":589.1,"real_usec":882.3,"est_time":2.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":17655,"user_time":15.14,"real_time":23.23,"user_ops":1166.1,"real_ops":760.0,"user_usec":857.5,"real_usec":1315.7,"est_time":3.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"key_string_size","operation":"insert_safe","iterations":11130,"user_time":14.92,"real_time":22.44,"user_ops":746.0,"real_ops":496.0,"user_usec":1340.5,"real_usec":2016.1,"est_time":2.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":43885,"user_time":15.92,"real_time":23.79,"user_ops":2756.6,"real_ops":1844.6,"user_usec":362.8,"real_usec":542.1,"est_time":2.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":38886,"user_time":14.95,"real_time":22.66,"user_ops":2601.1,"real_ops":1716.2,"user_usec":384.5,"real_usec":582.7,"est_time":3.02,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":35310,"user_time":14.85,"real_time":22.44,"user_ops":2377.8,"real_ops":1573.5,"user_usec":420.6,"real_usec":635.5,"est_time":3.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":31670,"user_time":15.31,"real_time":22.8,"user_ops":2068.6,"real_ops":1388.7,"user_usec":483.4,"real_usec":720.1,"est_time":3.48,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":23272,"user_time":14.91,"real_time":22.43,"user_ops":1560.8,"real_ops":1037.7,"user_usec":640.7,"real_usec":963.7,"est_time":2.52,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":16516,"user_time":15.12,"real_time":21.58,"user_ops":1092.3,"real_ops":765.5,"user_usec":915.5,"real_usec":1306.3,"est_time":3.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":10240,"user_time":14.84,"real_time":19.8,"user_ops":690.0,"real_ops":517.1,"user_usec":1449.2,"real_usec":1933.8,"est_time":2.55,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":5907,"user_time":14.78,"real_time":18.19,"user_ops":399.7,"real_ops":324.7,"user_usec":2502.1,"real_usec":3079.6,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":3254,"user_time":15.08,"real_time":17.39,"user_ops":215.8,"real_ops":187.1,"user_usec":4634.3,"real_usec":5345.6,"est_time":2.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":1684,"user_time":15.12,"real_time":16.45,"user_ops":111.4,"real_ops":102.3,"user_usec":8978.6,"real_usec":9771.3,"est_time":1.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":813,"user_time":14.2,"real_time":15.19,"user_ops":57.3,"real_ops":53.5,"user_usec":17466.2,"real_usec":18684.2,"est_time":1.96,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":421,"user_time":14.84,"real_time":15.69,"user_ops":28.4,"real_ops":26.8,"user_usec":35249.4,"real_usec":37267.6,"est_time":1.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":210,"user_time":14.89,"real_time":15.76,"user_ops":14.1,"real_ops":13.3,"user_usec":70904.8,"real_usec":75025.8,"est_time":1.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":103,"user_time":14.75,"real_time":15.64,"user_ops":7.0,"real_ops":6.6,"user_usec":143203.9,"real_usec":151855.9,"est_time":1.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"array_size_fixnum","operation":"insert_safe","iterations":49,"user_time":14.35,"real_time":15.09,"user_ops":3.4,"real_ops":3.2,"user_usec":292857.1,"real_usec":307862.1,"est_time":1.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":43885,"user_time":15.47,"real_time":22.82,"user_ops":2836.8,"real_ops":1923.1,"user_usec":352.5,"real_usec":520.0,"est_time":2.69,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":40960,"user_time":14.75,"real_time":20.98,"user_ops":2776.9,"real_ops":1952.5,"user_usec":360.1,"real_usec":512.2,"est_time":2.8,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":35720,"user_time":14.47,"real_time":21.71,"user_ops":2468.6,"real_ops":1645.4,"user_usec":405.1,"real_usec":607.8,"est_time":3.2,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":32680,"user_time":15.47,"real_time":23.05,"user_ops":2112.5,"real_ops":1417.8,"user_usec":473.4,"real_usec":705.3,"est_time":3.5,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":24774,"user_time":15.04,"real_time":21.53,"user_ops":1647.2,"real_ops":1150.8,"user_usec":607.1,"real_usec":868.9,"est_time":2.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":17258,"user_time":15.26,"real_time":21.75,"user_ops":1130.9,"real_ops":793.5,"user_usec":884.2,"real_usec":1260.2,"est_time":3.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":10520,"user_time":14.93,"real_time":19.78,"user_ops":704.6,"real_ops":531.8,"user_usec":1419.2,"real_usec":1880.3,"est_time":2.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":6193,"user_time":15.08,"real_time":18.13,"user_ops":410.7,"real_ops":341.5,"user_usec":2435.0,"real_usec":2928.0,"est_time":2.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":3310,"user_time":15.02,"real_time":17.29,"user_ops":220.4,"real_ops":191.4,"user_usec":4537.8,"real_usec":5224.2,"est_time":2.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":1745,"user_time":15.29,"real_time":16.81,"user_ops":114.1,"real_ops":103.8,"user_usec":8762.2,"real_usec":9631.7,"est_time":1.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":857,"user_time":14.87,"real_time":15.97,"user_ops":57.6,"real_ops":53.7,"user_usec":17351.2,"real_usec":18637.0,"est_time":1.91,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":421,"user_time":15.0,"real_time":15.88,"user_ops":28.1,"real_ops":26.5,"user_usec":35629.5,"real_usec":37712.1,"est_time":1.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":199,"user_time":14.97,"real_time":15.79,"user_ops":13.3,"real_ops":12.6,"user_usec":75226.1,"real_usec":79344.2,"est_time":1.67,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":124,"user_time":14.88,"real_time":15.65,"user_ops":8.3,"real_ops":7.9,"user_usec":120000.0,"real_usec":126182.7,"est_time":2.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":60,"user_time":14.93,"real_time":15.67,"user_ops":4.0,"real_ops":3.8,"user_usec":248833.3,"real_usec":261195.1,"est_time":2.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":27,"user_time":14.87,"real_time":15.57,"user_ops":1.8,"real_ops":1.7,"user_usec":550740.7,"real_usec":576507.2,"est_time":1.7,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":16,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":14,"user_time":14.31,"real_time":14.96,"user_ops":1.0,"real_ops":0.9,"user_usec":1022142.9,"real_usec":1068694.6,"est_time":2.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":17,"size":131072,"exp2":17,"multi_power":-1,"multi_size":1,"generator":"hash_size_fixnum","operation":"insert_safe","iterations":7,"user_time":14.17,"real_time":14.91,"user_ops":0.5,"real_ops":0.5,"user_usec":2024285.7,"real_usec":2130625.8,"est_time":4.71,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":52067,"user_time":15.34,"real_time":24.25,"user_ops":3394.2,"real_ops":2146.9,"user_usec":294.6,"real_usec":465.8,"est_time":2.66,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":46545,"user_time":15.2,"real_time":23.07,"user_ops":3062.2,"real_ops":2018.0,"user_usec":326.6,"real_usec":495.5,"est_time":2.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":36141,"user_time":15.76,"real_time":23.09,"user_ops":2293.2,"real_ops":1565.5,"user_usec":436.1,"real_usec":638.8,"est_time":3.33,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":24380,"user_time":14.3,"real_time":19.56,"user_ops":1704.9,"real_ops":1246.5,"user_usec":586.5,"real_usec":802.2,"est_time":2.38,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":15835,"user_time":14.85,"real_time":20.37,"user_ops":1066.3,"real_ops":777.2,"user_usec":937.8,"real_usec":1286.6,"est_time":3.22,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":9142,"user_time":14.91,"real_time":19.18,"user_ops":613.1,"real_ops":476.6,"user_usec":1630.9,"real_usec":2098.2,"est_time":2.81,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":4923,"user_time":15.06,"real_time":17.72,"user_ops":326.9,"real_ops":277.9,"user_usec":3059.1,"real_usec":3599.0,"est_time":2.72,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":2526,"user_time":14.93,"real_time":16.7,"user_ops":169.2,"real_ops":151.2,"user_usec":5910.5,"real_usec":6612.4,"est_time":2.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":1263,"user_time":14.86,"real_time":16.42,"user_ops":85.0,"real_ops":76.9,"user_usec":11765.6,"real_usec":13000.2,"est_time":2.31,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":623,"user_time":14.73,"real_time":15.71,"user_ops":42.3,"real_ops":39.7,"user_usec":23643.7,"real_usec":25220.4,"est_time":2.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":311,"user_time":14.92,"real_time":16.08,"user_ops":20.8,"real_ops":19.3,"user_usec":47974.3,"real_usec":51716.6,"est_time":2.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":153,"user_time":14.93,"real_time":15.92,"user_ops":10.2,"real_ops":9.6,"user_usec":97581.7,"real_usec":104032.4,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert_safe","iterations":75,"user_time":14.82,"real_time":15.6,"user_ops":5.1,"real_ops":4.8,"user_usec":197600.0,"real_usec":207976.5,"est_time":1.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":52067,"user_time":14.91,"real_time":23.29,"user_ops":3492.1,"real_ops":2235.5,"user_usec":286.4,"real_usec":447.3,"est_time":2.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":1,"size":2,"exp2":1,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":43267,"user_time":15.06,"real_time":23.23,"user_ops":2873.0,"real_ops":1862.7,"user_usec":348.1,"real_usec":536.9,"est_time":2.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":2,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":35310,"user_time":15.18,"real_time":22.41,"user_ops":2326.1,"real_ops":1575.7,"user_usec":429.9,"real_usec":634.6,"est_time":3.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":3,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":25600,"user_time":14.53,"real_time":20.41,"user_ops":1761.9,"real_ops":1254.5,"user_usec":567.6,"real_usec":797.1,"est_time":2.61,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":4,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":16695,"user_time":14.94,"real_time":21.35,"user_ops":1117.5,"real_ops":782.0,"user_usec":894.9,"real_usec":1278.8,"est_time":3.18,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":5,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":9600,"user_time":14.91,"real_time":19.74,"user_ops":643.9,"real_ops":486.3,"user_usec":1553.1,"real_usec":2056.2,"est_time":2.89,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":6,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":5189,"user_time":14.88,"real_time":17.86,"user_ops":348.7,"real_ops":290.5,"user_usec":2867.6,"real_usec":3442.6,"est_time":2.51,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":7,"size":128,"exp2":7,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":2704,"user_time":14.98,"real_time":17.14,"user_ops":180.5,"real_ops":157.8,"user_usec":5539.9,"real_usec":6337.4,"est_time":2.4,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":8,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":1352,"user_time":15.0,"real_time":16.55,"user_ops":90.1,"real_ops":81.7,"user_usec":11094.7,"real_usec":12242.7,"est_time":2.11,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":9,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":676,"user_time":15.07,"real_time":16.01,"user_ops":44.9,"real_ops":42.2,"user_usec":22292.9,"real_usec":23685.1,"est_time":1.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":10,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":328,"user_time":14.88,"real_time":15.73,"user_ops":22.0,"real_ops":20.8,"user_usec":45365.9,"real_usec":47962.6,"est_time":1.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":11,"size":2048,"exp2":11,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":160,"user_time":14.78,"real_time":15.76,"user_ops":10.8,"real_ops":10.2,"user_usec":92375.0,"real_usec":98492.2,"est_time":2.0,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":12,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":77,"user_time":14.72,"real_time":15.47,"user_ops":5.2,"real_ops":5.0,"user_usec":191168.8,"real_usec":200849.9,"est_time":1.77,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":13,"size":8192,"exp2":13,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":36,"user_time":14.25,"real_time":14.92,"user_ops":2.5,"real_ops":2.4,"user_usec":395833.3,"real_usec":414344.1,"est_time":1.37,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":14,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":17,"user_time":14.47,"real_time":15.22,"user_ops":1.2,"real_ops":1.1,"user_usec":851176.5,"real_usec":895174.3,"est_time":2.32,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
{"base":2,"power":15,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert_safe","iterations":8,"user_time":13.39,"real_time":14.08,"user_ops":0.6,"real_ops":0.6,"user_usec":1673750.0,"real_usec":1760232.6,"est_time":3.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-0554","tag":"suite_insert_one","status":"OK"},
]; // 67 minutes

View File

@ -0,0 +1,86 @@
exp_series_suite_nest_c = [
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":192000,"user_time":15.09,"real_time":17.11,"user_ops":12723.7,"real_ops":11224.1,"user_usec":78.6,"real_usec":89.1,"est_time":2.55,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":149853,"user_time":14.94,"real_time":16.62,"user_ops":10030.3,"real_ops":9019.0,"user_usec":99.7,"real_usec":110.9,"est_time":2.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":90352,"user_time":15.0,"real_time":16.08,"user_ops":6023.5,"real_ops":5620.0,"user_usec":166.0,"real_usec":177.9,"est_time":2.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":33758,"user_time":15.25,"real_time":15.65,"user_ops":2213.6,"real_ops":2156.8,"user_usec":451.7,"real_usec":463.7,"est_time":2.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":10240,"user_time":15.85,"real_time":15.97,"user_ops":646.1,"real_ops":641.0,"user_usec":1547.9,"real_usec":1560.0,"est_time":2.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":2526,"user_time":14.83,"real_time":14.9,"user_ops":170.3,"real_ops":169.5,"user_usec":5870.9,"real_usec":5899.3,"est_time":2.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":640,"user_time":14.83,"real_time":14.85,"user_ops":43.2,"real_ops":43.1,"user_usec":23171.9,"real_usec":23201.7,"est_time":2.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":191999,"user_time":15.1,"real_time":17.29,"user_ops":12715.2,"real_ops":11107.6,"user_usec":78.6,"real_usec":90.0,"est_time":2.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":136533,"user_time":14.96,"real_time":16.29,"user_ops":9126.5,"real_ops":8379.5,"user_usec":109.6,"real_usec":119.3,"est_time":3.11,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":37463,"user_time":14.92,"real_time":15.36,"user_ops":2510.9,"real_ops":2439.7,"user_usec":398.3,"real_usec":409.9,"est_time":2.38,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":5999,"user_time":14.59,"real_time":14.68,"user_ops":411.2,"real_ops":408.8,"user_usec":2432.1,"real_usec":2446.4,"est_time":1.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":786,"user_time":14.7,"real_time":14.73,"user_ops":53.5,"real_ops":53.4,"user_usec":18702.3,"real_usec":18738.4,"est_time":1.72,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":183402,"user_time":14.48,"real_time":16.33,"user_ops":12665.9,"real_ops":11233.4,"user_usec":79.0,"real_usec":89.0,"est_time":2.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":100721,"user_time":14.94,"real_time":16.15,"user_ops":6741.7,"real_ops":6236.4,"user_usec":148.3,"real_usec":160.3,"est_time":2.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":12190,"user_time":15.15,"real_time":15.29,"user_ops":804.6,"real_ops":797.0,"user_usec":1242.8,"real_usec":1254.7,"est_time":2.13,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":857,"user_time":14.92,"real_time":15.03,"user_ops":57.4,"real_ops":57.0,"user_usec":17409.6,"real_usec":17532.3,"est_time":1.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":189046,"user_time":15.13,"real_time":17.35,"user_ops":12494.8,"real_ops":10896.9,"user_usec":80.0,"real_usec":91.8,"est_time":2.78,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":69033,"user_time":14.82,"real_time":15.61,"user_ops":4658.1,"real_ops":4423.7,"user_usec":214.7,"real_usec":226.1,"est_time":2.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":3490,"user_time":15.83,"real_time":16.1,"user_ops":220.5,"real_ops":216.7,"user_usec":4535.8,"real_usec":4614.5,"est_time":1.68,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":186181,"user_time":14.87,"real_time":16.92,"user_ops":12520.6,"real_ops":11005.6,"user_usec":79.9,"real_usec":90.9,"est_time":2.66,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":183402,"user_time":15.13,"real_time":17.15,"user_ops":12121.7,"real_ops":10696.5,"user_usec":82.5,"real_usec":93.5,"est_time":2.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":163840,"user_time":14.7,"real_time":16.66,"user_ops":11145.6,"real_ops":9831.9,"user_usec":89.7,"real_usec":101.7,"est_time":2.89,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":115924,"user_time":14.59,"real_time":16.12,"user_ops":7945.4,"real_ops":7189.5,"user_usec":125.9,"real_usec":139.1,"est_time":2.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":55854,"user_time":14.9,"real_time":16.18,"user_ops":3748.6,"real_ops":3451.5,"user_usec":266.8,"real_usec":289.7,"est_time":1.82,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":19199,"user_time":15.49,"real_time":16.38,"user_ops":1239.4,"real_ops":1171.8,"user_usec":806.8,"real_usec":853.4,"est_time":2.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":6736,"user_time":15.03,"real_time":16.06,"user_ops":448.2,"real_ops":419.5,"user_usec":2231.3,"real_usec":2383.7,"est_time":1.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":7,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1371,"user_time":15.15,"real_time":16.52,"user_ops":90.5,"real_ops":83.0,"user_usec":11050.3,"real_usec":12052.6,"est_time":2.02,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":8,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":380,"user_time":14.95,"real_time":16.23,"user_ops":25.4,"real_ops":23.4,"user_usec":39342.1,"real_usec":42712.3,"est_time":1.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":195047,"user_time":14.56,"real_time":16.56,"user_ops":13396.1,"real_ops":11781.5,"user_usec":74.6,"real_usec":84.9,"est_time":2.69,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":191999,"user_time":15.35,"real_time":17.56,"user_ops":12508.1,"real_ops":10931.7,"user_usec":79.9,"real_usec":91.5,"est_time":3.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":149853,"user_time":14.94,"real_time":17.09,"user_ops":10030.3,"real_ops":8768.0,"user_usec":99.7,"real_usec":114.1,"est_time":2.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":56888,"user_time":15.27,"real_time":17.27,"user_ops":3725.5,"real_ops":3293.3,"user_usec":268.4,"real_usec":303.6,"est_time":1.86,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":9974,"user_time":14.83,"real_time":16.12,"user_ops":672.6,"real_ops":618.6,"user_usec":1486.9,"real_usec":1616.5,"est_time":2.16,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":198193,"user_time":14.92,"real_time":17.16,"user_ops":13283.7,"real_ops":11552.3,"user_usec":75.3,"real_usec":86.6,"est_time":2.37,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":186181,"user_time":14.84,"real_time":17.13,"user_ops":12545.9,"real_ops":10867.5,"user_usec":79.7,"real_usec":92.0,"est_time":2.53,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":91701,"user_time":14.86,"real_time":16.74,"user_ops":6171.0,"real_ops":5476.7,"user_usec":162.0,"real_usec":182.6,"est_time":2.19,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":11130,"user_time":15.0,"real_time":16.19,"user_ops":742.0,"real_ops":687.6,"user_usec":1347.7,"real_usec":1454.3,"est_time":1.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":16,"power":4,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":533,"user_time":14.91,"real_time":19.28,"user_ops":35.7,"real_ops":27.6,"user_usec":27973.7,"real_usec":36171.6,"est_time":2.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":198193,"user_time":14.52,"real_time":16.87,"user_ops":13649.7,"real_ops":11750.3,"user_usec":73.3,"real_usec":85.1,"est_time":2.54,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":173070,"user_time":14.82,"real_time":17.04,"user_ops":11678.1,"real_ops":10156.0,"user_usec":85.6,"real_usec":98.5,"est_time":2.62,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":38886,"user_time":15.03,"real_time":16.67,"user_ops":2587.2,"real_ops":2333.4,"user_usec":386.5,"real_usec":428.6,"est_time":2.35,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":32,"power":3,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1476,"user_time":15.29,"real_time":16.75,"user_ops":96.5,"real_ops":88.1,"user_usec":10359.1,"real_usec":11347.2,"est_time":1.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0451","tag":"suite_nest","status":"OK"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":84164,"user_time":14.02,"real_time":23.35,"user_ops":6003.1,"real_ops":3604.8,"user_usec":166.6,"real_usec":277.4,"est_time":2.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":84164,"user_time":14.04,"real_time":23.23,"user_ops":5994.6,"real_ops":3622.5,"user_usec":166.8,"real_usec":276.1,"est_time":2.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":87771,"user_time":14.95,"real_time":25.22,"user_ops":5871.0,"real_ops":3479.6,"user_usec":170.3,"real_usec":287.4,"est_time":2.95,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":78769,"user_time":14.79,"real_time":24.87,"user_ops":5325.8,"real_ops":3166.7,"user_usec":187.8,"real_usec":315.8,"est_time":3.27,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":66782,"user_time":14.76,"real_time":22.85,"user_ops":4524.5,"real_ops":2922.1,"user_usec":221.0,"real_usec":342.2,"est_time":3.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":39896,"user_time":14.92,"real_time":20.96,"user_ops":2674.0,"real_ops":1903.7,"user_usec":374.0,"real_usec":525.3,"est_time":2.75,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":15058,"user_time":14.92,"real_time":19.01,"user_ops":1009.2,"real_ops":791.9,"user_usec":990.8,"real_usec":1262.7,"est_time":2.1,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":89043,"user_time":14.67,"real_time":24.23,"user_ops":6069.7,"real_ops":3674.2,"user_usec":164.8,"real_usec":272.2,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":87771,"user_time":14.52,"real_time":23.74,"user_ops":6044.8,"real_ops":3697.9,"user_usec":165.4,"real_usec":270.4,"est_time":3.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":85333,"user_time":15.06,"real_time":24.95,"user_ops":5666.2,"real_ops":3419.7,"user_usec":176.5,"real_usec":292.4,"est_time":2.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":66782,"user_time":14.97,"real_time":22.89,"user_ops":4461.1,"real_ops":2917.7,"user_usec":224.2,"real_usec":342.7,"est_time":3.39,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":23999,"user_time":14.44,"real_time":19.11,"user_ops":1662.0,"real_ops":1256.0,"user_usec":601.7,"real_usec":796.2,"est_time":2.65,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":84164,"user_time":13.43,"real_time":21.62,"user_ops":6266.9,"real_ops":3893.7,"user_usec":159.6,"real_usec":256.8,"est_time":3.09,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":85333,"user_time":14.67,"real_time":24.66,"user_ops":5816.8,"real_ops":3460.8,"user_usec":171.9,"real_usec":289.0,"est_time":3.2,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":83027,"user_time":16.52,"real_time":28.15,"user_ops":5025.8,"real_ops":2949.2,"user_usec":199.0,"real_usec":339.1,"est_time":2.92,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":30117,"user_time":14.3,"real_time":20.16,"user_ops":2106.1,"real_ops":1493.9,"user_usec":474.8,"real_usec":669.4,"est_time":2.12,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":96000,"user_time":16.03,"real_time":26.62,"user_ops":5988.8,"real_ops":3606.4,"user_usec":167.0,"real_usec":277.3,"est_time":2.73,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":91701,"user_time":15.66,"real_time":26.58,"user_ops":5855.7,"real_ops":3449.6,"user_usec":170.8,"real_usec":289.9,"est_time":2.81,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":60235,"user_time":14.52,"real_time":22.83,"user_ops":4148.4,"real_ops":2638.5,"user_usec":241.1,"real_usec":379.0,"est_time":2.32,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":84164,"user_time":14.23,"real_time":24.01,"user_ops":5914.5,"real_ops":3505.7,"user_usec":169.1,"real_usec":285.2,"est_time":2.93,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":90352,"user_time":16.55,"real_time":28.5,"user_ops":5459.3,"real_ops":3169.9,"user_usec":183.2,"real_usec":315.5,"est_time":2.83,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":83027,"user_time":15.66,"real_time":25.2,"user_ops":5301.9,"real_ops":3295.2,"user_usec":188.6,"real_usec":303.5,"est_time":2.99,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":60235,"user_time":15.96,"real_time":24.35,"user_ops":3774.1,"real_ops":2473.5,"user_usec":265.0,"real_usec":404.3,"est_time":1.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":28981,"user_time":15.09,"real_time":19.64,"user_ops":1920.5,"real_ops":1475.6,"user_usec":520.7,"real_usec":677.7,"est_time":1.94,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":11294,"user_time":14.95,"real_time":18.83,"user_ops":755.5,"real_ops":599.7,"user_usec":1323.7,"real_usec":1667.6,"est_time":2.32,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":3096,"user_time":15.01,"real_time":16.85,"user_ops":206.3,"real_ops":183.8,"user_usec":4848.2,"real_usec":5441.1,"est_time":1.91,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":7,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":774,"user_time":14.61,"real_time":15.82,"user_ops":53.0,"real_ops":48.9,"user_usec":18876.0,"real_usec":20434.7,"est_time":1.85,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":4,"power":8,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":206,"user_time":15.16,"real_time":16.23,"user_ops":13.6,"real_ops":12.7,"user_usec":73592.2,"real_usec":78805.8,"est_time":1.9,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":94523,"user_time":14.77,"real_time":25.21,"user_ops":6399.7,"real_ops":3748.7,"user_usec":156.3,"real_usec":266.8,"est_time":2.88,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":90352,"user_time":15.59,"real_time":27.32,"user_ops":5795.5,"real_ops":3307.3,"user_usec":172.5,"real_usec":302.4,"est_time":2.87,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":71441,"user_time":15.98,"real_time":25.86,"user_ops":4470.7,"real_ops":2762.5,"user_usec":223.7,"real_usec":362.0,"est_time":3.33,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":26482,"user_time":15.06,"real_time":18.99,"user_ops":1758.4,"real_ops":1394.5,"user_usec":568.7,"real_usec":717.1,"est_time":2.01,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":4465,"user_time":15.06,"real_time":17.47,"user_ops":296.5,"real_ops":255.5,"user_usec":3372.9,"real_usec":3913.2,"est_time":2.5,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":94523,"user_time":14.63,"real_time":24.83,"user_ops":6460.9,"real_ops":3806.1,"user_usec":154.8,"real_usec":262.7,"est_time":2.77,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":84164,"user_time":15.02,"real_time":26.38,"user_ops":5603.5,"real_ops":3190.3,"user_usec":178.5,"real_usec":313.4,"est_time":3.06,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":42666,"user_time":14.57,"real_time":20.17,"user_ops":2928.3,"real_ops":2114.8,"user_usec":341.5,"real_usec":472.8,"est_time":2.59,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":4923,"user_time":14.63,"real_time":17.06,"user_ops":336.5,"real_ops":288.6,"user_usec":2971.8,"real_usec":3464.8,"est_time":2.3,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":16,"power":4,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":282,"user_time":15.05,"real_time":16.16,"user_ops":18.7,"real_ops":17.5,"user_usec":53368.8,"real_usec":57295.7,"est_time":2.36,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":102399,"user_time":16.35,"real_time":28.18,"user_ops":6262.9,"real_ops":3633.7,"user_usec":159.7,"real_usec":275.2,"est_time":2.63,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":83027,"user_time":15.42,"real_time":26.15,"user_ops":5384.4,"real_ops":3175.1,"user_usec":185.7,"real_usec":315.0,"est_time":2.96,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":17655,"user_time":14.69,"real_time":17.9,"user_ops":1201.8,"real_ops":986.1,"user_usec":832.1,"real_usec":1014.0,"est_time":2.63,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
{"base":32,"power":3,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":607,"user_time":15.1,"real_time":16.27,"user_ops":40.2,"real_ops":37.3,"user_usec":24876.4,"real_usec":26811.5,"est_time":2.21,"mode":"c","hostname":"osprey","osname":"Darwin","date":"20120511-0506","tag":"suite_nest","status":"OK"},
]; // 33 minutes

View File

@ -0,0 +1,86 @@
exp_series_suite_nest_ruby = [
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":125387,"user_time":15.32,"real_time":16.82,"user_ops":8184.5,"real_ops":7455.5,"user_usec":122.2,"real_usec":134.1,"est_time":3.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":74024,"user_time":15.03,"real_time":15.92,"user_ops":4925.1,"real_ops":4650.6,"user_usec":203.0,"real_usec":215.0,"est_time":2.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":27927,"user_time":14.82,"real_time":15.17,"user_ops":1884.4,"real_ops":1841.3,"user_usec":530.7,"real_usec":543.1,"est_time":1.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":8170,"user_time":15.05,"real_time":15.15,"user_ops":542.9,"real_ops":539.3,"user_usec":1842.1,"real_usec":1854.2,"est_time":2.47,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":2042,"user_time":14.82,"real_time":14.86,"user_ops":137.8,"real_ops":137.4,"user_usec":7257.6,"real_usec":7277.2,"est_time":2.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":516,"user_time":15.09,"real_time":15.11,"user_ops":34.2,"real_ops":34.2,"user_usec":29244.2,"real_usec":29274.5,"est_time":2.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":124,"user_time":14.87,"real_time":14.89,"user_ops":8.3,"real_ops":8.3,"user_usec":119919.4,"real_usec":120118.2,"est_time":2.14,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":124121,"user_time":14.94,"real_time":16.32,"user_ops":8308.0,"real_ops":7605.0,"user_usec":120.4,"real_usec":131.5,"est_time":3.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":54857,"user_time":15.36,"real_time":15.99,"user_ops":3571.4,"real_ops":3430.2,"user_usec":280.0,"real_usec":291.5,"est_time":1.82,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":10240,"user_time":15.49,"real_time":15.63,"user_ops":661.1,"real_ops":655.3,"user_usec":1512.7,"real_usec":1526.0,"est_time":2.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":1333,"user_time":15.29,"real_time":15.32,"user_ops":87.2,"real_ops":87.0,"user_usec":11470.4,"real_usec":11489.1,"est_time":2.01,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":164,"user_time":15.14,"real_time":15.16,"user_ops":10.8,"real_ops":10.8,"user_usec":92317.1,"real_usec":92429.8,"est_time":1.78,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":122880,"user_time":14.81,"real_time":16.17,"user_ops":8297.1,"real_ops":7599.0,"user_usec":120.5,"real_usec":131.6,"est_time":3.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":36571,"user_time":15.1,"real_time":15.55,"user_ops":2421.9,"real_ops":2351.5,"user_usec":412.9,"real_usec":425.3,"est_time":2.48,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":3000,"user_time":14.99,"real_time":15.03,"user_ops":200.1,"real_ops":199.6,"user_usec":4996.7,"real_usec":5010.4,"est_time":1.87,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":181,"user_time":14.69,"real_time":14.72,"user_ops":12.3,"real_ops":12.3,"user_usec":81160.2,"real_usec":81313.8,"est_time":1.65,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":121663,"user_time":14.75,"real_time":16.11,"user_ops":8248.3,"real_ops":7551.5,"user_usec":121.2,"real_usec":132.4,"est_time":3.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":21942,"user_time":14.99,"real_time":15.26,"user_ops":1463.8,"real_ops":1438.1,"user_usec":683.2,"real_usec":695.4,"est_time":2.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"insert","iterations":800,"user_time":14.88,"real_time":14.94,"user_ops":53.8,"real_ops":53.6,"user_usec":18600.0,"real_usec":18673.2,"est_time":1.72,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":125387,"user_time":15.19,"real_time":16.66,"user_ops":8254.6,"real_ops":7524.8,"user_usec":121.1,"real_usec":132.9,"est_time":3.08,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":75851,"user_time":15.05,"real_time":15.94,"user_ops":5039.9,"real_ops":4759.5,"user_usec":198.4,"real_usec":210.1,"est_time":2.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":27927,"user_time":14.55,"real_time":14.91,"user_ops":1919.4,"real_ops":1872.5,"user_usec":521.0,"real_usec":534.0,"est_time":1.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":8533,"user_time":15.09,"real_time":15.2,"user_ops":565.5,"real_ops":561.4,"user_usec":1768.4,"real_usec":1781.2,"est_time":2.42,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":2086,"user_time":14.49,"real_time":14.53,"user_ops":144.0,"real_ops":143.6,"user_usec":6946.3,"real_usec":6963.9,"est_time":2.44,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":510,"user_time":14.69,"real_time":14.72,"user_ops":34.7,"real_ops":34.7,"user_usec":28803.9,"real_usec":28854.6,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":146,"user_time":15.09,"real_time":15.12,"user_ops":9.7,"real_ops":9.7,"user_usec":103356.2,"real_usec":103588.8,"est_time":2.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":7,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":32,"user_time":14.93,"real_time":14.99,"user_ops":2.1,"real_ops":2.1,"user_usec":466562.5,"real_usec":468553.6,"est_time":1.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":8,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":8,"user_time":14.13,"real_time":14.22,"user_ops":0.6,"real_ops":0.6,"user_usec":1766250.0,"real_usec":1777441.1,"est_time":3.6,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":138067,"user_time":15.13,"real_time":16.64,"user_ops":9125.4,"real_ops":8294.9,"user_usec":109.6,"real_usec":120.6,"est_time":2.9,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":63340,"user_time":14.95,"real_time":15.67,"user_ops":4236.8,"real_ops":4042.2,"user_usec":236.0,"real_usec":247.4,"est_time":2.72,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":12190,"user_time":14.84,"real_time":15.0,"user_ops":821.4,"real_ops":812.8,"user_usec":1217.4,"real_usec":1230.3,"est_time":1.88,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":1627,"user_time":15.14,"real_time":15.17,"user_ops":107.5,"real_ops":107.3,"user_usec":9305.5,"real_usec":9323.5,"est_time":1.75,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":199,"user_time":15.13,"real_time":15.17,"user_ops":13.2,"real_ops":13.1,"user_usec":76030.2,"real_usec":76239.8,"est_time":1.73,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":136533,"user_time":14.9,"real_time":16.46,"user_ops":9163.3,"real_ops":8293.0,"user_usec":109.1,"real_usec":120.6,"est_time":2.98,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":43267,"user_time":15.13,"real_time":15.69,"user_ops":2859.7,"real_ops":2757.1,"user_usec":349.7,"real_usec":362.7,"est_time":2.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":3622,"user_time":14.74,"real_time":14.8,"user_ops":245.7,"real_ops":244.8,"user_usec":4069.6,"real_usec":4085.0,"est_time":1.62,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":226,"user_time":15.0,"real_time":15.03,"user_ops":15.1,"real_ops":15.0,"user_usec":66371.7,"real_usec":66519.0,"est_time":1.39,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":16,"power":4,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":10,"user_time":14.12,"real_time":14.17,"user_ops":0.7,"real_ops":0.7,"user_usec":1412000.0,"real_usec":1416706.2,"est_time":2.76,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":136533,"user_time":15.1,"real_time":16.62,"user_ops":9041.9,"real_ops":8216.4,"user_usec":110.6,"real_usec":121.7,"est_time":3.16,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":26033,"user_time":14.74,"real_time":15.12,"user_ops":1766.1,"real_ops":1721.9,"user_usec":566.2,"real_usec":580.8,"est_time":1.94,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":979,"user_time":15.04,"real_time":15.06,"user_ops":65.1,"real_ops":65.0,"user_usec":15362.6,"real_usec":15388.1,"est_time":2.56,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":32,"power":3,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"insert","iterations":28,"user_time":15.08,"real_time":15.14,"user_ops":1.9,"real_ops":1.8,"user_usec":538571.4,"real_usec":540554.3,"est_time":1.12,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1356","tag":"suite_nest","status":"OK"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":73142,"user_time":15.13,"real_time":23.51,"user_ops":4834.2,"real_ops":3111.0,"user_usec":206.9,"real_usec":321.4,"est_time":3.15,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":57962,"user_time":15.83,"real_time":23.27,"user_ops":3661.5,"real_ops":2490.7,"user_usec":273.1,"real_usec":401.5,"est_time":2.1,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":28444,"user_time":14.49,"real_time":18.35,"user_ops":1963.0,"real_ops":1550.1,"user_usec":509.4,"real_usec":645.1,"est_time":2.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":9974,"user_time":14.83,"real_time":17.9,"user_ops":672.6,"real_ops":557.2,"user_usec":1486.9,"real_usec":1794.5,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":2782,"user_time":15.23,"real_time":16.52,"user_ops":182.7,"real_ops":168.4,"user_usec":5474.5,"real_usec":5937.4,"est_time":2.06,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":695,"user_time":15.04,"real_time":15.9,"user_ops":46.2,"real_ops":43.7,"user_usec":21640.3,"real_usec":22872.2,"est_time":2.13,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":166,"user_time":14.75,"real_time":15.41,"user_ops":11.3,"real_ops":10.8,"user_usec":88855.4,"real_usec":92831.2,"est_time":2.2,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":69033,"user_time":14.26,"real_time":22.38,"user_ops":4841.0,"real_ops":3084.5,"user_usec":206.6,"real_usec":324.2,"est_time":3.35,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":48761,"user_time":15.03,"real_time":21.02,"user_ops":3244.2,"real_ops":2320.1,"user_usec":308.2,"real_usec":431.0,"est_time":2.26,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":13473,"user_time":15.09,"real_time":18.37,"user_ops":892.8,"real_ops":733.4,"user_usec":1120.0,"real_usec":1363.4,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":1959,"user_time":14.83,"real_time":16.07,"user_ops":132.1,"real_ops":121.9,"user_usec":7570.2,"real_usec":8203.6,"est_time":2.69,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":244,"user_time":14.92,"real_time":15.63,"user_ops":16.4,"real_ops":15.6,"user_usec":61147.5,"real_usec":64060.5,"est_time":2.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":73142,"user_time":15.42,"real_time":24.19,"user_ops":4743.3,"real_ops":3023.9,"user_usec":210.8,"real_usec":330.7,"est_time":3.27,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":37463,"user_time":15.01,"real_time":20.15,"user_ops":2495.9,"real_ops":1859.5,"user_usec":400.7,"real_usec":537.8,"est_time":2.79,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":4314,"user_time":14.52,"real_time":16.46,"user_ops":297.1,"real_ops":262.1,"user_usec":3365.8,"real_usec":3815.4,"est_time":2.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":279,"user_time":14.75,"real_time":15.51,"user_ops":18.9,"real_ops":18.0,"user_usec":52867.4,"real_usec":55577.2,"est_time":2.59,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":69033,"user_time":13.78,"real_time":20.86,"user_ops":5009.7,"real_ops":3309.8,"user_usec":199.6,"real_usec":302.1,"est_time":3.35,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":26482,"user_time":15.25,"real_time":19.3,"user_ops":1736.5,"real_ops":1372.4,"user_usec":575.9,"real_usec":728.7,"est_time":1.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"array_nest_fixnum","operation":"find_one","iterations":1215,"user_time":14.88,"real_time":15.82,"user_ops":81.7,"real_ops":76.8,"user_usec":12246.9,"real_usec":13023.2,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":73142,"user_time":15.3,"real_time":24.1,"user_ops":4780.5,"real_ops":3035.3,"user_usec":209.2,"real_usec":329.5,"est_time":3.19,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":1,"size":4,"exp2":2,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":59076,"user_time":15.88,"real_time":23.73,"user_ops":3720.2,"real_ops":2490.0,"user_usec":268.8,"real_usec":401.6,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":2,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":29538,"user_time":14.84,"real_time":19.43,"user_ops":1990.4,"real_ops":1520.1,"user_usec":502.4,"real_usec":657.8,"est_time":1.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":3,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":10378,"user_time":14.83,"real_time":17.62,"user_ops":699.8,"real_ops":588.9,"user_usec":1429.0,"real_usec":1698.2,"est_time":2.29,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":4,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":2909,"user_time":14.84,"real_time":16.44,"user_ops":196.0,"real_ops":176.9,"user_usec":5101.4,"real_usec":5652.1,"est_time":2.07,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":5,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":727,"user_time":15.11,"real_time":15.85,"user_ops":48.1,"real_ops":45.9,"user_usec":20784.0,"real_usec":21800.3,"est_time":2.04,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":6,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":187,"user_time":14.57,"real_time":15.25,"user_ops":12.8,"real_ops":12.3,"user_usec":77914.4,"real_usec":81544.9,"est_time":2.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":7,"size":16384,"exp2":14,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":43,"user_time":14.3,"real_time":15.0,"user_ops":3.0,"real_ops":2.9,"user_usec":332558.1,"real_usec":348767.9,"est_time":1.74,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":4,"power":8,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":9,"user_time":13.79,"real_time":14.59,"user_ops":0.7,"real_ops":0.6,"user_usec":1532222.2,"real_usec":1620925.4,"est_time":5.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":74024,"user_time":14.93,"real_time":24.7,"user_ops":4958.1,"real_ops":2996.7,"user_usec":201.7,"real_usec":333.7,"est_time":3.2,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":1,"size":8,"exp2":3,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":52067,"user_time":14.48,"real_time":20.82,"user_ops":3595.8,"real_ops":2501.0,"user_usec":278.1,"real_usec":399.8,"est_time":2.24,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":2,"size":64,"exp2":6,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":15835,"user_time":15.17,"real_time":18.56,"user_ops":1043.8,"real_ops":853.4,"user_usec":958.0,"real_usec":1171.8,"est_time":2.86,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":3,"size":512,"exp2":9,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":2370,"user_time":15.08,"real_time":16.28,"user_ops":157.2,"real_ops":145.6,"user_usec":6362.9,"real_usec":6870.0,"est_time":2.34,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":8,"power":4,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":285,"user_time":14.85,"real_time":15.62,"user_ops":19.2,"real_ops":18.2,"user_usec":52105.3,"real_usec":54817.0,"est_time":2.45,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":16,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":80842,"user_time":16.3,"real_time":26.83,"user_ops":4959.6,"real_ops":3012.9,"user_usec":201.6,"real_usec":331.9,"est_time":2.93,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":16,"power":1,"size":16,"exp2":4,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":42666,"user_time":15.05,"real_time":20.53,"user_ops":2835.0,"real_ops":2078.4,"user_usec":352.7,"real_usec":481.1,"est_time":2.54,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":16,"power":2,"size":256,"exp2":8,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":5189,"user_time":14.96,"real_time":17.24,"user_ops":346.9,"real_ops":300.9,"user_usec":2883.0,"real_usec":3323.3,"est_time":2.21,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":16,"power":3,"size":4096,"exp2":12,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":338,"user_time":15.07,"real_time":15.77,"user_ops":22.4,"real_ops":21.4,"user_usec":44585.8,"real_usec":46654.1,"est_time":2.17,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":16,"power":4,"size":65536,"exp2":16,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":18,"user_time":14.48,"real_time":15.22,"user_ops":1.2,"real_ops":1.2,"user_usec":804444.4,"real_usec":845653.3,"est_time":3.53,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":32,"power":0,"size":1,"exp2":0,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":77772,"user_time":14.9,"real_time":23.8,"user_ops":5219.6,"real_ops":3267.7,"user_usec":191.6,"real_usec":306.0,"est_time":3.03,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":32,"power":1,"size":32,"exp2":5,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":30117,"user_time":15.3,"real_time":19.7,"user_ops":1968.4,"real_ops":1529.0,"user_usec":508.0,"real_usec":654.0,"est_time":1.84,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":32,"power":2,"size":1024,"exp2":10,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":1454,"user_time":15.05,"real_time":15.99,"user_ops":96.6,"real_ops":90.9,"user_usec":10350.8,"real_usec":10998.1,"est_time":2.09,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
{"base":32,"power":3,"size":32768,"exp2":15,"multi_power":-1,"multi_size":1,"generator":"hash_nest_fixnum","operation":"find_one","iterations":40,"user_time":14.69,"real_time":15.44,"user_ops":2.7,"real_ops":2.6,"user_usec":367250.0,"real_usec":386045.2,"est_time":1.83,"mode":"ruby","hostname":"osprey","osname":"Darwin","date":"20120511-1409","tag":"suite_nest","status":"OK"},
]; // 28 minutes

View File

@ -3,7 +3,6 @@ require 'rubygems'
require 'mongo' require 'mongo'
include Mongo include Mongo
include GridFS
db = Connection.new['benchmark-gridfs'] db = Connection.new['benchmark-gridfs']
sample_data = File.open(File.join(File.dirname(__FILE__), 'sample_file.pdf'), 'r').read sample_data = File.open(File.join(File.dirname(__FILE__), 'sample_file.pdf'), 'r').read
@ -15,20 +14,22 @@ length = sample_data.length
mb = T * length / 1048576.0 mb = T * length / 1048576.0
@grid = Grid.new(db) @grid = Grid.new(db)
@grid_file_system = GridFileSystem.new(db)
t1 = Time.now t1 = Time.now
ids = [] ids = []
T.times do |n| T.times do |n|
ids << @grid.put(sample_data, "mongodb-new-#{n}.pdf") ids << @grid.put(sample_data, :filename => "mongodb-new-#{n}.pdf")
end end
puts "Grid Write: #{mb / (Time.now - t1)} mb/s" puts "Grid Write: #{mb / (Time.now - t1)} mb/s"
t1 = Time.now t1 = Time.now
T.times do |n| T.times do |n|
GridStore.open(db, "mongodb.pdf-#{n}", 'w') do |f| @grid_file_system.open("mongodb.pdf-#{n}", 'w') do |f|
f.write(sample_data) f.write(sample_data)
end end
end end
puts "GridStore Write: #{mb / (Time.now - t1)} mb/s" puts "GridFileSystem Write: #{mb / (Time.now - t1)} mb/s"
t1 = Time.now t1 = Time.now
T.times do |n| T.times do |n|
@ -38,8 +39,8 @@ puts "Grid Read: #{mb / (Time.now - t1)} mb/s"
t1 = Time.now t1 = Time.now
T.times do |n| T.times do |n|
old_data = GridStore.open(db, "mongodb.pdf-#{n}", 'r') do |f| old_data = @grid_file_system.open("mongodb.pdf-#{n}", 'r') do |f|
f.read f.read
end end
end end
puts "GridStore Read: #{mb / (Time.now - t1)} mb/s" puts "GridFileSystem Read: #{mb / (Time.now - t1)} mb/s"

2599
bench/jquery.flot.js Normal file

File diff suppressed because it is too large Load Diff

8316
bench/jquery.js vendored Normal file

File diff suppressed because it is too large Load Diff

95
bench/profile_array.rb Normal file
View File

@ -0,0 +1,95 @@
#!/usr/bin/env ruby
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
def set_mongo_driver_mode(mode)
case mode
when :c
ENV.delete('TEST_MODE')
ENV['C_EXT'] = 'TRUE'
when :ruby
ENV['TEST_MODE'] = 'TRUE'
ENV.delete('C_EXT')
else
raise 'mode must be :c or :ruby'
end
ENV['MONGO_DRIVER_MODE'] = mode.to_s
end
$mode = ARGV[0].to_sym if ARGV[0]
set_mongo_driver_mode($mode || :c)
require 'rubygems'
require 'mongo'
require 'benchmark'
require 'ruby-prof'
def array_size_fixnum(base, power)
n = base ** power
return [n, {n.to_s => Array.new(n, n)}]
end
def array_size_fixnum(base, power)
n = base ** power
return [n, {n.to_s => Array.new(n, n)}]
end
def insert(coll, h)
h.delete(:_id) # delete :_id to insert
coll.insert(h) # note that insert stores :_id in h and subsequent inserts are updates
end
def benchmark(iterations)
btms = Benchmark.measure do
(0...iterations).each do
yield
end
end
utime = btms.utime
p ({'ops' => (iterations.to_f / utime.to_f).round(1)})
end
def ruby_prof(iterations)
RubyProf.start
puts Benchmark.measure {
iterations.times { yield }
}
result = RubyProf.stop
# Print a flat profile to text
printer = RubyProf::FlatPrinter.new(result)
printer.print(STDOUT)
# Print a graph profile to text
printer = RubyProf::GraphPrinter.new(result)
printer.print(STDOUT, {})
end
#def perftools(iterations)
# profile_file_name = '/tmp/profile_array.perftools'
# PerfTools::CpuProfiler.start(profile_file_name) do
# iterations.times { yield }
# end
# cmd = "pprof.rb --ignore=IO --text \"#{profile_file_name}\""
# system(cmd)
#end
conn = Mongo::Connection.new
db = conn['benchmark']
coll = db['profile']
coll.remove
#puts "coll.count: #{coll.count}"
base = 2
power = 6
n, doc = array_size_fixnum(base, power)
p ({'generator' => 'array_size_fixnum', 'operation' => 'insert', 'base' => base, 'power' => power})
benchmark(10000) { insert(coll, doc)} # valgrind --tool=callgrind ruby bench/profile_array.rb; callgrind_annotate ...
#ruby_prof(1000) { insert(coll, doc) }
#perftools(10000) { insert(coll, doc) }
#puts "coll.count: #{coll.count}"
coll.remove

View File

@ -1,5 +1,5 @@
#!/usr/bin/env ruby #!/usr/bin/env ruby
#$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib') $LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
# #
# Note: Ruby 1.9 is faster than 1.8, as expected. # Note: Ruby 1.9 is faster than 1.8, as expected.
# This suite will be run against the installed version of ruby-mongo-driver. # This suite will be run against the installed version of ruby-mongo-driver.

View File

@ -1,4 +1,4 @@
#!/usr/bin/ruby #!/usr/bin/env ruby
# encoding: UTF-8 # encoding: UTF-8
# -- # --

View File

@ -1,4 +1,4 @@
#!/usr/bin/ruby #!/usr/bin/env ruby
# encoding: UTF-8 # encoding: UTF-8
# -- # --

View File

@ -1,4 +1,5 @@
require "./lib/bson" $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
require 'bson'
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = 'bson' s.name = 'bson'
@ -14,7 +15,7 @@ Gem::Specification.new do |s|
s.files = ['LICENSE.txt'] s.files = ['LICENSE.txt']
s.files += ['lib/bson.rb'] + Dir['lib/bson/**/*.rb'] s.files += ['lib/bson.rb'] + Dir['lib/bson/**/*.rb']
s.files += ['bin/b2json', 'bin/j2bson'] s.files += ['bin/b2json', 'bin/j2bson']
s.test_files = Dir['test/bson/*.rb'] s.test_files = Dir['test/bson/*.rb', 'test/support/hash_with_indifferent_access.rb']
s.executables = ['b2json', 'j2bson'] s.executables = ['b2json', 'j2bson']

View File

@ -1,4 +1,5 @@
require "./lib/bson" $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
require 'bson'
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = 'bson' s.name = 'bson'
@ -14,7 +15,7 @@ Gem::Specification.new do |s|
s.files = ['LICENSE.txt'] s.files = ['LICENSE.txt']
s.files += ['lib/bson.rb'] + Dir['lib/bson/**/*.rb'] s.files += ['lib/bson.rb'] + Dir['lib/bson/**/*.rb']
s.files += ['bin/b2json', 'bin/j2bson'] s.files += ['bin/b2json', 'bin/j2bson']
s.files += ["ext/java/jar/bson-2.2.jar", "ext/java/jar/jbson.jar", "ext/java/jar/mongo-2.4.jar"] s.files += ['ext/java/jar/jbson.jar', 'ext/java/jar/mongo-2.6.5.jar']
s.test_files = Dir['test/bson/*.rb'] s.test_files = Dir['test/bson/*.rb']
s.executables = ['b2json', 'j2bson'] s.executables = ['b2json', 'j2bson']

View File

@ -1,6 +1,8 @@
require './lib/bson' $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
require 'bson'
VERSION_HEADER = File.open(File.join(File.dirname(__FILE__), 'ext', 'cbson', 'version.h'), "r") VERSION_HEADER = File.open(File.join(File.dirname(__FILE__), 'ext', 'cbson', 'version.h'), "r")
VERSION = VERSION_HEADER.read.scan(/VERSION\s+"(\d+\.\d+(\.[\w\d]+\w*)?)\"/)[0][0] VERSION = VERSION_HEADER.read.scan(/VERSION "(\d[^"]+)"/)[0][0]
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = 'bson_ext' s.name = 'bson_ext'
@ -17,7 +19,8 @@ Gem::Specification.new do |s|
s.has_rdoc = false s.has_rdoc = false
s.extensions << 'ext/cbson/extconf.rb' s.extensions << 'ext/cbson/extconf.rb'
s.author = 'Mike Dirolf' s.authors = ['Mike Dirolf', 'Kyle Banker', 'Tyler Brock', 'Gary Murakami']
s.email = 'mongodb-dev@googlegroups.com' s.email = 'mongodb-dev@googlegroups.com'
s.homepage = 'http://www.mongodb.org' s.homepage = 'http://www.mongodb.org'
s.add_dependency('bson', "~> #{BSON::VERSION}")
end end

View File

@ -1,21 +0,0 @@
You can upgrade freely from v0.20 to v1.0.
However, if you're running a version < 0.20, upgrade to 0.20
before upgrading to 1.0.
The upgrade to 0.20 requires some minor code upgrades.
1. Note the exception changes in HISTORY. Certain exceptions are now scoped under the BSON
module; if you're catching these, you will need to modify your code.
2. The BSON types are now scoped under the BSON module.
3. Note that mongo_ext no longer exists. The new gems are bson and bson_ext.
4. Indexes on GridFS chunks collections should be unique. If you have existing GridFS
collections, you should drop the current index and replace with a unique one. Before you do this,
make sure that index doesn't exist; no need to go through process unnecessarily.
If you do need to create the index, once you have the chunks collection, here are the commands you can run:
@chunks.drop_index('files_id_1_n_1')
@chunks.create_index([['files_id', Mongo::ASCENDING], ['n', Mongo::ASCENDING]], :unique => true)

View File

@ -110,3 +110,7 @@ Without further investigation, it's impossible to know exactly what has caused t
Because of the indeterminacy involved, the MongoDB drivers will not retry operations on connection failure. How connection failures should be handled is entirely dependent on the application. Therefore, we leave it to the application developers to make the best decision in this case. Because of the indeterminacy involved, the MongoDB drivers will not retry operations on connection failure. How connection failures should be handled is entirely dependent on the application. Therefore, we leave it to the application developers to make the best decision in this case.
The drivers will reconnect on the subsequent operation. The drivers will reconnect on the subsequent operation.
#### I ocassionally get an error saying that responses are out of order. What's happening?
See (this JIRA issue)[http://jira.mongodb.org/browse/RUBY-221].

View File

@ -88,7 +88,7 @@ Deleting a file is as simple as providing the id:
### The GridFileSystem class ### The GridFileSystem class
[GridFileSystem](http://api.mongodb.org/ruby/current/Mongo/GridFileSystem.html) is a light emulation of a file system and therefore has a couple of unique properties. The first is that filenames are assumed to be unique. The second, a consequence of the first, is that files are versioned. To see what this means, let's create a GridFileSystem instance: [GridFileSystem](Mongo/GridFileSystem.html) is a light emulation of a file system and therefore has a couple of unique properties. The first is that filenames are assumed to be unique. The second, a consequence of the first, is that files are versioned. To see what this means, let's create a GridFileSystem instance:
#### Saving files #### Saving files
@ -154,5 +154,5 @@ All of the options for storing metadata and saving in safe mode are available fo
### Advanced Users ### Advanced Users
Astute code readers will notice that the Grid and GridFileSystem classes are merely thin wrappers around an underlying [GridIO class](http://api.mongodb.org/ruby/current/Mongo/GridIO.html). This means that it's easy to customize the GridFS implementation presented here; just use GridIO for all the low-level work, and build the API you need in an external manager class similar to Grid or GridFileSystem. Astute code readers will notice that the Grid and GridFileSystem classes are merely thin wrappers around an underlying [GridIO class](Mongo/GridIO.html). This means that it's easy to customize the GridFS implementation presented here; just use GridIO for all the low-level work, and build the API you need in an external manager class similar to Grid or GridFileSystem.

View File

@ -1,9 +1,178 @@
# MongoDB Ruby Driver History # MongoDB Ruby Driver History
1.2.rc0 ### 1.6.2
2012-04-05
* Implements socket timeouts via non-blocking IO instead of Timeout module
which should greately increase performance in highly threaded applications
* Added ability to authentication via secondary if primary node unavailable
* Replica set refresh interval now enforces a lower bound of 60 seconds
* Added documentation for dropping indexes, collections, databases
* Test output cleanup (...)s unless failure occurs
### 1.6.1
2012-03-07
* Added thread affinity to Mongo::Pool
* Added deploy tasks
* Added Travis CI support (Cyril Mougel)
* Logging warning message is only displayed for level :debug
### 1.6.0
2012-02-22
* Added Gemfile
* ReplSetConnection seed format is now array of 'host:port' strings
* Added read preference :secondary_only
* Added ability to log duration -- enabled by default (Cyril Mougel)
* Added read_only option for DB#add_user (Ariel Salomon)
* Added :collect_on_error option for bulk-insert (Masahiro Nakagawa)
* Added and updated URI options (now case insensitive)
* Bug fix for ReplSet refresh attempting to close a closed socket
* Default op_timeout for ReplSetConnection is now disabled (was 30 seconds)
* Support db output option for map reduce (John Ewart)
* Support for keeping limited versions of files using GridFS (VvanGemert)
### 1.5.2
2011-12-13
* Lots of fixes for replica set connection edge cases.
* Set default op_timeout and connect_timeout to 30 seconds.
* Support GeoHaystack indexing.
### 1.5.1
2011-11-29
Release due to corrupted gemspec. This was a bug having
to do with rubygems. Apparently, gems must still be
built with Ruby 1.8.
### 1.5.0
2011-11-28
This releases fixes bugs introduced in 1.4.0 and 1.4.1 that
were introduced as a result of adding replica set refresh modes.
* Removed :async refresh mode.
* Disabled auto refresh mode by default. If you want the driver
to automatically check the state of the replica set, you must
use :sync mode. Note that replica set refresh is designed only to
account for benign changes to the replica set (adding and removing
nodes that don't affect current connections).
* Fixed bug with commands being sent to secondary nodes. The next
release will allow you to specify where commands can be sent.
* Support :j safe mode option.
* Fix :max_scan and :show_disk_loc Cursor options.
You can see the remaining issues at https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10005&version=10992
### 1.5.0.rc0
2011-11-18
Fix bugs associated with replica set refresh.
### 1.4.1
2011-10-17
If you're using 1.4.0, this is a necessary upgrade.
* Simplified replica set refresh.
* Fix bugs associated with replica set refresh.
* Make cursor smart enough to continue functioning
even if a refresh is triggered.
### 1.4.0
2011-9-19
* Attempt to automatically refresh internal replica set state using ReplSetConnection#refresh.
* Two automated refresh modes: :async and :sync. Automated refresh can also be disabled.
* Choose secondary for reads based on ping time.
* Read preference API: specify whether queries should go to primary or secondary on a per-query basis.
* Pass :require_primary => false to ReplSetConnection to connect without requiring a primary node.
* Enable exhaust-mode queries with OP_QUERY_EXHAUST.
* Collection#count takes a query selector.
* Support continue_on_error flag for bulk inserts (use :continue_on_error => true)
* Add Cursor#add_option. Deprecate Cursor#query_opts and replace with Cursor#options.
* Initial SSL support (connect with :ssl => true)
* Update to latest Java driver for JRuby.
* Check max BSON size on a per-connection basis.
* Fixed two platform-specific BSON serialization issues.
* Lots of bug fixes and code cleanup.
### 1.3.1
2011-5-10
* Fix GridIO#gets infinite loop error (Ryan McGeary)
* Fix BSON::OrderedHash#reject! leaving keys with null values (rpt. by Ben Poweski)
* Minor semantic fix for OrderedHash#reject!
* Fix Mongo::DB to allow symbols in method traversing collection names (rpt. by Chris Griego)
* Support new server regex option "s" (dotall). This is folded in with \m in Ruby.
* Fix so that Cursor#close hits the right node when :read_secondary is enabled.
* Support maxScan, showDiskLoc, and returnKey cursor options.
* Make DB#validate_collection compatible with server v1.9.1.
* Fix so that GridIO#gets returns local md5 with md5 matches server md5 (Steve Tantra).
* Fix bug in BSON::OrderedHash that prevents YAML.load (Ian Warshak).
* Fix example from /examples.
* Ensure that we do not modify hash arguments by calling Hash#dup when appropriate.
* Ensure that JRuby deserializer preserves binary subtypes properly.
* Fix for streaming an empty file into GridFS (Daniël van de Burgt).
* Minor doc fixes.
### 1.3.0
2011-4-04
* Add option to set timeouts on socket read calls using the
Mongo::Connection :op_timeout option.
* Add StringIO methods to GridIO objects
* Support for BSON timestamp type with BSON::Timestamp
* Change the BSON binary subtype from 2 to 0
* Remove private method Connection#reset_conection
and deprecate public method ReplSetConnection#reset_connection
* ByteBuffer#== and OrderedHash#dup (Hongli Lai)
* Better check for UTF8 validity in Ruby 1.9
* Added previously removed Connection#host and Connection#port
* Added transformers to allow Mongo::Cursor to allow instantiated objects (John Nunemaker)
* Automated reconnection on fork
* Added Cursor#next alias for Cursor#next_document
* Audit tests after enabling warnings (Wojciech Piekutowski)
* Various bug fixes thanks to Datanoise, Hongli Lai, and Mauro Pompilio
### 1.2.4
2011-2-23
* Fix the exception message shown when there's an IOError (Mauro Pompilio)
* Another update to map-reduce docs for v1.8. Note that if you use the new
output option `{:out => {:inline => true}}`, then you must also specify
`:raw => true`.
### 1.2.3
2011-2-22
* Update docs for map-reduce command
* Minor doc fix
### 1.2.2
2011-2-15
* Improved replica set failover for edge case.
* Fix for REE on OSX (Hongli Lai)
### 1.2.1
2011-1-18
* Enable authentication with connection pooling.
* Allow custom logging with Connection#instrument (CodeMonkeySteve)
* Minor fixes and doc improvements.
### 1.2.0
2011-1-18
* Some minor improvements. See commit history.
### 1.2.rc0
2011-1-5 2011-1-5
Lots of cleanp and minor bug fixes. Lots of cleanup and minor bug fixes.
* Issues resolved: http://jira.mongodb.org/browse/RUBY/fixforversion/10222 * Issues resolved: http://jira.mongodb.org/browse/RUBY/fixforversion/10222
* Updated Java BSON to Java driver 2.4. * Updated Java BSON to Java driver 2.4.
* Platform gem for JRuby bson. * Platform gem for JRuby bson.

39
docs/READ_PREFERENCE.md Normal file
View File

@ -0,0 +1,39 @@
# Read Preference in Ruby
## Setting the read preference
You can using the `:read` option to specify a query's read preference. There are for now two possible options:
@collection.find({:doc => 'foo'}, :read => :primary)
@collection.find({:doc => 'foo'}, :read => :secondary)
In the first case, the query will be directed to the primary node in a replica set. In the second, the query will be sent
to a secondary node. The driver will attempt to choose a secondary node that's nearby, as determined by ping time. If more
than one secondary node is closeby (e.g, responds to pings within 10ms), then a random node within this subset will be chosen.
## Read preference inheritance
The Ruby driver allows you to set read preference on each of four levels: the connection, database, collection, and cursor (or read operation).
Objects will inherit the default read preference from their parents. Thus, if you set a read preference of `{:read => :secondary}` when creating
a new connection, then all databases and collections created from that connection will inherit the same setting. See this code example:
@con = Mongo::ReplSetConnection.new(['localhost:27017','localhost:27018'], :read => :secondary)
@db = @con['test']
@collection = @db['foo']
@collection.find({:name => 'foo'})
@collection.find({:name => 'bar'}, :read => :primary)
Here, the first call to Collection#find will use the inherited read preference, `{:read => :secondary}`. But the second call
to Collection#find overrides this setting by setting the preference to `:primary`.
You can examine the read preference on any object by calling its `read_preference` method:
@con.read_preference
@db.read_preference
@collection.read_preference
## Future work
In the v2.0 release of the driver, you'll also be able to specify a read preference consisting of a set of tags. This way,
you'll be able to direct reads to a replica set member. You can follow this issue's progress here: (https://jira.mongodb.org/browse/RUBY-326).

54
docs/RELEASES.md Normal file
View File

@ -0,0 +1,54 @@
# MongoDB Ruby Driver Release Plan
This is a description of a formalized release plan that will take effect
with version 1.3.0.
## Semantic versioning
The most significant difference is that releases will now adhere to the conventions of
[semantic versioning](http://semver.org). In particular, we will strictly abide by the
following release rules:
1. Patch versions of the driver (Z in x.y.Z) will be released only when backward-compatible bug fixes are introduced. A bug fix is defined as an internal change that fixes incorrect behavior.
2. Minor versions (Y in x.Y.z) will be released if new, backward-compatible functionality is introduced to the public API.
3. Major versions (X in X.y.z) will be incremented if any backward-incompatible changes are introduced to the public API.
This policy will clearly indicate to users when an upgrade may affect their code. As a side effect, version numbers will climb more quickly than before.
## Release checklist
Before each relese to Rubygems.org, the following steps will be taken:
1. All driver tests will be run on Linux, OS X, and Windows via continuous integration system.
2. Update the HISTORY file and document all significant commits.
3. Update the version in lib/bson.rb, lib/mongo/version.rb, and ext/version.h.
4. Commit: "Release [VERSION]"
5. git tag [version]
6. Build gems. Ensure that they have the correct versions.
7. Push tags and commit to GitHub (git push origin master, git push --tags).
8. Build and push docs.
9. Push gems to Rubygems.org.
10. Test that the gem is downloadable from Rubygems.org.
11. Close out release in JIRA.
12. Annouce release on mongodb-user and mongodb-dev.
## Rake Deploy Tasks
1. rake deploy:change_version[1.6.1]
2. rake deploy:git_prepare
3. rake deploy:git_push
4. rake deploy:gem_build
5. rake deploy:gem_push

View File

@ -6,18 +6,19 @@ Here follow a few considerations for those using the MongoDB Ruby driver with [r
First, make sure that you've configured and initialized a replica set. First, make sure that you've configured and initialized a replica set.
Use `ReplSetConnection.new` to connect to a replica set: Use `ReplSetConnection.new` to connect to a replica set. This method, which accepts a variable number of arugments,
takes a list of seed nodes followed by any connection options. You'll want to specify at least two seed nodes. This gives
the driver more chances to connect in the event that any one seed node is offline. Once the driver connects, it will
cache the replica set topology as reported by the given seed node and use that information if a failover is later required.
@connection = ReplSetConnection.new(['n1.mydb.net', 27017], ['n2.mydb.net', 27017], ['n3.mydb.net', 27017]) @connection = ReplSetConnection.new(['n1.mydb.net:27017', 'n2.mydb.net:27017', 'n3.mydb.net:27017'])
The driver will attempt to connect to a master node and, when found, will replace all seed nodes with known members of the replica set.
### Read slaves ### Read slaves
If you want to read from a seconday node, you can pass :read_secondary => true to ReplSetConnection#new. If you want to read from a secondary node, you can pass :read => :secondary to ReplSetConnection#new.
@connection = ReplSetConnection.new(['n1.mydb.net', 27017], ['n2.mydb.net', 27017], ['n3.mydb.net', 27017], @connection = ReplSetConnection.new(['n1.mydb.net:27017', 'n2.mydb.net:27017', 'n3.mydb.net:27017'],
:read_secondary => true) :read => :secondary)
A random secondary will be chosen to be read from. In a typical multi-process Ruby application, you'll have a good distribution of reads across secondary nodes. A random secondary will be chosen to be read from. In a typical multi-process Ruby application, you'll have a good distribution of reads across secondary nodes.
@ -27,10 +28,51 @@ Imagine that either the master node or one of the read nodes goes offline. How w
If any read operation fails, the driver will raise a *ConnectionFailure* exception. It then becomes the client's responsibility to decide how to handle this. If any read operation fails, the driver will raise a *ConnectionFailure* exception. It then becomes the client's responsibility to decide how to handle this.
If the client decides to retry, it's not guaranteed that another member of the replica set will have been promoted to master right away, so it's still possible that the driver will raise another *ConnectionFailure*. However, once a member has been promoted to master, typically within a few seconds, subsequent operations will succeed. If the client decides to retry, it's not guaranteed that another member of the replica set will have been promoted to master right away, so it's still possible that the driver will raise another *ConnectionFailure*. However, once a member has been promoted to master, typically within a few seconds, subsequent operations will succeed. *Note that this does not prevent
exception in the event of a primary failover.*
The driver will essentially cycle through all known seed addresses until a node identifies itself as master. The driver will essentially cycle through all known seed addresses until a node identifies itself as master.
### Refresh mode
You can now specify a refresh mode and refresh interval for a replica set connection. This will help to ensure that
changes to a replica set's configuration are quickly reflected on the driver side. In particular, if you change
the state of any secondary node, the automated refresh will ensure that this state is recorded on the client side.
There are two secenarios in which refresh is helpful and does not raise exceptions:
1. You add a new secondary node to an existing replica set
2. You remove an unused secondary from an existing replica set
If using MongoDB earlier than 2.0 any changes to replica set state will raise exceptions therefore refresh mode will not be useful.
If you add a secondary that responds to pings much faster than the existing nodes, then the new secondary will
be used for reads if :read_preference is :secondary or :secondary_only
Refresh mode is disabled by default.
However, if you expect to make live changes to your secondaries, and you want this to be reflected without
having to manually restart your app server, then you should enable it. You can enable this mode
synchronously, which will refresh the replica set data in a synchronous fashion (which may
ocassionally slow down your queries):
@connection = ReplSetConnection.new(['n1.mydb.net:27017'], :refresh_mode => :sync)
If you want to change the default refresh interval of 90 seconds, you can do so like this:
@connection = ReplSetConnection.new(['n1.mydb.net:27017'], :refresh_mode => :sync,
:refresh_interval => 60)
Do not set this value to anything lower than 30, or you may start to experience performance issues.
You can also disable refresh mode altogether:
@connection = ReplSetConnection.new(['n1.mydb.net:27017'], :refresh_mode => false)
And you can call `refresh` manually on any replica set connection:
@connection.refresh
### Recovery ### Recovery
Driver users may wish to wrap their database calls with failure recovery code. Here's one possibility, which will attempt to connection Driver users may wish to wrap their database calls with failure recovery code. Here's one possibility, which will attempt to connection
@ -63,7 +105,7 @@ The Ruby driver (>= 1.1.5) includes unit tests for verifying replica set behavio
rake test:rs rake test:rs
The suite will set up a five-node replica set by itself and ensure that driver behaves correctly even in the face The suite will set up a five-node replica set by itself and ensure that driver behaves correctly even in the face
of individual node failures. Node that the `mongod` executable must be in the search path for this to work. of individual node failures. Note that the `mongod` executable must be in the search path for this to work.
### Further Reading ### Further Reading

51
docs/TAILABLE_CURSORS.md Normal file
View File

@ -0,0 +1,51 @@
# Tailable cursors in Ruby
Tailable cursors are cursors that remain open even after they've returned
a final result. This way, if more documents are added to a collection (i.e.,
to the cursor's result set), then you can continue to call `Cursor#next` to
retrieve those results. Here's a complete test case that demonstrates the use
of tailable cursors.
Note that tailable cursors are for capped collections only.
require 'mongo'
require 'test/unit'
class TestTailable < Test::Unit::TestCase
include Mongo
def test_tailable
# Create a connection and capped collection.
@con = Connection.new
@db = @con['test']
@db.drop_collection('log')
@capped = @db.create_collection('log', :capped => true, :size => 1024)
# Insert 10 documents.
10.times do |n|
@capped.insert({:n => n})
end
# Create a tailable cursor that iterates the collection in natural order
@tail = Cursor.new(@capped, :tailable => true, :order => [['$natural', 1]])
# Call Cursor#next 10 times. Each call returns a document.
10.times do
assert @tail.next
end
# But the 11th time, the cursor returns nothing.
assert_nil @tail.next
# Add a document to the capped collection.
@capped.insert({:n => 100})
# Now call Cursor#next again. This will return the just-inserted result.
assert @tail.next
# Close the cursor.
@tail.close
end
end

View File

@ -9,13 +9,16 @@ As always, the [latest source for the Ruby driver](http://github.com/mongodb/mon
## Installation ## Installation
The mongo-ruby-driver gem is served through Rubygems.org. To install, make sure you have the latest version of rubygems. The mongo-ruby-driver gem is served through Rubygems.org. To install, make sure you have the latest version of rubygems.
gem update --system gem update --system
Next, install the mongo rubygem: Next, install the mongo rubygem:
gem install mongo gem install mongo
The required `bson` gem will be installed automatically. The required `bson` gem will be installed automatically.
For optimum performance, install the bson_ext gem: For optimum performance, install the bson\_ext gem:
gem install bson_ext gem install bson_ext
@ -23,35 +26,46 @@ After installing, you may want to look at the [examples](http://github.com/mongo
## Getting started ## Getting started
#### Using the gem Note that the output in the following has been updated to Ruby 1.9, so if you are using Ruby 1.8, you will see some minor differences. To follow this tutorial interactively, at the command line, run the Interactive Ruby Shell.
All of the code here assumes that you have already executed the following Ruby code: irb
As you execute commands, irb will output the result using the `inspect` method. If you are editing and running a script for this tutorial, you can view output using the `puts` or `p` methods.
### Using the gem
Use the `mongo` gem via the `require` kernel method.
require 'rubygems' # not necessary for Ruby 1.9 require 'rubygems' # not necessary for Ruby 1.9
require 'mongo' require 'mongo'
#### Making a Connection ### Making a Connection
An `Mongo::Connection` instance represents a connection to MongoDB. You use a Connection instance to obtain an Mongo:DB instance, which represents a named database. The database doesn't have to exist - if it doesn't, MongoDB will create it for you. An `Mongo::Connection` instance represents a connection to MongoDB. You can optionally specify the MongoDB server address and port when connecting. The following example shows three ways to connect to the local machine:
You can optionally specify the MongoDB server address and port when connecting. The following example shows three ways to connect to the database "mydb" on the local machine: connection = Mongo::Connection.new # (optional host/port args)
connection = Mongo::Connection.new("localhost")
connection = Mongo::Connection.new("localhost", 27017)
### Listing All Databases
connection.database_names
connection.database_info.each { |info| puts info.inspect }
The `database_info` method returns a hash mapping database names to the size of the database in bytes.
## Using a Database
You use a Connection instance to obtain an Mongo::DB instance, which represents a named database. The database doesn't have to exist - if it doesn't, MongoDB will create it for you. The following examples use the database "mydb":
db = connection.db("mydb")
db = Mongo::Connection.new.db("mydb") db = Mongo::Connection.new.db("mydb")
db = Mongo::Connection.new("localhost").db("mydb")
db = Mongo::Connection.new("localhost", 27017).db("mydb")
At this point, the `db` object will be a connection to a MongoDB server for the specified database. Each DB instance uses a separate socket connection to the server. At this point, the `db` object will be a connection to a MongoDB server for the specified database. Each DB instance uses a separate socket connection to the server.
If you're trying to connect to a replica set, see [Replica Sets in Ruby](http://www.mongodb.org/display/DOCS/Replica+Sets+in+Ruby). If you're trying to connect to a replica set, see [Replica Sets in Ruby](http://www.mongodb.org/display/DOCS/Replica+Sets+in+Ruby).
#### Listing All Databases ### Authentication
connection = Mongo::Connection.new # (optional host/port args)
connection.database_names.each { |name| puts name }
connection.database_info.each { |info| puts info.inspect}
#### Dropping a Database
connection.drop_database('database_name')
MongoDB can be run in a secure mode where access to databases is controlled through name and password authentication. When run in this mode, any client application must provide a name and password before doing any operations. In the Ruby driver, you simply do the following with the connected mongo object: MongoDB can be run in a secure mode where access to databases is controlled through name and password authentication. When run in this mode, any client application must provide a name and password before doing any operations. In the Ruby driver, you simply do the following with the connected mongo object:
@ -59,31 +73,21 @@ MongoDB can be run in a secure mode where access to databases is controlled thro
If the name and password are valid for the database, `auth` will be `true`. Otherwise, it will be `false`. You should look at the MongoDB log for further information if available. If the name and password are valid for the database, `auth` will be `true`. Otherwise, it will be `false`. You should look at the MongoDB log for further information if available.
#### Getting a List Of Collections ## Using a Collection
Each database has zero or more collections. You can retrieve a list of them from the db (and print out any that are there):
db.collection_names.each { |name| puts name }
and assuming that there are two collections, name and address, in the database, you would see
name
address
as the output.
#### Getting a Collection
You can get a collection to use using the `collection` method: You can get a collection to use using the `collection` method:
coll = db.collection("testCollection") coll = db.collection("testCollection")
This is aliased to the \[\] method: This is aliased to the \[\] method:
coll = db["testCollection"] coll = db["testCollection"]
Once you have this collection object, you can now do things like insert data, query for data, etc. Once you have this collection object, you can now do create, read, update, and delete (CRUD) functions on persistent storage.
#### Inserting a Document ### Creating Documents with `insert`
Once you have the collection object, you can insert documents into the collection. For example, lets make a little document that in JSON would be represented as Once you have the collection object, you can create or `insert` documents into the collection. For example, lets make a little document that in JSON would be represented as
{ {
"name" : "MongoDB", "name" : "MongoDB",
@ -95,115 +99,170 @@ Once you have the collection object, you can insert documents into the collectio
} }
} }
Notice that the above has an "inner" document embedded within it. To do this, we can use a Hash or the driver's OrderedHash (which preserves key order) to create the document (including the inner document), and then just simply insert it into the collection using the `insert()` method. Notice that the above has an "inner" document embedded within it. To do this, we can use a Hash or the driver's OrderedHash (which preserves key order) to create the document (including the inner document), and then just simply insert it into the collection using the `insert` method.
doc = {"name" => "MongoDB", "type" => "database", "count" => 1, doc = {"name" => "MongoDB", "type" => "database", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
"info" => {"x" => 203, "y" => '102'` id = coll.insert(doc)
coll.insert(doc)
#### Updating a Document We have saved the `id` for future use below. Now the collection has been created and you can list it.
We can update the previous document using the `update` method. There are a couple ways to update a document. We can rewrite it: #### Getting a List Of Collections
doc["name"] = "MongoDB Ruby" Each database has zero or more collections. You can retrieve a list of them from the db (and print out any that are there):
coll.update({"_id" => doc["_id"]}, doc)
Or we can use an atomic operator to change a single value: db.collection_names
coll.update({"_id" => doc["_id"]}, {"$set" => {"name" => "MongoDB Ruby"`) You should see
Read [more about updating documents|Updating]. \["testCollection", "system.indexes"\]
#### Finding the First Document In a Collection using `find_one()`
To show that the document we inserted in the previous step is there, we can do a simple `find_one()` operation to get the first document in the collection. This method returns a single document (rather than the `Cursor` that the `find()` operation returns).
my_doc = coll.find_one()
puts my_doc.inspect
and you should see:
{"_id"=>#<BSON::ObjectID:0x118576c ...>, "name"=>"MongoDB",
"info"=>{"x"=>203, "y"=>102}, "type"=>"database", "count"=>1}
Note the `\_id` element has been added automatically by MongoDB to your document.
#### Adding Multiple Documents #### Adding Multiple Documents
To demonstrate some more interesting queries, let's add multiple simple documents to the collection. These documents will have the following form: To demonstrate some more interesting queries, let's add multiple simple documents to the collection. These documents will have the following form:
{
"i" : value {
} "i" : value
}
Here's how to insert them: Here's how to insert them:
100.times { |i| coll.insert("i" => i) } 100.times { |i| coll.insert("i" => i) }
Notice that we can insert documents of different "shapes" into the same collection. These records are in the same collection as the complex record we inserted above. This aspect is what we mean when we say that MongoDB is "schema-free". Notice that we can insert documents of different "shapes" into the same collection. These records are in the same collection as the complex record we inserted above. This aspect is what we mean when we say that MongoDB is "schema-free".
#### Counting Documents in a Collection ### Reading Documents with `find_one` and `find`
Now that we've inserted 101 documents (the 100 we did in the loop, plus the first one), we can check to see if we have them all using the `count()` method. #### Reading the First Document in a Collection using `find_one`
puts coll.count() To retrieve the document that we inserted, we can do a simple `find_one` method to get the first document in the collection. This method returns a single document directly.
and it should print `101`. coll.find_one
#### Using a Cursor to get all of the Documents and you should something like:
To get all the documents from the collection, we use the `find()` method. `find()` returns a `Cursor` object, which allows us to iterate over the set of documents that matches our query. The Ruby driver's Cursor implemented Enumerable, which allows us to use `Enumerable#each`, `Enumerable#map}, etc. For instance: {"_id"=>BSON::ObjectId('4f7b1ea6e4d30b35c9000001'), "name"=>"MongoDB", "type"=>"database", "count"=>1, "info"=>{"x"=>203, "y"=>"102"}}
coll.find().each { |row| puts row.inspect } Note the `_id` element has been added automatically by MongoDB to your document.
and that should print all 101 documents in the collection. #### Reading All of the Documents with a Cursor using `find`
#### Getting a Single Document with a Query To get all the documents from the collection, we use the `find` method. `find` returns a `Cursor` object, which allows us to iterate over the set of documents that matches our query. The Ruby driver's Cursor implemented Enumerable, which allows us to use `Enumerable#each`, `Enumerable#map}, etc. For instance:
We can create a _query_ hash to pass to the `find()` method to get a subset of the documents in our collection. For example, if we wanted to find the document for which the value of the "i" field is 71, we would do the following ; coll.find.each { |row| puts row.inspect }
coll.find("i" => 71).each { |row| puts row.inspect } and that should print all 101 documents in the collection. You can take advantage of `Enumerable#to_a`.
puts coll.find.to_a
Important note - using `to_a` pulls all of the full result set into memory and is inefficient if you can process by each individual document. To process with more memory efficiency, use the `each` method with a code block for the cursor.
#### Specific Queries
We can create a _query_ hash to pass to the `find` method to get a subset of the documents in our collection. To check that our update worked, find the document by id:
coll.find("_id" => id).to_a
If we wanted to find the document for which the value of the "i" field is 71, we would do the following:
coll.find("i" => 71).to_a
and it should just print just one document: and it should just print just one document:
{"_id"=>#<BSON::ObjectID:0x117de90 ...>, "i"=>71} {"_id"=>BSON::ObjectId('4f7b20b4e4d30b35c9000049'), "i"=>71}
#### Sorting Documents in a Collection
To sort documents, simply use the `sort` method. The method can either take a key or an array of [key, direction] pairs to sort by.
Direction defaults to ascending order but can be specified as Mongo::ASCENDING, :ascending, or :asc whereas descending order can be specified with Mongo::DESCENDING, :descending, or :desc.
# Sort in ascending order by :i
coll.find.sort(:i)
# Sort in descending order by :i
coll.find.sort([:i, :desc])
#### Counting Documents in a Collection
Now that we've inserted 101 documents (the 100 we did in the loop, plus the first one), we can check to see if we have them all using the `count` method.
coll.count
and it should print `101`.
#### Getting a Set of Documents With a Query #### Getting a Set of Documents With a Query
We can use the query to get a set of documents from our collection. For example, if we wanted to get all documents where "i" > 50, we could write: We can use the query to get a set of documents from our collection. For example, if we wanted to get all documents where "i" > 50, we could write:
coll.find("i" => {"$gt" => 50}).each { |row| puts row } puts coll.find("i" => {"$gt" => 50}).to_a
which should print the documents where i > 50. We could also get a range, say 20 < i <= 30: which should print the documents where i > 50. We could also get a range, say 20 < i <= 30:
coll.find("i" => {"$gt" => 20, "$lte" => 30}).each { |row| puts row } puts coll.find("i" => {"$gt" => 20, "$lte" => 30}).to_a
#### Selecting a subset of fields for a query #### Selecting a Subset of Fields for a Query
Use the `:fields` option. If you just want fields "a" and "b": Use the `:fields` option to specify fields to return.
coll.find("i" => {"$gt" => 50}, :fields => ["a", "b"]).each { |row| puts row } puts coll.find("_id" => id, :fields => ["name", "type"]).to_a
#### Querying with Regular Expressions #### Querying with Regular Expressions
Regular expressions can be used to query MongoDB. To find all names that begin with 'a': Regular expressions can be used to query MongoDB. To find all names that begin with 'a':
coll.find({"name" => /^a/}) puts coll.find({"name" => /^M/}).to_a
You can also construct a regular expression dynamically. To match a given search string: You can also construct a regular expression dynamically. To match a given search string:
params = {'search' => 'DB'}
search_string = params['search'] search_string = params['search']
# Constructor syntax # Constructor syntax
coll.find({"name" => Regexp.new(search_string)}) puts coll.find({"name" => Regexp.new(search_string)}).to_a
# Literal syntax # Literal syntax
coll.find({"name" => /#{search_string}/}) puts coll.find({"name" => /#{search_string}/}).to_a
Although MongoDB isn't vulnerable to anything like SQL-injection, it may be worth checking the search string for anything malicious. Although MongoDB isn't vulnerable to anything like SQL-injection, it may be worth checking the search string for anything malicious.
### Updating Documents with `update`
We can update the previous document using the `update` method. There are a couple ways to update a document. We can rewrite it:
doc["name"] = "MongoDB Ruby"
coll.update({"_id" => id}, doc)
Or we can use an atomic operator to change a single value:
coll.update({"_id" => id}, {"$set" => {"name" => "MongoDB Ruby"}})
Verify the update.
puts coll.find("_id" => id).to_a
Read [more about updating documents|Updating].
### Deleting Documents with `remove`
Use the `remove` method to delete documents.
coll.count
coll.remove("i" => 71)
coll.count
puts coll.find("i" => 71).to_a
The above shows that the count has been reduced and that the document can no longer be found.
Without arguments, the `remove` method deletes all documents.
coll.remove
coll.count
Please program carefully.
## Indexing ## Indexing
#### Creating An Index ### Creating An Index
MongoDB supports indexes, and they are very easy to add on a collection. To create an index, you specify an index name and an array of field names to be indexed, or a single field name. The following creates an ascending index on the "i" field: MongoDB supports indexes, and they are very easy to add on a collection. To create an index, you specify an index name and an array of field names to be indexed, or a single field name. The following creates an ascending index on the "i" field:
@ -215,7 +274,21 @@ To specify complex indexes or a descending index you need to use a slightly more
# Explicit "ascending" # Explicit "ascending"
coll.create_index([["i", Mongo::ASCENDING]]) coll.create_index([["i", Mongo::ASCENDING]])
#### Creating and querying on a geospatial index Use the `explain` method on the cursor to show how MongoDB will run the query.
coll.find("_id" => id).explain
coll.find("i" => 71).explain
coll.find("type" => "database").explain
The above shows that the query by `_id` and `i` will use faster indexed BtreeCursor, while the query by `type` will use a slower BasicCursor.
### Getting a List of Indexes on a Collection
You can get a list of the indexes on a collection.
coll.index_information
### Creating and Querying on a Geospatial Index
First, create the index on a field containing long-lat values: First, create the index on a field containing long-lat values:
@ -227,9 +300,45 @@ Then get a list of the twenty locations nearest to the point 50, 50:
puts p.inspect puts p.inspect
end end
#### Getting a List of Indexes on a Collection ## Dropping
You can get a list of the indexes on a collection using `coll.index_information()`. ### Drop an Index
To drop a secondary index, use the `drop_index` method on the collection.
coll.drop_index("i_1")
coll.index_information
The dropped index is no longer listed.
### Drop All Indexes
To drop all secondary indexes, use the `drop_indexes` method on the collection.
coll.drop_indexes
coll.index_information
Only the primary index "_id_" is listed.
### Drop a Collection
To drop a collection, use the `drop` method on the collection.
coll.drop
db.collection_names
The dropped collection is no longer listed. The `drop_collection` method can be used on the database as an alternative.
db.drop_collection("testCollection")
### Drop a Database
To drop a database, use the `drop_database` method on the connection.
connection.drop_database("mydb")
connection.database_names
The dropped database is no longer listed.
## Database Administration ## Database Administration

View File

@ -7,9 +7,12 @@ Write concern is set using the `:safe` option. There are several possible option
@collection.save({:doc => 'foo'}, :safe => true) @collection.save({:doc => 'foo'}, :safe => true)
@collection.save({:doc => 'foo'}, :safe => {:w => 2}) @collection.save({:doc => 'foo'}, :safe => {:w => 2})
@collection.save({:doc => 'foo'}, :safe => {:w => 2, :wtimeout => 200}) @collection.save({:doc => 'foo'}, :safe => {:w => 2, :wtimeout => 200})
@collection.save({:doc => 'foo'}, :safe => {:w => 2, :wtimeout => 200, :fsync => true}) @collection.save({:doc => 'foo'}, :safe => {:w => 2, :wtimeout => 200, :j => true})
The first, `true`, simply indicates that we should request a response from the server to ensure that to errors have occurred. The second, `{:w => 2}`forces the server to wait until at least two servers have recorded the write. The third does the same but will time out if the replication can't be completed in 200 milliseconds. The fourth forces an fsync on each server being written to (note: this option is rarely necessary and will have a dramaticly negative effect on performance). The first, `true`, simply indicates that we should request a response from the server to ensure that no errors have occurred. The second, `{:w => 2}`, forces the server to wait until at least two servers have recorded the write. The third does the same but will time out if the replication can't be completed in 200 milliseconds.
Setting a value for `wtimeout` is encouraged.
Finally, the fourth example forces the journal to sync to disk if journaling is enabled.
## Write concern inheritance ## Write concern inheritance

View File

@ -19,52 +19,56 @@ coll.remove
coll.insert('a' => 1) coll.insert('a' => 1)
coll.insert('a' => 2) coll.insert('a' => 2)
coll.insert('b' => 3) coll.insert('b' => 3)
coll.insert('c' => 'foo')
coll.insert('c' => 'bar')
# Count. # Count.
puts "There are #{coll.count()} records." puts "There are #{coll.count} records."
# Find all records. find() returns a Cursor. # Find all records. find() returns a Cursor.
cursor = coll.find() puts "Find all records:"
pp cursor = coll.find.to_a
# Print them. Note that all records have an _id automatically added by the # Print them. Note that all records have an _id automatically added by the
# database. See pk.rb for an example of how to use a primary key factory to # database. See pk.rb for an example of how to use a primary key factory to
# generate your own values for _id. # generate your own values for _id.
cursor.each { |row| pp row } puts "Print each document individually:"
pp cursor.each { |row| pp row }
# Cursor has a to_a method that slurps all records into memory.
rows = coll.find().to_a
rows.each { |row| pp row }
# See Collection#find. From now on in this file, we won't be printing the # See Collection#find. From now on in this file, we won't be printing the
# records we find. # records we find.
coll.find('a' => 1) puts "Find one record:"
pp coll.find('a' => 1).to_a
# Find records sort by 'a', skip 1, limit 2 records. # Find records sort by 'a', skip 1, limit 2 records.
# Sort can be single name, array, or hash. # Sort can be single name, array, or hash.
coll.find({}, {:skip => 1, :limit => 2, :sort => 'a'}) puts "Skip 1, limit 2, sort by 'a':"
pp coll.find({}, {:skip => 1, :limit => 2, :sort => 'a'}).to_a
# Find all records with 'a' > 1. There is also $lt, $gte, and $lte. # Find all records with 'a' > 1. There is also $lt, $gte, and $lte.
coll.find({'a' => {'$gt' => 1}}) coll.find({'a' => {'$gt' => 1}})
coll.find({'a' => {'$gt' => 1, '$lte' => 3}}) coll.find({'a' => {'$gt' => 1, '$lte' => 3}})
# Find all records with 'a' in a set of values. # Find all records with 'a' in a set of values.
coll.find('a' => {'$in' => [1,2]}) puts "Find all records where a is $in [1, 2]:"
pp coll.find('a' => {'$in' => [1,2]}).to_a
# Find by regexp puts "Find by regex:"
coll.find('a' => /[1|2]/) pp coll.find({'c' => /f/}).to_a
# Print query explanation # Print query explanation
pp coll.find('a' => /[1|2]/).explain() puts "Print an explain:"
pp coll.find({'c' => /f/}).explain
# Use a hint with a query. Need an index. Hints can be stored with the # Use a hint with a query. Need an index. Hints can be stored with the
# collection, in which case they will be used with all queries, or they can be # collection, in which case they will be used with all queries, or they can be
# specified per query, in which case that hint overrides the hint associated # specified per query, in which case that hint overrides the hint associated
# with the collection if any. # with the collection if any.
coll.create_index('a') coll.create_index('c')
coll.hint = 'a' coll.hint = 'c'
# You will see a different explanation now that the hint is in place puts "Print an explain with index:"
pp coll.find('a' => /[1|2]/).explain() pp coll.find('c' => /[f|b]/).explain
# Override hint for single query puts "Print an explain with natural order hint:"
coll.find({'a' => 1}, :hint => 'b') pp coll.find({'c' => /[f|b]/}, :hint => '$natural').explain

View File

@ -4,7 +4,7 @@ require 'mongo'
cons = [] cons = []
10.times do 10.times do
cons << Mongo::Connection.multi([['localhost', 27017]], :read_secondary => true) cons << Mongo::ReplSetConnection(['localhost:27017'], :read => :secondary)
end end
ports = cons.map do |con| ports = cons.map do |con|

View File

@ -1,5 +1,6 @@
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'rubygems'
require 'mongo' require 'mongo'
include Mongo include Mongo

View File

@ -17,21 +17,23 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "buffer.h" #include "bson_buffer.h"
#define INITIAL_BUFFER_SIZE 256 #define INITIAL_BUFFER_SIZE 256
#define DEFAULT_MAX_SIZE 4 * 1024 * 1024
struct buffer { struct bson_buffer {
char* buffer; char* buffer;
int size; int size;
int position; int position;
int max_size;
}; };
/* Allocate and return a new buffer. /* Allocate and return a new buffer.
* Return NULL on allocation failure. */ * Return NULL on allocation failure. */
buffer_t buffer_new(void) { bson_buffer_t bson_buffer_new(void) {
buffer_t buffer; bson_buffer_t buffer;
buffer = (buffer_t)malloc(sizeof(struct buffer)); buffer = (bson_buffer_t)malloc(sizeof(struct bson_buffer));
if (buffer == NULL) { if (buffer == NULL) {
return NULL; return NULL;
} }
@ -43,13 +45,22 @@ buffer_t buffer_new(void) {
free(buffer); free(buffer);
return NULL; return NULL;
} }
buffer->max_size = DEFAULT_MAX_SIZE;
return buffer; return buffer;
} }
void bson_buffer_set_max_size(bson_buffer_t buffer, int max_size) {
buffer->max_size = max_size;
}
int bson_buffer_get_max_size(bson_buffer_t buffer) {
return buffer->max_size;
}
/* Free the memory allocated for `buffer`. /* Free the memory allocated for `buffer`.
* Return non-zero on failure. */ * Return non-zero on failure. */
int buffer_free(buffer_t buffer) { int bson_buffer_free(bson_buffer_t buffer) {
if (buffer == NULL) { if (buffer == NULL) {
return 1; return 1;
} }
@ -60,14 +71,19 @@ int buffer_free(buffer_t buffer) {
/* Grow `buffer` to at least `min_length`. /* Grow `buffer` to at least `min_length`.
* Return non-zero on allocation failure. */ * Return non-zero on allocation failure. */
static int buffer_grow(buffer_t buffer, int min_length) { static int buffer_grow(bson_buffer_t buffer, int min_length) {
int size = buffer->size; int size = buffer->size;
int old_size;
char* old_buffer = buffer->buffer; char* old_buffer = buffer->buffer;
if (size >= min_length) { if (size >= min_length) {
return 0; return 0;
} }
while (size < min_length) { while (size < min_length) {
old_size = size;
size *= 2; size *= 2;
/* Prevent potential overflow. */
if( size < old_size )
size = min_length;
} }
buffer->buffer = (char*)realloc(buffer->buffer, sizeof(char) * size); buffer->buffer = (char*)realloc(buffer->buffer, sizeof(char) * size);
if (buffer->buffer == NULL) { if (buffer->buffer == NULL) {
@ -81,7 +97,7 @@ static int buffer_grow(buffer_t buffer, int min_length) {
/* Assure that `buffer` has at least `size` free bytes (and grow if needed). /* Assure that `buffer` has at least `size` free bytes (and grow if needed).
* Return non-zero on allocation failure. */ * Return non-zero on allocation failure. */
static int buffer_assure_space(buffer_t buffer, int size) { static int buffer_assure_space(bson_buffer_t buffer, int size) {
if (buffer->position + size <= buffer->size) { if (buffer->position + size <= buffer->size) {
return 0; return 0;
} }
@ -90,7 +106,7 @@ static int buffer_assure_space(buffer_t buffer, int size) {
/* Save `size` bytes from the current position in `buffer` (and grow if needed). /* Save `size` bytes from the current position in `buffer` (and grow if needed).
* Return offset for writing, or -1 on allocation failure. */ * Return offset for writing, or -1 on allocation failure. */
buffer_position buffer_save_space(buffer_t buffer, int size) { bson_buffer_position bson_buffer_save_space(bson_buffer_t buffer, int size) {
int position = buffer->position; int position = buffer->position;
if (buffer_assure_space(buffer, size) != 0) { if (buffer_assure_space(buffer, size) != 0) {
return -1; return -1;
@ -101,7 +117,7 @@ buffer_position buffer_save_space(buffer_t buffer, int size) {
/* Write `size` bytes from `data` to `buffer` (and grow if needed). /* Write `size` bytes from `data` to `buffer` (and grow if needed).
* Return non-zero on allocation failure. */ * Return non-zero on allocation failure. */
int buffer_write(buffer_t buffer, const char* data, int size) { int bson_buffer_write(bson_buffer_t buffer, const char* data, int size) {
if (buffer_assure_space(buffer, size) != 0) { if (buffer_assure_space(buffer, size) != 0) {
return 1; return 1;
} }
@ -114,10 +130,10 @@ int buffer_write(buffer_t buffer, const char* data, int size) {
/* Write `size` bytes from `data` to `buffer` at position `position`. /* Write `size` bytes from `data` to `buffer` at position `position`.
* Does not change the internal position of `buffer`. * Does not change the internal position of `buffer`.
* Return non-zero if buffer isn't large enough for write. */ * Return non-zero if buffer isn't large enough for write. */
int buffer_write_at_position(buffer_t buffer, buffer_position position, int bson_buffer_write_at_position(bson_buffer_t buffer, bson_buffer_position position,
const char* data, int size) { const char* data, int size) {
if (position + size > buffer->size) { if (position + size > buffer->size) {
buffer_free(buffer); bson_buffer_free(buffer);
return 1; return 1;
} }
@ -126,10 +142,10 @@ int buffer_write_at_position(buffer_t buffer, buffer_position position,
} }
int buffer_get_position(buffer_t buffer) { int bson_buffer_get_position(bson_buffer_t buffer) {
return buffer->position; return buffer->position;
} }
char* buffer_get_buffer(buffer_t buffer) { char* bson_buffer_get_buffer(bson_buffer_t buffer) {
return buffer->buffer; return buffer->buffer;
} }

View File

@ -14,42 +14,47 @@
* limitations under the License. * limitations under the License.
*/ */
#ifndef BUFFER_H #ifndef _BSON_BUFFER_H
#define BUFFER_H #define _BSON_BUFFER_H
/* Note: if any of these functions return a failure condition then the buffer /* Note: if any of these functions return a failure condition then the buffer
* has already been freed. */ * has already been freed. */
/* A buffer */ /* A buffer */
typedef struct buffer* buffer_t; typedef struct bson_buffer* bson_buffer_t;
/* A position in the buffer */ /* A position in the buffer */
typedef int buffer_position; typedef int bson_buffer_position;
/* Allocate and return a new buffer. /* Allocate and return a new buffer.
* Return NULL on allocation failure. */ * Return NULL on allocation failure. */
buffer_t buffer_new(void); bson_buffer_t bson_buffer_new(void);
/* Set the max size for this buffer.
* Note: this is not a hard limit. */
void bson_buffer_set_max_size(bson_buffer_t buffer, int max_size);
int bson_buffer_get_max_size(bson_buffer_t buffer);
/* Free the memory allocated for `buffer`. /* Free the memory allocated for `buffer`.
* Return non-zero on failure. */ * Return non-zero on failure. */
int buffer_free(buffer_t buffer); int bson_buffer_free(bson_buffer_t buffer);
/* Save `size` bytes from the current position in `buffer` (and grow if needed). /* Save `size` bytes from the current position in `buffer` (and grow if needed).
* Return offset for writing, or -1 on allocation failure. */ * Return offset for writing, or -1 on allocation failure. */
buffer_position buffer_save_space(buffer_t buffer, int size); bson_buffer_position bson_buffer_save_space(bson_buffer_t buffer, int size);
/* Write `size` bytes from `data` to `buffer` (and grow if needed). /* Write `size` bytes from `data` to `buffer` (and grow if needed).
* Return non-zero on allocation failure. */ * Return non-zero on allocation failure. */
int buffer_write(buffer_t buffer, const char* data, int size); int bson_buffer_write(bson_buffer_t buffer, const char* data, int size);
/* Write `size` bytes from `data` to `buffer` at position `position`. /* Write `size` bytes from `data` to `buffer` at position `position`.
* Does not change the internal position of `buffer`. * Does not change the internal position of `buffer`.
* Return non-zero if buffer isn't large enough for write. */ * Return non-zero if buffer isn't large enough for write. */
int buffer_write_at_position(buffer_t buffer, buffer_position position, const char* data, int size); int bson_buffer_write_at_position(bson_buffer_t buffer, bson_buffer_position position, const char* data, int size);
/* Getters for the internals of a buffer_t. /* Getters for the internals of a bson_buffer_t.
* Should try to avoid using these as much as possible * Should try to avoid using these as much as possible
* since they break the abstraction. */ * since they break the abstraction. */
buffer_position buffer_get_position(buffer_t buffer); bson_buffer_position bson_buffer_get_position(bson_buffer_t buffer);
char* buffer_get_buffer(buffer_t buffer); char* bson_buffer_get_buffer(bson_buffer_t buffer);
#endif #endif

View File

@ -21,6 +21,7 @@
*/ */
#include "ruby.h" #include "ruby.h"
#include "version.h"
/* Ensure compatibility with early releases of Ruby 1.8.5 */ /* Ensure compatibility with early releases of Ruby 1.8.5 */
#ifndef RSTRING_PTR #ifndef RSTRING_PTR
@ -61,16 +62,16 @@
#include <time.h> #include <time.h>
#include "version.h" #include "version.h"
#include "buffer.h" #include "bson_buffer.h"
#include "encoding_helpers.h" #include "encoding_helpers.h"
#define SAFE_WRITE(buffer, data, size) \ #define SAFE_WRITE(buffer, data, size) \
if (buffer_write((buffer), (data), (size)) != 0) \ if (bson_buffer_write((buffer), (data), (size)) != 0) \
rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c") rb_raise(rb_eNoMemError, "failed to allocate memory in bson_buffer.c")
#define SAFE_WRITE_AT_POS(buffer, position, data, size) \ #define SAFE_WRITE_AT_POS(buffer, position, data, size) \
if (buffer_write_at_position((buffer), (position), (data), (size)) != 0) \ if (bson_buffer_write_at_position((buffer), (position), (data), (size)) != 0) \
rb_raise(rb_eRuntimeError, "invalid write at position in buffer.c") rb_raise(rb_eRuntimeError, "invalid write at position in bson_buffer.c")
#define MAX_HOSTNAME_LENGTH 256 #define MAX_HOSTNAME_LENGTH 256
@ -86,6 +87,7 @@ static VALUE DBRef;
static VALUE Code; static VALUE Code;
static VALUE MinKey; static VALUE MinKey;
static VALUE MaxKey; static VALUE MaxKey;
static VALUE Timestamp;
static VALUE Regexp; static VALUE Regexp;
static VALUE OrderedHash; static VALUE OrderedHash;
static VALUE InvalidKeyName; static VALUE InvalidKeyName;
@ -107,34 +109,22 @@ static int max_bson_size;
} \ } \
_str; \ _str; \
}) })
/* MUST call TO_UTF8 before calling write_utf8. */
#define TO_UTF8(string) rb_str_export_to_enc((string), rb_utf8_encoding())
static void write_utf8(buffer_t buffer, VALUE string, char check_null) {
result_t status = check_string(RSTRING_PTR(string), RSTRING_LENINT(string),
0, check_null);
if (status == HAS_NULL) {
buffer_free(buffer);
rb_raise(InvalidDocument, "Key names / regex patterns must not contain the NULL byte");
}
SAFE_WRITE(buffer, RSTRING_PTR(string), RSTRING_LENINT(string));
}
#else #else
#define STR_NEW(p,n) rb_str_new((p), (n)) #define STR_NEW(p,n) rb_str_new((p), (n))
/* MUST call TO_UTF8 before calling write_utf8. */ #endif
#define TO_UTF8(string) (string)
static void write_utf8(buffer_t buffer, VALUE string, char check_null) { static void write_utf8(bson_buffer_t buffer, VALUE string, char check_null) {
result_t status = check_string(RSTRING_PTR(string), RSTRING_LEN(string), result_t status = check_string(RSTRING_PTR(string), RSTRING_LEN(string),
1, check_null); 1, check_null);
if (status == HAS_NULL) { if (status == HAS_NULL) {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidDocument, "Key names / regex patterns must not contain the NULL byte"); rb_raise(InvalidDocument, "Key names / regex patterns must not contain the NULL byte");
} else if (status == NOT_UTF_8) { } else if (status == NOT_UTF_8) {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidStringEncoding, "String not valid UTF-8"); rb_raise(InvalidStringEncoding, "String not valid UTF-8");
} }
SAFE_WRITE(buffer, RSTRING_PTR(string), RSTRING_LEN(string)); SAFE_WRITE(buffer, RSTRING_PTR(string), (int)RSTRING_LEN(string));
} }
#endif
// this sucks. but for some reason these moved around between 1.8 and 1.9 // this sucks. but for some reason these moved around between 1.8 and 1.9
#ifdef ONIGURUMA_H #ifdef ONIGURUMA_H
@ -162,6 +152,7 @@ static void write_utf8(buffer_t buffer, VALUE string, char check_null) {
*buffer = malloc(vslength); \ *buffer = malloc(vslength); \
_snprintf(*buffer, vslength, "%d", i); \ _snprintf(*buffer, vslength, "%d", i); \
} }
#define FREE_INTSTRING(buffer) free(buffer)
#else #else
#define INT2STRING(buffer, i) \ #define INT2STRING(buffer, i) \
{ \ { \
@ -169,9 +160,15 @@ static void write_utf8(buffer_t buffer, VALUE string, char check_null) {
*buffer = malloc(vslength); \ *buffer = malloc(vslength); \
snprintf(*buffer, vslength, "%d", i); \ snprintf(*buffer, vslength, "%d", i); \
} }
#define FREE_INTSTRING(buffer) free(buffer)
#endif #endif
#else #else
#define INT2STRING(buffer, i) asprintf(buffer, "%d", i); #define INT2STRING(buffer, i) asprintf(buffer, "%d", i);
#ifdef USING_SYSTEM_ALLOCATOR_LIBRARY /* Ruby Enterprise Edition with tcmalloc */
#define FREE_INTSTRING(buffer) system_free(buffer)
#else
#define FREE_INTSTRING(buffer) free(buffer)
#endif
#endif #endif
#ifndef RREGEXP_SRC #ifndef RREGEXP_SRC
@ -193,24 +190,23 @@ static int cmp_char(const void* a, const void* b) {
return *(char*)a - *(char*)b; return *(char*)a - *(char*)b;
} }
static void write_doc(buffer_t buffer, VALUE hash, VALUE check_keys, VALUE move_id); static void write_doc(bson_buffer_t buffer, VALUE hash, VALUE check_keys, VALUE move_id);
static int write_element_with_id(VALUE key, VALUE value, VALUE extra); static int write_element_with_id(VALUE key, VALUE value, VALUE extra);
static int write_element_without_id(VALUE key, VALUE value, VALUE extra); static int write_element_without_id(VALUE key, VALUE value, VALUE extra);
static VALUE elements_to_hash(const char* buffer, int max); static VALUE elements_to_hash(const char* buffer, int max);
static VALUE pack_extra(buffer_t buffer, VALUE check_keys) { static VALUE pack_extra(bson_buffer_t buffer, VALUE check_keys) {
return rb_ary_new3(2, LL2NUM((long long)buffer), check_keys); return rb_ary_new3(2, LL2NUM((long long)buffer), check_keys);
} }
static void write_name_and_type(buffer_t buffer, VALUE name, char type) { static void write_name_and_type(bson_buffer_t buffer, VALUE name, char type) {
SAFE_WRITE(buffer, &type, 1); SAFE_WRITE(buffer, &type, 1);
name = TO_UTF8(name);
write_utf8(buffer, name, 1); write_utf8(buffer, name, 1);
SAFE_WRITE(buffer, &zero, 1); SAFE_WRITE(buffer, &zero, 1);
} }
static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) { static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
buffer_t buffer = (buffer_t)NUM2LL(rb_ary_entry(extra, 0)); bson_buffer_t buffer = (bson_buffer_t)NUM2LL(rb_ary_entry(extra, 0));
VALUE check_keys = rb_ary_entry(extra, 1); VALUE check_keys = rb_ary_entry(extra, 1);
if (TYPE(key) == T_SYMBOL) { if (TYPE(key) == T_SYMBOL) {
@ -219,7 +215,7 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
} }
if (TYPE(key) != T_STRING) { if (TYPE(key) != T_STRING) {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(rb_eTypeError, "keys must be strings or symbols"); rb_raise(rb_eTypeError, "keys must be strings or symbols");
} }
@ -230,13 +226,13 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
if (check_keys == Qtrue) { if (check_keys == Qtrue) {
int i; int i;
if (RSTRING_LEN(key) > 0 && RSTRING_PTR(key)[0] == '$') { if (RSTRING_LEN(key) > 0 && RSTRING_PTR(key)[0] == '$') {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidKeyName, "key must not start with '$'"); rb_raise(InvalidKeyName, "%s - key must not start with '$'", RSTRING_PTR(key));
} }
for (i = 0; i < RSTRING_LEN(key); i++) { for (i = 0; i < RSTRING_LEN(key); i++) {
if (RSTRING_PTR(key)[i] == '.') { if (RSTRING_PTR(key)[i] == '.') {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidKeyName, "key must not contain '.'"); rb_raise(InvalidKeyName, "%s - key must not contain '.'", RSTRING_PTR(key));
} }
} }
} }
@ -246,7 +242,7 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
{ {
if (rb_funcall(value, gt_operator, 1, LL2NUM(9223372036854775807LL)) == Qtrue || if (rb_funcall(value, gt_operator, 1, LL2NUM(9223372036854775807LL)) == Qtrue ||
rb_funcall(value, lt_operator, 1, LL2NUM(-9223372036854775808ULL)) == Qtrue) { rb_funcall(value, lt_operator, 1, LL2NUM(-9223372036854775808ULL)) == Qtrue) {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(rb_eRangeError, "MongoDB can only handle 8-byte ints"); rb_raise(rb_eRangeError, "MongoDB can only handle 8-byte ints");
} }
} }
@ -300,15 +296,15 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
} }
case T_ARRAY: case T_ARRAY:
{ {
buffer_position length_location, start_position, obj_length; bson_buffer_position length_location, start_position, obj_length;
int items, i; int items, i;
VALUE* values; VALUE* values;
write_name_and_type(buffer, key, 0x04); write_name_and_type(buffer, key, 0x04);
start_position = buffer_get_position(buffer); start_position = bson_buffer_get_position(buffer);
// save space for length // save space for length
length_location = buffer_save_space(buffer, 4); length_location = bson_buffer_save_space(buffer, 4);
if (length_location == -1) { if (length_location == -1) {
rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c"); rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c");
} }
@ -320,12 +316,12 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
INT2STRING(&name, i); INT2STRING(&name, i);
key = rb_str_new2(name); key = rb_str_new2(name);
write_element_with_id(key, rb_ary_entry(value, i), pack_extra(buffer, check_keys)); write_element_with_id(key, rb_ary_entry(value, i), pack_extra(buffer, check_keys));
free(name); FREE_INTSTRING(name);
} }
// write null byte and fill in length // write null byte and fill in length
SAFE_WRITE(buffer, &zero, 1); SAFE_WRITE(buffer, &zero, 1);
obj_length = buffer_get_position(buffer) - start_position; obj_length = bson_buffer_get_position(buffer) - start_position;
SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&obj_length, 4); SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&obj_length, 4);
break; break;
} }
@ -333,7 +329,6 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
{ {
int length; int length;
write_name_and_type(buffer, key, 0x02); write_name_and_type(buffer, key, 0x02);
value = TO_UTF8(value);
length = RSTRING_LENINT(value) + 1; length = RSTRING_LENINT(value) + 1;
SAFE_WRITE(buffer, (char*)&length, 4); SAFE_WRITE(buffer, (char*)&length, 4);
write_utf8(buffer, value, 0); write_utf8(buffer, value, 0);
@ -383,14 +378,14 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
break; break;
} }
if (strcmp(cls, "BSON::DBRef") == 0) { if (strcmp(cls, "BSON::DBRef") == 0) {
buffer_position length_location, start_position, obj_length; bson_buffer_position length_location, start_position, obj_length;
VALUE ns, oid; VALUE ns, oid;
write_name_and_type(buffer, key, 0x03); write_name_and_type(buffer, key, 0x03);
start_position = buffer_get_position(buffer); start_position = bson_buffer_get_position(buffer);
// save space for length // save space for length
length_location = buffer_save_space(buffer, 4); length_location = bson_buffer_save_space(buffer, 4);
if (length_location == -1) { if (length_location == -1) {
rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c"); rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c");
} }
@ -402,18 +397,18 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
// write null byte and fill in length // write null byte and fill in length
SAFE_WRITE(buffer, &zero, 1); SAFE_WRITE(buffer, &zero, 1);
obj_length = buffer_get_position(buffer) - start_position; obj_length = bson_buffer_get_position(buffer) - start_position;
SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&obj_length, 4); SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&obj_length, 4);
break; break;
} }
if (strcmp(cls, "BSON::Code") == 0) { if (strcmp(cls, "BSON::Code") == 0) {
buffer_position length_location, start_position, total_length; bson_buffer_position length_location, start_position, total_length;
int length; int length;
VALUE code_str; VALUE code_str;
write_name_and_type(buffer, key, 0x0F); write_name_and_type(buffer, key, 0x0F);
start_position = buffer_get_position(buffer); start_position = bson_buffer_get_position(buffer);
length_location = buffer_save_space(buffer, 4); length_location = bson_buffer_save_space(buffer, 4);
if (length_location == -1) { if (length_location == -1) {
rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c"); rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c");
} }
@ -425,7 +420,7 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
SAFE_WRITE(buffer, &zero, 1); SAFE_WRITE(buffer, &zero, 1);
write_doc(buffer, rb_funcall(value, rb_intern("scope"), 0), Qfalse, Qfalse); write_doc(buffer, rb_funcall(value, rb_intern("scope"), 0), Qfalse, Qfalse);
total_length = buffer_get_position(buffer) - start_position; total_length = bson_buffer_get_position(buffer) - start_position;
SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&total_length, 4); SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&total_length, 4);
break; break;
} }
@ -437,17 +432,32 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
write_name_and_type(buffer, key, 0xff); write_name_and_type(buffer, key, 0xff);
break; break;
} }
if (strcmp(cls, "BSON::Timestamp") == 0) {
unsigned int seconds;
unsigned int increment;
write_name_and_type(buffer, key, 0x11);
seconds = NUM2UINT(
rb_funcall(value, rb_intern("seconds"), 0));
increment = NUM2UINT(
rb_funcall(value, rb_intern("increment"), 0));
SAFE_WRITE(buffer, (const char*)&increment, 4);
SAFE_WRITE(buffer, (const char*)&seconds, 4);
break;
}
if (strcmp(cls, "DateTime") == 0 || strcmp(cls, "Date") == 0 || strcmp(cls, "ActiveSupport::TimeWithZone") == 0) { if (strcmp(cls, "DateTime") == 0 || strcmp(cls, "Date") == 0 || strcmp(cls, "ActiveSupport::TimeWithZone") == 0) {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidDocument, "%s is not currently supported; use a UTC Time instance instead.", cls); rb_raise(InvalidDocument, "%s is not currently supported; use a UTC Time instance instead.", cls);
break; break;
} }
if(strcmp(cls, "Complex") == 0 || strcmp(cls, "Rational") == 0 || strcmp(cls, "BigDecimal") == 0) { if(strcmp(cls, "Complex") == 0 || strcmp(cls, "Rational") == 0 || strcmp(cls, "BigDecimal") == 0) {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidDocument, "Cannot serialize the Numeric type %s as BSON; only Bignum, Fixnum, and Float are supported.", cls); rb_raise(InvalidDocument, "Cannot serialize the Numeric type %s as BSON; only Bignum, Fixnum, and Float are supported.", cls);
break; break;
} }
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidDocument, "Cannot serialize an object of class %s into BSON.", cls); rb_raise(InvalidDocument, "Cannot serialize an object of class %s into BSON.", cls);
break; break;
} }
@ -461,12 +471,18 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
SAFE_WRITE(buffer, (const char*)&time_since_epoch, 8); SAFE_WRITE(buffer, (const char*)&time_since_epoch, 8);
break; break;
} }
// Date classes are TYPE T_DATA in Ruby >= 1.9.3
if (strcmp(cls, "DateTime") == 0 || strcmp(cls, "Date") == 0 || strcmp(cls, "ActiveSupport::TimeWithZone") == 0) {
bson_buffer_free(buffer);
rb_raise(InvalidDocument, "%s is not currently supported; use a UTC Time instance instead.", cls);
break;
}
if(strcmp(cls, "BigDecimal") == 0) { if(strcmp(cls, "BigDecimal") == 0) {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidDocument, "Cannot serialize the Numeric type %s as BSON; only Bignum, Fixnum, and Float are supported.", cls); rb_raise(InvalidDocument, "Cannot serialize the Numeric type %s as BSON; only Bignum, Fixnum, and Float are supported.", cls);
break; break;
} }
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidDocument, "Cannot serialize an object of class %s into BSON.", cls); rb_raise(InvalidDocument, "Cannot serialize an object of class %s into BSON.", cls);
break; break;
} }
@ -478,7 +494,6 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
write_name_and_type(buffer, key, 0x0B); write_name_and_type(buffer, key, 0x0B);
pattern = TO_UTF8(pattern);
write_utf8(buffer, pattern, 1); write_utf8(buffer, pattern, 1);
SAFE_WRITE(buffer, &zero, 1); SAFE_WRITE(buffer, &zero, 1);
@ -488,7 +503,9 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
} }
if (flags & MULTILINE) { if (flags & MULTILINE) {
char multiline = 'm'; char multiline = 'm';
char dotall = 's';
SAFE_WRITE(buffer, &multiline, 1); SAFE_WRITE(buffer, &multiline, 1);
SAFE_WRITE(buffer, &dotall, 1);
} }
if (flags & EXTENDED) { if (flags & EXTENDED) {
char extended = 'x'; char extended = 'x';
@ -498,9 +515,9 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
has_extra = rb_funcall(value, rb_intern("respond_to?"), 1, rb_str_new2("extra_options_str")); has_extra = rb_funcall(value, rb_intern("respond_to?"), 1, rb_str_new2("extra_options_str"));
if (TYPE(has_extra) == T_TRUE) { if (TYPE(has_extra) == T_TRUE) {
VALUE extra = rb_funcall(value, rb_intern("extra_options_str"), 0); VALUE extra = rb_funcall(value, rb_intern("extra_options_str"), 0);
buffer_position old_position = buffer_get_position(buffer); bson_buffer_position old_position = bson_buffer_get_position(buffer);
SAFE_WRITE(buffer, RSTRING_PTR(extra), RSTRING_LENINT(extra)); SAFE_WRITE(buffer, RSTRING_PTR(extra), RSTRING_LENINT(extra));
qsort(buffer_get_buffer(buffer) + old_position, RSTRING_LEN(extra), sizeof(char), cmp_char); qsort(bson_buffer_get_buffer(buffer) + old_position, RSTRING_LEN(extra), sizeof(char), cmp_char);
} }
SAFE_WRITE(buffer, &zero, 1); SAFE_WRITE(buffer, &zero, 1);
@ -509,7 +526,7 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
default: default:
{ {
const char* cls = rb_obj_classname(value); const char* cls = rb_obj_classname(value);
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidDocument, "Cannot serialize an object of class %s (type %d) into BSON.", cls, TYPE(value)); rb_raise(InvalidDocument, "Cannot serialize an object of class %s (type %d) into BSON.", cls, TYPE(value));
break; break;
} }
@ -525,10 +542,10 @@ static int write_element_with_id(VALUE key, VALUE value, VALUE extra) {
return write_element(key, value, extra, 1); return write_element(key, value, extra, 1);
} }
static void write_doc(buffer_t buffer, VALUE hash, VALUE check_keys, VALUE move_id) { static void write_doc(bson_buffer_t buffer, VALUE hash, VALUE check_keys, VALUE move_id) {
buffer_position start_position = buffer_get_position(buffer); bson_buffer_position start_position = bson_buffer_get_position(buffer);
buffer_position length_location = buffer_save_space(buffer, 4); bson_buffer_position length_location = bson_buffer_save_space(buffer, 4);
buffer_position length; bson_buffer_position length;
int allow_id; int allow_id;
int (*write_function)(VALUE, VALUE, VALUE) = NULL; int (*write_function)(VALUE, VALUE, VALUE) = NULL;
VALUE id_str = rb_str_new2("_id"); VALUE id_str = rb_str_new2("_id");
@ -581,34 +598,39 @@ static void write_doc(buffer_t buffer, VALUE hash, VALUE check_keys, VALUE move_
} else if (rb_obj_is_kind_of(hash, RB_HASH) == Qtrue) { } else if (rb_obj_is_kind_of(hash, RB_HASH) == Qtrue) {
rb_hash_foreach(hash, write_function, pack_extra(buffer, check_keys)); rb_hash_foreach(hash, write_function, pack_extra(buffer, check_keys));
} else { } else {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidDocument, "BSON.serialize takes a Hash but got a %s", rb_obj_classname(hash)); rb_raise(InvalidDocument, "BSON.serialize takes a Hash but got a %s", rb_obj_classname(hash));
} }
// write null byte and fill in length // write null byte and fill in length
SAFE_WRITE(buffer, &zero, 1); SAFE_WRITE(buffer, &zero, 1);
length = buffer_get_position(buffer) - start_position; length = bson_buffer_get_position(buffer) - start_position;
// make sure that length doesn't exceed 4MB // make sure that length doesn't exceed 4MB
if (length > max_bson_size) { if (length > bson_buffer_get_max_size(buffer)) {
buffer_free(buffer); bson_buffer_free(buffer);
rb_raise(InvalidDocument, "Document too large: BSON documents are limited to %d bytes.", max_bson_size); rb_raise(InvalidDocument,
"Document too large: This BSON documents is limited to %d bytes.",
bson_buffer_get_max_size(buffer));
return; return;
} }
SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&length, 4); SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&length, 4);
} }
static VALUE method_serialize(VALUE self, VALUE doc, VALUE check_keys, VALUE move_id) { static VALUE method_serialize(VALUE self, VALUE doc, VALUE check_keys,
VALUE move_id, VALUE max_size) {
VALUE result; VALUE result;
buffer_t buffer = buffer_new(); bson_buffer_t buffer = bson_buffer_new();
bson_buffer_set_max_size(buffer, FIX2INT(max_size));
if (buffer == NULL) { if (buffer == NULL) {
rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c"); rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c");
} }
write_doc(buffer, doc, check_keys, move_id); write_doc(buffer, doc, check_keys, move_id);
result = rb_str_new(buffer_get_buffer(buffer), buffer_get_position(buffer)); result = rb_str_new(bson_buffer_get_buffer(buffer), bson_buffer_get_position(buffer));
if (buffer_free(buffer) != 0) { if (bson_buffer_free(buffer) != 0) {
rb_raise(rb_eRuntimeError, "failed to free buffer"); rb_raise(rb_eRuntimeError, "failed to free buffer");
} }
return result; return result;
@ -722,10 +744,23 @@ static VALUE get_value(const char* buffer, int* position, int type) {
} }
case 9: case 9:
{ {
long long millis; int64_t millis;
memcpy(&millis, buffer + *position, 8); memcpy(&millis, buffer + *position, 8);
value = rb_time_new(millis / 1000, (millis % 1000) * 1000); // Support 64-bit time values in 32 bit environments in Ruby > 1.9
// Note: rb_time_num_new is not available pre Ruby 1.9
#if RUBY_API_VERSION_CODE >= 10900
#define add(x,y) (rb_funcall((x), '+', 1, (y)))
#define mul(x,y) (rb_funcall((x), '*', 1, (y)))
#define quo(x,y) (rb_funcall((x), rb_intern("quo"), 1, (y)))
VALUE d, timev;
d = LL2NUM(1000LL);
timev = add(LL2NUM(millis / 1000), quo(LL2NUM(millis % 1000), d));
value = rb_time_num_new(timev, Qnil);
#else
value = rb_time_new(millis / 1000, (millis % 1000) * 1000);
#endif
value = rb_funcall(value, utc_method, 0); value = rb_funcall(value, utc_method, 0);
*position += 8; *position += 8;
break; break;
@ -752,6 +787,9 @@ static VALUE get_value(const char* buffer, int* position, int type) {
else if (flag == 'm') { else if (flag == 'm') {
flags |= MULTILINE; flags |= MULTILINE;
} }
else if (flag == 's') {
flags |= MULTILINE;
}
else if (flag == 'x') { else if (flag == 'x') {
flags |= EXTENDED; flags |= EXTENDED;
} }
@ -818,11 +856,13 @@ static VALUE get_value(const char* buffer, int* position, int type) {
} }
case 17: case 17:
{ {
int i; unsigned int sec, inc;
int j; VALUE argv[2];
memcpy(&i, buffer + *position, 4); memcpy(&inc, buffer + *position, 4);
memcpy(&j, buffer + *position + 4, 4); memcpy(&sec, buffer + *position + 4, 4);
value = rb_ary_new3(2, LL2NUM(i), LL2NUM(j)); argv[0] = UINT2NUM(sec);
argv[1] = UINT2NUM(inc);
value = rb_class_new_instance(2, argv, Timestamp);
*position += 8; *position += 8;
break; break;
} }
@ -874,7 +914,7 @@ static VALUE method_deserialize(VALUE self, VALUE bson) {
return elements_to_hash(buffer, remaining); return elements_to_hash(buffer, remaining);
} }
static VALUE objectid_generate(VALUE self) static VALUE objectid_generate(int argc, VALUE* args, VALUE self)
{ {
VALUE oid; VALUE oid;
unsigned char oid_bytes[12]; unsigned char oid_bytes[12];
@ -882,7 +922,11 @@ static VALUE objectid_generate(VALUE self)
unsigned short pid; unsigned short pid;
int i; int i;
t = htonl((int)time(NULL)); if(argc == 0 || (argc == 1 && *args == Qnil)) {
t = htonl((int)time(NULL));
} else {
t = htonl(NUM2UINT(rb_funcall(*args, rb_intern("to_i"), 0)));
}
MEMCPY(&oid_bytes, &t, unsigned char, 4); MEMCPY(&oid_bytes, &t, unsigned char, 4);
MEMCPY(&oid_bytes[4], hostname_digest, unsigned char, 3); MEMCPY(&oid_bytes[4], hostname_digest, unsigned char, 3);
@ -941,6 +985,8 @@ void Init_cbson() {
rb_require("bson/types/min_max_keys"); rb_require("bson/types/min_max_keys");
MinKey = rb_const_get(bson, rb_intern("MinKey")); MinKey = rb_const_get(bson, rb_intern("MinKey"));
MaxKey = rb_const_get(bson, rb_intern("MaxKey")); MaxKey = rb_const_get(bson, rb_intern("MaxKey"));
rb_require("bson/types/timestamp");
Timestamp = rb_const_get(bson, rb_intern("Timestamp"));
Regexp = rb_const_get(rb_cObject, rb_intern("Regexp")); Regexp = rb_const_get(rb_cObject, rb_intern("Regexp"));
rb_require("bson/exceptions"); rb_require("bson/exceptions");
InvalidKeyName = rb_const_get(bson, rb_intern("InvalidKeyName")); InvalidKeyName = rb_const_get(bson, rb_intern("InvalidKeyName"));
@ -953,7 +999,7 @@ void Init_cbson() {
CBson = rb_define_module("CBson"); CBson = rb_define_module("CBson");
ext_version = rb_str_new2(VERSION); ext_version = rb_str_new2(VERSION);
rb_define_const(CBson, "VERSION", ext_version); rb_define_const(CBson, "VERSION", ext_version);
rb_define_module_function(CBson, "serialize", method_serialize, 3); rb_define_module_function(CBson, "serialize", method_serialize, 4);
rb_define_module_function(CBson, "deserialize", method_deserialize, 1); rb_define_module_function(CBson, "deserialize", method_deserialize, 1);
rb_define_module_function(CBson, "max_bson_size", method_max_bson_size, 0); rb_define_module_function(CBson, "max_bson_size", method_max_bson_size, 0);
rb_define_module_function(CBson, "update_max_bson_size", method_update_max_bson_size, 1); rb_define_module_function(CBson, "update_max_bson_size", method_update_max_bson_size, 1);
@ -962,7 +1008,7 @@ void Init_cbson() {
Digest = rb_const_get(rb_cObject, rb_intern("Digest")); Digest = rb_const_get(rb_cObject, rb_intern("Digest"));
DigestMD5 = rb_const_get(Digest, rb_intern("MD5")); DigestMD5 = rb_const_get(Digest, rb_intern("MD5"));
rb_define_method(ObjectId, "generate", objectid_generate, 0); rb_define_method(ObjectId, "generate", objectid_generate, -1);
if (gethostname(hostname, MAX_HOSTNAME_LENGTH) != 0) { if (gethostname(hostname, MAX_HOSTNAME_LENGTH) != 0) {
rb_raise(rb_eRuntimeError, "failed to get hostname"); rb_raise(rb_eRuntimeError, "failed to get hostname");

View File

@ -87,7 +87,7 @@ static unsigned char isLegalUTF8(const unsigned char* source, int length) {
return 1; return 1;
} }
result_t check_string(const unsigned char* string, const int length, result_t check_string(const unsigned char* string, const long length,
const char check_utf8, const char check_null) { const char check_utf8, const char check_null) {
int position = 0; int position = 0;
/* By default we go character by character. Will be different for checking /* By default we go character by character. Will be different for checking

View File

@ -23,7 +23,7 @@ typedef enum {
HAS_NULL HAS_NULL
} result_t; } result_t;
result_t check_string(const unsigned char* string, const int length, result_t check_string(const unsigned char* string, const long length,
const char check_utf8, const char check_null); const char check_utf8, const char check_null);
#endif #endif

View File

@ -14,4 +14,4 @@
* limitations under the License. * limitations under the License.
*/ */
#define VERSION "1.2.rc2" #define VERSION "1.6.2"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -9,6 +9,7 @@ import org.jruby.runtime.builtin.IRubyObject;
import org.jruby.runtime.Block; import org.jruby.runtime.Block;
import org.jruby.runtime.CallType; import org.jruby.runtime.CallType;
import org.jruby.runtime.callsite.CacheEntry; import org.jruby.runtime.callsite.CacheEntry;
import org.jruby.util.RegexpOptions;
import org.jruby.javasupport.JavaEmbedUtils; import org.jruby.javasupport.JavaEmbedUtils;
import org.jruby.javasupport.JavaUtil; import org.jruby.javasupport.JavaUtil;
@ -32,6 +33,7 @@ public class RubyBSONCallback implements BSONCallback {
private RubyModule _rbclsBinary; private RubyModule _rbclsBinary;
private RubyModule _rbclsMinKey; private RubyModule _rbclsMinKey;
private RubyModule _rbclsMaxKey; private RubyModule _rbclsMaxKey;
private RubyModule _rbclsTimestamp;
private RubyModule _rbclsDBRef; private RubyModule _rbclsDBRef;
private RubyModule _rbclsCode; private RubyModule _rbclsCode;
private final LinkedList<RubyObject> _stack = new LinkedList<RubyObject>(); private final LinkedList<RubyObject> _stack = new LinkedList<RubyObject>();
@ -47,6 +49,7 @@ public class RubyBSONCallback implements BSONCallback {
_rbclsCode = _lookupConstant( _runtime, "BSON::Code" ); _rbclsCode = _lookupConstant( _runtime, "BSON::Code" );
_rbclsMinKey = _lookupConstant( _runtime, "BSON::MinKey" ); _rbclsMinKey = _lookupConstant( _runtime, "BSON::MinKey" );
_rbclsMaxKey = _lookupConstant( _runtime, "BSON::MaxKey" ); _rbclsMaxKey = _lookupConstant( _runtime, "BSON::MaxKey" );
_rbclsTimestamp = _lookupConstant( _runtime, "BSON::Timestamp" );
_rbclsObjectId = _lookupConstant( _runtime, "BSON::ObjectId"); _rbclsObjectId = _lookupConstant( _runtime, "BSON::ObjectId");
} }
@ -224,19 +227,23 @@ public class RubyBSONCallback implements BSONCallback {
public void gotRegex( String name , String pattern , String flags ){ public void gotRegex( String name , String pattern , String flags ){
int f = 0; int f = 0;
RegexpOptions opts = new RegexpOptions();
ByteList b = new ByteList(pattern.getBytes()); ByteList b = new ByteList(pattern.getBytes());
if(flags.contains("i")) { if(flags.contains("i")) {
f = f | ReOptions.RE_OPTION_IGNORECASE; opts.setIgnorecase(true);
} }
if(flags.contains("m")) { if(flags.contains("m")) {
f = f | ReOptions.RE_OPTION_MULTILINE; opts.setMultiline(true);
}
if(flags.contains("s")) {
opts.setMultiline(true);
} }
if(flags.contains("x")) { if(flags.contains("x")) {
f = f | ReOptions.RE_OPTION_EXTENDED; opts.setExtended(true);
} }
_put( name , RubyRegexp.newRegexp(_runtime, b, f) ); _put( name , RubyRegexp.newRegexp(_runtime, b, opts) );
} }
public void gotString( String name , String v ){ public void gotString( String name , String v ){
@ -250,17 +257,16 @@ public class RubyBSONCallback implements BSONCallback {
_put( name , symbol ); _put( name , symbol );
} }
// Timestamp is currently rendered in Ruby as a two-element array.
public void gotTimestamp( String name , int time , int inc ){ public void gotTimestamp( String name , int time , int inc ){
RubyFixnum rtime = RubyFixnum.newFixnum( _runtime, time ); RubyFixnum rtime = RubyFixnum.newFixnum( _runtime, time );
RubyFixnum rinc = RubyFixnum.newFixnum( _runtime, inc ); RubyFixnum rinc = RubyFixnum.newFixnum( _runtime, inc );
RubyObject[] args = new RubyObject[2]; RubyObject[] args = new RubyObject[2];
args[0] = rinc; args[0] = rtime;
args[1] = rtime; args[1] = rinc;
RubyArray result = RubyArray.newArray( _runtime, args ); Object result = JavaEmbedUtils.invokeMethod(_runtime, _rbclsTimestamp, "new", args, Object.class);
_put ( name , result ); _put ( name , (RubyObject)result );
} }
public void gotObjectId( String name , ObjectId id ){ public void gotObjectId( String name , ObjectId id ){
@ -293,14 +299,9 @@ public class RubyBSONCallback implements BSONCallback {
return result; return result;
} }
@Deprecated
public void gotBinaryArray( String name , byte[] b ) { public void gotBinaryArray( String name , byte[] b ) {
RubyArray a = ja2ra( b ); /* Deprecated */
Object[] args = new Object[] { a, 2 };
Object result = JavaEmbedUtils.invokeMethod(_runtime, _rbclsBinary, "new", args, Object.class);
_put( name, (RubyObject)result );
} }
// TODO: fix abs stuff here. some kind of bad type issue // TODO: fix abs stuff here. some kind of bad type issue

View File

@ -12,16 +12,26 @@ import org.bson.*;
import org.bson.io.*; import org.bson.io.*;
import org.bson.types.*; import org.bson.types.*;
public class RubyBSONDecoder extends BSONDecoder { public class RubyBSONDecoder extends BasicBSONDecoder {
// public int decode( RubyString s , BSONCallback callback ){ protected void _binary( String name )
// byte[] b = s.getBytes(); throws IOException {
// try { final int totalLen = _in.readInt();
// return decode( new Input( new ByteArrayInputStream(b) ) , callback ); final byte bType = _in.read();
// }
// catch ( IOException ioe ){
// throw new RuntimeException( "should be impossible" , ioe );
// }
// }
if( bType == 2 ) {
final int len = _in.readInt();
if ( len + 4 != totalLen )
throw new IllegalArgumentException( "bad data size subtype 2 len: " + len + "totalLen: " + totalLen );
final byte[] data = new byte[len];
_in.fill( data );
_callback.gotBinary( name, (byte)2, data );
}
else {
byte[] data = new byte[totalLen];
_in.fill( data );
_callback.gotBinary( name, bType, data );
}
}
} }

View File

@ -69,7 +69,8 @@ public class RubyBSONEncoder extends BSONEncoder {
private static final BigInteger LONG_MIN = BigInteger.valueOf(-MAX - 1); private static final BigInteger LONG_MIN = BigInteger.valueOf(-MAX - 1);
public RubyBSONEncoder(Ruby runtime, boolean check_keys, boolean move_id){ public RubyBSONEncoder(Ruby runtime, boolean check_keys, boolean move_id, int max_bson_size){
_max_bson_size = max_bson_size;
_check_keys = check_keys; _check_keys = check_keys;
_move_id = move_id; _move_id = move_id;
_runtime = runtime; _runtime = runtime;
@ -281,6 +282,9 @@ public class RubyBSONEncoder extends BSONEncoder {
else if ( val instanceof Iterable) else if ( val instanceof Iterable)
putIterable( name , (Iterable)val ); putIterable( name , (Iterable)val );
else if ( val instanceof Date )
putDate( name , ((Date)val).getTime() );
else if ( val instanceof byte[] ) else if ( val instanceof byte[] )
putBinary( name , (byte[])val ); putBinary( name , (byte[])val );
@ -293,7 +297,7 @@ public class RubyBSONEncoder extends BSONEncoder {
else if ( val instanceof RubyObject ) { else if ( val instanceof RubyObject ) {
if ( val instanceof RubyString ) { if ( val instanceof RubyString ) {
putRubyString(name, ((RubyString)val).getUnicodeValue() ); putRubyString(name, (RubyString)val);
} }
else if (val instanceof RubySymbol) { else if (val instanceof RubySymbol) {
@ -381,6 +385,9 @@ public class RubyBSONEncoder extends BSONEncoder {
else if ( klass.equals("BSON::MaxKey") ) { else if ( klass.equals("BSON::MaxKey") ) {
_put( MAXKEY, name ); _put( MAXKEY, name );
} }
else if ( klass.equals("BSON::Timestamp") ) {
putRubyTimestamp( name, (RubyObject)val );
}
else if ( klass.equals("BSON::DBRef") ) { else if ( klass.equals("BSON::DBRef") ) {
RubyHash ref = (RubyHash)JavaEmbedUtils.invokeMethod(_runtime, val, RubyHash ref = (RubyHash)JavaEmbedUtils.invokeMethod(_runtime, val,
"to_hash", new Object[] {}, Object.class); "to_hash", new Object[] {}, Object.class);
@ -501,6 +508,18 @@ public class RubyBSONEncoder extends BSONEncoder {
_buf.writeInt( ts.getTime() ); _buf.writeInt( ts.getTime() );
} }
protected void putRubyTimestamp(String name, RubyObject ts ){
_put( TIMESTAMP , name );
Number inc = (Number)JavaEmbedUtils.invokeMethod(_runtime, ts,
"increment", new Object[] {}, Object.class);
Number sec = (Number)JavaEmbedUtils.invokeMethod(_runtime, ts,
"seconds", new Object[] {}, Object.class);
_buf.writeInt( (int)inc.longValue() );
_buf.writeInt( (int)sec.longValue() );
}
protected void putRubyCodeWScope( String name , RubyObject code ){ protected void putRubyCodeWScope( String name , RubyObject code ){
_put( CODE_W_SCOPE , name ); _put( CODE_W_SCOPE , name );
int temp = _buf.getPosition(); int temp = _buf.getPosition();
@ -540,7 +559,7 @@ public class RubyBSONEncoder extends BSONEncoder {
long subtype = rbSubtype.longValue(); long subtype = rbSubtype.longValue();
byte[] data = ra2ba( rarray ); byte[] data = ra2ba( rarray );
if ( subtype == 2 ) { if ( subtype == 2 ) {
putBinary( name, data ); putBinaryTypeTwo( name, data );
} }
else { else {
_put( BINARY , name ); _put( BINARY , name );
@ -550,11 +569,12 @@ public class RubyBSONEncoder extends BSONEncoder {
} }
} }
protected void putBinary( String name , byte[] data ){ /* We have a special method because type 2 has a different format. */
protected void putBinaryTypeTwo( String name , byte[] data ){
_put( BINARY , name ); _put( BINARY , name );
_buf.writeInt( 4 + data.length ); _buf.writeInt( 4 + data.length );
_buf.write( B_BINARY ); _buf.write( 2 );
_buf.writeInt( data.length ); _buf.writeInt( data.length );
int before = _buf.getPosition(); int before = _buf.getPosition();
_buf.write( data ); _buf.write( data );
@ -563,6 +583,13 @@ public class RubyBSONEncoder extends BSONEncoder {
com.mongodb.util.MyAsserts.assertEquals( after - before , data.length ); com.mongodb.util.MyAsserts.assertEquals( after - before , data.length );
} }
protected void putBinary( String name , byte[] data ){
_put( BINARY , name );
_buf.writeInt( data.length );
_buf.write( 0 );
_buf.write( data );
}
protected void putBinary( String name , Binary val ){ protected void putBinary( String name , Binary val ){
_put( BINARY , name ); _put( BINARY , name );
_buf.writeInt( val.length() ); _buf.writeInt( val.length() );
@ -582,10 +609,13 @@ public class RubyBSONEncoder extends BSONEncoder {
_putString(name, s.getSymbol(), SYMBOL); _putString(name, s.getSymbol(), SYMBOL);
} }
protected void putRubyString( String name , String s ) { protected void putRubyString( String name , RubyString s ) {
_put( STRING , name ); byte[] bytes = s.getBytes();
_putValueString( s ); _put( STRING , name );
} _buf.writeInt( bytes.length + 1);
_buf.write( bytes );
_buf.write( (byte)0 );
}
protected void putString(String name, String s) { protected void putString(String name, String s) {
_putString(name, s, STRING); _putString(name, s, STRING);
@ -621,8 +651,10 @@ public class RubyBSONEncoder extends BSONEncoder {
if( (regexOptions & ReOptions.RE_OPTION_IGNORECASE) != 0 ) if( (regexOptions & ReOptions.RE_OPTION_IGNORECASE) != 0 )
options = options.concat( "i" ); options = options.concat( "i" );
if( (regexOptions & ReOptions.RE_OPTION_MULTILINE) != 0 ) if( (regexOptions & ReOptions.RE_OPTION_MULTILINE) != 0 ) {
options = options.concat( "m" ); options = options.concat( "m" );
options = options.concat( "s" );
}
if( (regexOptions & ReOptions.RE_OPTION_EXTENDED) != 0 ) if( (regexOptions & ReOptions.RE_OPTION_EXTENDED) != 0 )
options = options.concat( "x" ); options = options.concat( "x" );

View File

@ -1,12 +1,24 @@
# encoding: UTF-8 # encoding: UTF-8
#
# --
# Copyright (C) 2008-2011 10gen Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ++
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) require 'bson/version'
MINIMUM_BSON_EXT_VERSION = "1.2.rc2"
module BSON module BSON
VERSION = "1.2.rc2"
if defined? Mongo::DEFAULT_MAX_BSON_SIZE if defined? Mongo::DEFAULT_MAX_BSON_SIZE
DEFAULT_MAX_BSON_SIZE = Mongo::DEFAULT_MAX_BSON_SIZE DEFAULT_MAX_BSON_SIZE = Mongo::DEFAULT_MAX_BSON_SIZE
else else
@ -40,8 +52,7 @@ end
if RUBY_PLATFORM =~ /java/ if RUBY_PLATFORM =~ /java/
jar_dir = File.join(File.dirname(__FILE__), '..', 'ext', 'java', 'jar') jar_dir = File.join(File.dirname(__FILE__), '..', 'ext', 'java', 'jar')
require File.join(jar_dir, 'mongo-2.4.jar') require File.join(jar_dir, 'mongo-2.6.5.jar')
require File.join(jar_dir, 'bson-2.2.jar')
require File.join(jar_dir, 'jbson.jar') require File.join(jar_dir, 'jbson.jar')
require 'bson/bson_java' require 'bson/bson_java'
module BSON module BSON
@ -52,15 +63,12 @@ else
# Need this for running test with and without c ext in Ruby 1.9. # Need this for running test with and without c ext in Ruby 1.9.
raise LoadError if ENV['TEST_MODE'] && !ENV['C_EXT'] raise LoadError if ENV['TEST_MODE'] && !ENV['C_EXT']
# Raise LoadError unless little endian # Raise LoadError unless little endian, since the C extensions
# only work on little-endian architectures.
raise LoadError unless "\x01\x00\x00\x00".unpack("i").first == 1 raise LoadError unless "\x01\x00\x00\x00".unpack("i").first == 1
require 'bson_ext/cbson' require 'bson_ext/cbson'
raise LoadError unless defined?(CBson::VERSION) raise LoadError unless defined?(CBson::VERSION)
if CBson::VERSION < MINIMUM_BSON_EXT_VERSION
puts "Able to load bson_ext version #{CBson::VERSION}, but >= #{MINIMUM_BSON_EXT_VERSION} is required."
raise LoadError
end
require 'bson/bson_c' require 'bson/bson_c'
module BSON module BSON
BSON_CODER = BSON_C BSON_CODER = BSON_C
@ -84,6 +92,7 @@ require 'bson/types/code'
require 'bson/types/dbref' require 'bson/types/dbref'
require 'bson/types/object_id' require 'bson/types/object_id'
require 'bson/types/min_max_keys' require 'bson/types/min_max_keys'
require 'bson/types/timestamp'
require 'base64' require 'base64'
require 'bson/ordered_hash' require 'bson/ordered_hash'

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -20,8 +20,8 @@
module BSON module BSON
class BSON_C class BSON_C
def self.serialize(obj, check_keys=false, move_id=false) def self.serialize(obj, check_keys=false, move_id=false, max_bson_size=BSON::DEFAULT_MAX_BSON_SIZE)
ByteBuffer.new(CBson.serialize(obj, check_keys, move_id)) ByteBuffer.new(CBson.serialize(obj, check_keys, move_id, max_bson_size))
end end
def self.deserialize(buf=nil) def self.deserialize(buf=nil)
@ -29,10 +29,12 @@ module BSON
end end
def self.max_bson_size def self.max_bson_size
warn "BSON::BSON_CODER.max_bson_size is deprecated and will be removed in v2.0."
CBson.max_bson_size CBson.max_bson_size
end end
def self.update_max_bson_size(connection) def self.update_max_bson_size(connection)
warn "BSON::BSON_CODER.update_max_bson_size is deprecated and now a no-op. It will be removed in v2.0."
CBson.update_max_bson_size(connection) CBson.update_max_bson_size(connection)
end end
end end

View File

@ -4,24 +4,26 @@ module BSON
# TODO: Pool or cache instances of RubyBSONEncoder so that # TODO: Pool or cache instances of RubyBSONEncoder so that
# we don't create a new one on each call to #serialize. # we don't create a new one on each call to #serialize.
def self.serialize(obj, check_keys=false, move_id=false) def self.serialize(obj, check_keys=false, move_id=false, max_bson_size=BSON::DEFAULT_MAX_BSON_SIZE)
raise InvalidDocument, "BSON_JAVA.serialize takes a Hash" unless obj.is_a?(Hash) raise InvalidDocument, "BSON_JAVA.serialize takes a Hash" unless obj.is_a?(Hash)
enc = Java::OrgJbson::RubyBSONEncoder.new(JRuby.runtime, check_keys, move_id) enc = Java::OrgJbson::RubyBSONEncoder.new(JRuby.runtime, check_keys, move_id, max_bson_size)
ByteBuffer.new(enc.encode(obj)) ByteBuffer.new(enc.encode(obj))
end end
def self.deserialize(buf) def self.deserialize(buf)
dec = Java::OrgBson::BSONDecoder.new dec = Java::OrgJbson::RubyBSONDecoder.new
callback = Java::OrgJbson::RubyBSONCallback.new(JRuby.runtime) callback = Java::OrgJbson::RubyBSONCallback.new(JRuby.runtime)
dec.decode(buf.to_s.to_java_bytes, callback) dec.decode(buf.to_s.to_java_bytes, callback)
callback.get callback.get
end end
def self.max_bson_size def self.max_bson_size
warn "BSON::BSON_CODER.max_bson_size is deprecated and will be removed in v2.0."
Java::OrgJbson::RubyBSONEncoder.max_bson_size(self) Java::OrgJbson::RubyBSONEncoder.max_bson_size(self)
end end
def self.update_max_bson_size(connection) def self.update_max_bson_size(connection)
warn "BSON::BSON_CODER.update_max_bson_size is deprecated and now a no-op. It will be removed in v2.0."
Java::OrgJbson::RubyBSONEncoder.update_max_bson_size(self, connection) Java::OrgJbson::RubyBSONEncoder.update_max_bson_size(self, connection)
end end
end end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -46,8 +46,8 @@ module BSON
NUMBER_LONG = 18 NUMBER_LONG = 18
MAXKEY = 127 MAXKEY = 127
def initialize def initialize(max_bson_size=BSON::DEFAULT_MAX_BSON_SIZE)
@buf = ByteBuffer.new @buf = ByteBuffer.new('', max_bson_size)
@encoder = BSON_RUBY @encoder = BSON_RUBY
end end
@ -57,7 +57,12 @@ module BSON
BINARY_ENCODING = Encoding.find('binary') BINARY_ENCODING = Encoding.find('binary')
def self.to_utf8_binary(str) def self.to_utf8_binary(str)
str.encode(UTF8_ENCODING).force_encoding(BINARY_ENCODING) begin
str.unpack("U*")
rescue
raise InvalidStringEncoding, "String not valid utf-8: #{str.inspect}"
end
str.dup.force_encoding(BINARY_ENCODING)
end end
else else
NULL_BYTE = "\0" NULL_BYTE = "\0"
@ -65,7 +70,7 @@ module BSON
def self.to_utf8_binary(str) def self.to_utf8_binary(str)
begin begin
str.unpack("U*") str.unpack("U*")
rescue => ex rescue
raise InvalidStringEncoding, "String not valid utf-8: #{str.inspect}" raise InvalidStringEncoding, "String not valid utf-8: #{str.inspect}"
end end
str str
@ -73,10 +78,12 @@ module BSON
end end
def self.update_max_bson_size(connection) def self.update_max_bson_size(connection)
warn "BSON::BSON_CODER.update_max_bson_size is deprecated and now a no-op. It will be removed in v2.0."
@@max_bson_size = connection.max_bson_size @@max_bson_size = connection.max_bson_size
end end
def self.max_bson_size def self.max_bson_size
warn "BSON::BSON_CODER.max_bson_size is deprecated and will be removed in v2.0."
@@max_bson_size @@max_bson_size
end end
@ -100,8 +107,8 @@ module BSON
# Serializes an object. # Serializes an object.
# Implemented to ensure an API compatible with BSON extension. # Implemented to ensure an API compatible with BSON extension.
def self.serialize(obj, check_keys=false, move_id=false) def self.serialize(obj, check_keys=false, move_id=false, max_bson_size=BSON::DEFAULT_MAX_BSON_SIZE)
new.serialize(obj, check_keys, move_id) new(max_bson_size).serialize(obj, check_keys, move_id)
end end
def self.deserialize(buf=nil) def self.deserialize(buf=nil)
@ -132,8 +139,9 @@ module BSON
end end
serialize_eoo_element(@buf) serialize_eoo_element(@buf)
if @buf.size > @@max_bson_size if @buf.size > @buf.max_size
raise InvalidDocument, "Document is too large (#{@buf.size}). BSON documents are limited to #{@@max_bson_size} bytes." raise InvalidDocument, "Document is too large (#{@buf.size}). " +
"This BSON documents is limited to #{@buf.max_size} bytes."
end end
@buf.put_int(@buf.size, 0) @buf.put_int(@buf.size, 0)
@buf @buf
@ -187,6 +195,8 @@ module BSON
serialize_max_key_element(@buf, k) serialize_max_key_element(@buf, k)
when MINKEY when MINKEY
serialize_min_key_element(@buf, k) serialize_min_key_element(@buf, k)
when TIMESTAMP
serialize_timestamp_element(@buf, k, v)
else else
raise "unhandled type #{type}" raise "unhandled type #{type}"
end end
@ -256,8 +266,7 @@ module BSON
doc[key] = deserialize_code_w_scope_data(@buf) doc[key] = deserialize_code_w_scope_data(@buf)
when TIMESTAMP when TIMESTAMP
key = deserialize_cstr(@buf) key = deserialize_cstr(@buf)
doc[key] = [deserialize_number_int_data(@buf), doc[key] = deserialize_timestamp_data(@buf)
deserialize_number_int_data(@buf)]
when MAXKEY when MAXKEY
key = deserialize_cstr(@buf) key = deserialize_cstr(@buf)
doc[key] = MaxKey.new doc[key] = MaxKey.new
@ -337,10 +346,17 @@ module BSON
opts = 0 opts = 0
opts |= Regexp::IGNORECASE if options_str.include?('i') opts |= Regexp::IGNORECASE if options_str.include?('i')
opts |= Regexp::MULTILINE if options_str.include?('m') opts |= Regexp::MULTILINE if options_str.include?('m')
opts |= Regexp::MULTILINE if options_str.include?('s')
opts |= Regexp::EXTENDED if options_str.include?('x') opts |= Regexp::EXTENDED if options_str.include?('x')
Regexp.new(str, opts) Regexp.new(str, opts)
end end
def deserialize_timestamp_data(buf)
increment = buf.get_int
seconds = buf.get_int
Timestamp.new(seconds, increment)
end
def encoded_str(str) def encoded_str(str)
if RUBY_VERSION >= '1.9' if RUBY_VERSION >= '1.9'
str.force_encoding("utf-8") str.force_encoding("utf-8")
@ -488,7 +504,10 @@ module BSON
options = val.options options = val.options
options_str = '' options_str = ''
options_str << 'i' if ((options & Regexp::IGNORECASE) != 0) options_str << 'i' if ((options & Regexp::IGNORECASE) != 0)
options_str << 'm' if ((options & Regexp::MULTILINE) != 0) if ((options & Regexp::MULTILINE) != 0)
options_str << 'm'
options_str << 's'
end
options_str << 'x' if ((options & Regexp::EXTENDED) != 0) options_str << 'x' if ((options & Regexp::EXTENDED) != 0)
options_str << val.extra_options_str if val.respond_to?(:extra_options_str) options_str << val.extra_options_str if val.respond_to?(:extra_options_str)
# Must store option chars in alphabetical order # Must store option chars in alphabetical order
@ -505,6 +524,14 @@ module BSON
self.class.serialize_key(buf, key) self.class.serialize_key(buf, key)
end end
def serialize_timestamp_element(buf, key, val)
buf.put(TIMESTAMP)
self.class.serialize_key(buf, key)
buf.put_int(val.increment)
buf.put_int(val.seconds)
end
def serialize_oid_element(buf, key, val) def serialize_oid_element(buf, key, val)
buf.put(OID) buf.put(OID)
self.class.serialize_key(buf, key) self.class.serialize_key(buf, key)
@ -593,6 +620,8 @@ module BSON
MAXKEY MAXKEY
when MinKey when MinKey
MINKEY MINKEY
when Timestamp
TIMESTAMP
when Numeric when Numeric
raise InvalidDocument, "Cannot serialize the Numeric type #{o.class} as BSON; only Fixum, Bignum, and Float are supported." raise InvalidDocument, "Cannot serialize the Numeric type #{o.class} as BSON; only Fixum, Bignum, and Float are supported."
when Date, DateTime when Date, DateTime

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -20,9 +20,9 @@
module BSON module BSON
class ByteBuffer class ByteBuffer
attr_reader :order attr_reader :order, :max_size
def initialize(initial_data="") def initialize(initial_data="", max_size=BSON::DEFAULT_MAX_BSON_SIZE)
@str = case initial_data @str = case initial_data
when String then when String then
if initial_data.respond_to?(:force_encoding) if initial_data.respond_to?(:force_encoding)
@ -40,6 +40,7 @@ module BSON
@order = :little_endian @order = :little_endian
@int_pack_order = 'V' @int_pack_order = 'V'
@double_pack_order = 'E' @double_pack_order = 'E'
@max_size = max_size
end end
if RUBY_VERSION >= '1.9' if RUBY_VERSION >= '1.9'
@ -56,7 +57,7 @@ module BSON
def self.to_utf8_binary(str) def self.to_utf8_binary(str)
begin begin
str.unpack("U*") str.unpack("U*")
rescue => ex rescue
raise InvalidStringEncoding, "String not valid utf-8: #{str.inspect}" raise InvalidStringEncoding, "String not valid utf-8: #{str.inspect}"
end end
str str
@ -232,12 +233,16 @@ module BSON
@cursor < @str.size @cursor < @str.size
end end
def to_a def ==(other)
@str.unpack("C*") other.respond_to?(:to_s) && @str == other.to_s
end end
def unpack(args) def to_a(format="C*")
to_a @str.unpack(format)
end
def unpack(format="C*")
to_a(format)
end end
def to_s def to_s
@ -245,7 +250,6 @@ module BSON
end end
def dump def dump
i = 0
@str.each_byte do |c, i| @str.each_byte do |c, i|
$stderr.puts "#{'%04d' % i}: #{'%02x' % c} #{'%03o' % c} #{'%s' % c.chr} #{'%3d' % c}" $stderr.puts "#{'%04d' % i}: #{'%02x' % c} #{'%03o' % c} #{'%s' % c.chr} #{'%3d' % c}"
i += 1 i += 1

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -29,10 +29,7 @@ module BSON
# Raised when given a string is not valid utf-8 (Ruby 1.8 only). # Raised when given a string is not valid utf-8 (Ruby 1.8 only).
class InvalidStringEncoding < BSONError; end class InvalidStringEncoding < BSONError; end
# Raised when attempting to initialize an invalid ObjectID. # Raised when attempting to initialize an invalid ObjectId.
class InvalidObjectID < BSONError; end
# Raised when attempting to initialize an invalid ObjectID.
class InvalidObjectId < BSONError; end class InvalidObjectId < BSONError; end
# Raised when trying to insert a document that exceeds the 4MB limit or # Raised when trying to insert a document that exceeds the 4MB limit or

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -57,16 +57,20 @@ module BSON
end end
def initialize(*a, &b) def initialize(*a, &b)
super
@ordered_keys = [] @ordered_keys = []
super
end
def yaml_initialize(tag, val)
@ordered_keys = []
super
end end
def keys def keys
@ordered_keys || [] @ordered_keys.dup
end end
def []=(key, value) def []=(key, value)
@ordered_keys ||= []
unless has_key?(key) unless has_key?(key)
@ordered_keys << key @ordered_keys << key
end end
@ -74,14 +78,12 @@ module BSON
end end
def each def each
@ordered_keys ||= []
@ordered_keys.each { |k| yield k, self[k] } @ordered_keys.each { |k| yield k, self[k] }
self self
end end
alias :each_pair :each alias :each_pair :each
def to_a def to_a
@ordered_keys ||= []
@ordered_keys.map { |k| [k, self[k]] } @ordered_keys.map { |k| [k, self[k]] }
end end
@ -89,6 +91,11 @@ module BSON
collect { |k, v| v } collect { |k, v| v }
end end
def replace(other)
@ordered_keys.replace(other.keys)
super
end
def merge(other) def merge(other)
oh = self.dup oh = self.dup
oh.merge!(other) oh.merge!(other)
@ -96,7 +103,6 @@ module BSON
end end
def merge!(other) def merge!(other)
@ordered_keys ||= []
@ordered_keys += other.keys # unordered if not an BSON::OrderedHash @ordered_keys += other.keys # unordered if not an BSON::OrderedHash
@ordered_keys.uniq! @ordered_keys.uniq!
super(other) super(other)
@ -104,10 +110,18 @@ module BSON
alias :update :merge! alias :update :merge!
def dup
result = OrderedHash.new
@ordered_keys.each do |key|
result[key] = self[key]
end
result
end
def inspect def inspect
str = '{' str = "#<BSON::OrderedHash:0x#{self.object_id.to_s(16)} {"
str << (@ordered_keys || []).collect { |k| "\"#{k}\"=>#{self.[](k).inspect}" }.join(", ") str << (@ordered_keys || []).collect { |k| "\"#{k}\"=>#{self.[](k).inspect}" }.join(", ")
str << '}' str << '}>'
end end
def delete(key, &block) def delete(key, &block)
@ -116,11 +130,12 @@ module BSON
end end
def delete_if(&block) def delete_if(&block)
self.each { |k,v| keys.each do |key|
if yield k, v if yield key, self[key]
delete(k) delete(key)
end end
} end
self
end end
def reject(&block) def reject(&block)
@ -129,25 +144,38 @@ module BSON
clone.delete_if(&block) clone.delete_if(&block)
end end
def reject!(&block)
changed = false
self.each do |k,v|
if yield k, v
changed = true
delete(k)
end
end
changed ? self : nil
end
def clear def clear
super super
@ordered_keys = [] @ordered_keys = []
end end
def hash if RUBY_VERSION =~ /1.8.6/
code = 17 def hash
each_pair do |key, value| code = 17
code = 37 * code + key.hash each_pair do |key, value|
code = 37 * code + value.hash code = 37 * code + key.hash
code = 37 * code + value.hash
end
code & 0x7fffffff
end end
code & 0x7fffffff
end
def eql?(o) def eql?(o)
if o.instance_of? BSON::OrderedHash if o.instance_of? BSON::OrderedHash
self.hash == o.hash self.hash == o.hash
else else
false false
end
end end
end end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -43,7 +43,7 @@ module BSON
# SUBTYPE_BYTES, SUBTYPE_UUID, SUBTYPE_MD5, and SUBTYPE_USER_DEFINED. # SUBTYPE_BYTES, SUBTYPE_UUID, SUBTYPE_MD5, and SUBTYPE_USER_DEFINED.
# #
# @see http://www.mongodb.org/display/DOCS/BSON#BSON-noteondatabinary BSON binary subtypes. # @see http://www.mongodb.org/display/DOCS/BSON#BSON-noteondatabinary BSON binary subtypes.
def initialize(data=[], subtype=SUBTYPE_BYTES) def initialize(data=[], subtype=SUBTYPE_SIMPLE)
super(data) super(data)
@subtype = subtype @subtype = subtype
end end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -26,7 +26,7 @@ module BSON
# Create a DBRef. Use this class in conjunction with DB#dereference. # Create a DBRef. Use this class in conjunction with DB#dereference.
# #
# @param [String] a collection name # @param [String] a collection name
# @param [ObjectID] an object id # @param [ObjectId] an object id
# #
# @core dbrefs constructor_details # @core dbrefs constructor_details
def initialize(namespace, object_id) def initialize(namespace, object_id)

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -30,8 +30,7 @@ module BSON
# #
# @core objectids # @core objectids
class ObjectId class ObjectId
@@lock = Mutex.new attr_accessor :data
@@index = 0
# Create a new object id. If no parameter is given, an id corresponding # Create a new object id. If no parameter is given, an id corresponding
# to the ObjectId BSON data type will be created. This is a 12-byte value # to the ObjectId BSON data type will be created. This is a 12-byte value
@ -40,12 +39,15 @@ module BSON
# #
# @param [Array] data should be an array of bytes. If you want # @param [Array] data should be an array of bytes. If you want
# to generate a standard MongoDB object id, leave this argument blank. # to generate a standard MongoDB object id, leave this argument blank.
def initialize(data=nil) #
@data = data || generate # @option opts :data (nil) An array of bytes to use as the object id.
# @option opts :time (nil) The value of this object ids timestamp. Note that
# the remaining bytes will consist of the standard machine id, pid, and counter. If
# you need a zeroed timestamp, used ObjectId.from_time.
def initialize(data=nil, time=nil)
@data = data || generate(time)
end end
attr_accessor :data
# Determine if the supplied string is legal. Legal strings will # Determine if the supplied string is legal. Legal strings will
# consist of 24 hexadecimal characters. # consist of 24 hexadecimal characters.
# #
@ -62,21 +64,30 @@ module BSON
# #
# @param [Time] time a utc time to encode as an object id. # @param [Time] time a utc time to encode as an object id.
# #
# @return [Mongo::ObjectId] # @option opts [:unique] (false) If false, the object id's bytes
# succeeding the timestamp will be zeroed; if true, they'll
# consist of the standard machine id, pid, and counter.
#
# @return [BSON::ObjectId]
# #
# @example Return all document created before Jan 1, 2010. # @example Return all document created before Jan 1, 2010.
# time = Time.utc(2010, 1, 1) # time = Time.utc(2010, 1, 1)
# time_id = ObjectId.from_time(time) # time_id = ObjectId.from_time(time)
# collection.find({'_id' => {'$lt' => time_id}}) # collection.find({'_id' => {'$lt' => time_id}})
def self.from_time(time) def self.from_time(time, opts={})
self.new([time.to_i,0,0].pack("NNN").unpack("C12")) unique = opts.fetch(:unique, false)
if unique
self.new(nil, time)
else
self.new([time.to_i,0,0].pack("NNN").unpack("C12"))
end
end end
# Adds a primary key to the given document if needed. # Adds a primary key to the given document if needed.
# #
# @param [Hash] doc a document requiring an _id. # @param [Hash] doc a document requiring an _id.
# #
# @return [Mongo::ObjectId, Object] returns a newly-created or # @return [BSON::ObjectId, Object] returns a newly-created or
# current _id for the given document. # current _id for the given document.
def self.create_pk(doc) def self.create_pk(doc)
doc.has_key?(:_id) || doc.has_key?('_id') ? doc : doc.merge!(:_id => self.new) doc.has_key?(:_id) || doc.has_key?('_id') ? doc : doc.merge!(:_id => self.new)
@ -84,9 +95,9 @@ module BSON
# Check equality of this object id with another. # Check equality of this object id with another.
# #
# @param [Mongo::ObjectId] object_id # @param [BSON::ObjectId] object_id
def eql?(object_id) def eql?(object_id)
@data == object_id.instance_variable_get("@data") object_id.kind_of?(BSON::ObjectId) and self.data == object_id.data
end end
alias_method :==, :eql? alias_method :==, :eql?
@ -105,11 +116,11 @@ module BSON
@data.dup @data.dup
end end
# Get the array representation without cloning. # Returns the object id as a single element in an array for use with Kernel#Array
# #
# @return [Array] # @return [Array]
def data def to_ary
@data [ self ]
end end
# Given a string representation of an ObjectId, return a new ObjectId # Given a string representation of an ObjectId, return a new ObjectId
@ -117,9 +128,9 @@ module BSON
# #
# @param [String] str # @param [String] str
# #
# @return [Mongo::ObjectId] # @return [BSON::ObjectId]
def self.from_string(str) def self.from_string(str)
raise InvalidObjectId, "illegal ObjectId format" unless legal?(str) raise InvalidObjectId, "illegal ObjectId format: #{str}" unless legal?(str)
data = [] data = []
12.times do |i| 12.times do |i|
data[i] = str[i * 2, 2].to_i(16) data[i] = str[i * 2, 2].to_i(16)
@ -163,31 +174,63 @@ module BSON
Time.at(@data.pack("C4").unpack("N")[0]).utc Time.at(@data.pack("C4").unpack("N")[0]).utc
end end
private def self.machine_id
@@machine_id
# This gets overwritten by the C extension if it loads.
def generate
oid = ''
# 4 bytes current time
time = Time.new.to_i
oid += [time].pack("N")
# 3 bytes machine
oid += Digest::MD5.digest(Socket.gethostname)[0, 3]
# 2 bytes pid
oid += [Process.pid % 0xFFFF].pack("n")
# 3 bytes inc
oid += [get_inc].pack("N")[1, 3]
oid.unpack("C12")
end end
def get_inc private
@@lock.synchronize do
@@index = (@@index + 1) % 0xFFFFFF if RUBY_PLATFORM =~ /java/
@@generator = Java::OrgBsonTypes::ObjectId
@@machine_id = [@@generator.genMachineId].pack("N")[0,3]
def generate(oid_time=nil)
data = (oid_time ? @@generator.new(oid_time) : @@generator.new)
oid = ''
oid += [data.timeSecond].pack("N")
oid += [data._machine].pack("N")
oid += [data._inc].pack("N")
oid.unpack("C12")
end
else
@@lock = Mutex.new
@@index = 0
@@machine_id = Digest::MD5.digest(Socket.gethostname)[0, 3]
# We need to check whether BSON_CODER is defined because it's required by
# the BSON C extensions.
if defined?(BSON::BSON_CODER) && BSON::BSON_CODER == BSON::BSON_RUBY
# This gets overwritten by the C extension if it loads.
def generate(oid_time=nil)
oid = ''
# 4 bytes current time
if oid_time
t = oid_time.to_i
else
t = Time.new.to_i
end
oid += [t].pack("N")
# 3 bytes machine
oid += @@machine_id
# 2 bytes pid
oid += [Process.pid % 0xFFFF].pack("n")
# 3 bytes inc
oid += [get_inc].pack("N")[1, 3]
oid.unpack("C12")
end
def get_inc
@@lock.synchronize do
@@index = (@@index + 1) % 0xFFFFFF
end
end
end end
end end
end end

View File

@ -0,0 +1,76 @@
# encoding: UTF-8
# --
# Copyright (C) 2008-2011 10gen Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ++
module BSON
# A class for representing BSON Timestamps. The Timestamp type is used
# by MongoDB internally; thus, it should be used by application developers
# for diagnostic purposes only.
class Timestamp
include Enumerable
attr_reader :seconds, :increment
# Create a new BSON Timestamp.
#
# @param [Integer] seconds The number of seconds
# @param increment
def initialize(seconds, increment)
@seconds = seconds
@increment = increment
end
def to_s
"seconds: #{seconds}, increment: #{increment}"
end
def ==(other)
self.seconds == other.seconds &&
self.increment == other.increment
end
# This is for backward-compatibility. Timestamps in the Ruby
# driver used to deserialize as arrays. So we provide
# an equivalent interface.
#
# @deprecated
def [](index)
warn "Timestamps are no longer deserialized as arrays. If you're working " +
"with BSON Timestamp objects, see the BSON::Timestamp class. This usage will " +
"be deprecated in Ruby Driver v2.0."
if index == 0
self.increment
elsif index == 1
self.seconds
else
nil
end
end
# This method exists only for backward-compatibility.
#
# @deprecated
def each
i = 0
while i < 2
yield self[i]
i += 1
end
end
end
end

3
lib/bson/version.rb Normal file
View File

@ -0,0 +1,3 @@
module BSON
VERSION = "1.6.2"
end

View File

@ -1,15 +1,28 @@
# encoding: UTF-8 # encoding: UTF-8
#
# --
# Copyright (C) 2008-2011 10gen Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ++
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) require 'mongo/version'
module Mongo module Mongo
VERSION = "1.2.rc2" ASCENDING = 1
end DESCENDING = -1
GEO2D = '2d'
module Mongo GEOHAYSTACK = 'geoHaystack'
ASCENDING = 1
DESCENDING = -1
GEO2D = '2d'
DEFAULT_MAX_BSON_SIZE = 4 * 1024 * 1024 DEFAULT_MAX_BSON_SIZE = 4 * 1024 * 1024
@ -42,11 +55,17 @@ require 'bson'
require 'mongo/util/conversions' require 'mongo/util/conversions'
require 'mongo/util/support' require 'mongo/util/support'
require 'mongo/util/core_ext' require 'mongo/util/core_ext'
require 'mongo/util/logging'
require 'mongo/util/node'
require 'mongo/util/pool' require 'mongo/util/pool'
require 'mongo/util/pool_manager'
require 'mongo/util/server_version' require 'mongo/util/server_version'
require 'mongo/util/ssl_socket'
require 'mongo/util/tcp_socket'
require 'mongo/util/uri_parser' require 'mongo/util/uri_parser'
require 'mongo/collection' require 'mongo/collection'
require 'mongo/networking'
require 'mongo/connection' require 'mongo/connection'
require 'mongo/repl_set_connection' require 'mongo/repl_set_connection'
require 'mongo/cursor' require 'mongo/cursor'
@ -59,5 +78,3 @@ if RUBY_PLATFORM =~ /java/
require 'mongo/gridfs/grid_io_fix' require 'mongo/gridfs/grid_io_fix'
end end
require 'mongo/gridfs/grid_file_system' require 'mongo/gridfs/grid_file_system'

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -19,6 +19,7 @@ module Mongo
# A named collection of documents in a database. # A named collection of documents in a database.
class Collection class Collection
include Mongo::Logging
attr_reader :db, :name, :pk_factory, :hint, :safe attr_reader :db, :name, :pk_factory, :hint, :safe
@ -34,6 +35,11 @@ module Mongo
# for insert, update, and remove method called on this Collection instance. If no # for insert, update, and remove method called on this Collection instance. If no
# value is provided, the default value set on this instance's DB will be used. This # value is provided, the default value set on this instance's DB will be used. This
# default can be overridden for any invocation of insert, update, or remove. # default can be overridden for any invocation of insert, update, or remove.
# @option options [:primary, :secondary] :read The default read preference for queries
# initiates from this connection object. If +:secondary+ is chosen, reads will be sent
# to one of the closest available secondary nodes. If a secondary node cannot be located, the
# read will be sent to the primary. If this option is left unspecified, the value of the read
# preference for this collection's associated Mongo::DB object will be used.
# #
# @raise [InvalidNSName] # @raise [InvalidNSName]
# if collection name is empty, contains '$', or starts or ends with '.' # if collection name is empty, contains '$', or starts or ends with '.'
@ -47,7 +53,8 @@ module Mongo
def initialize(name, db, opts={}) def initialize(name, db, opts={})
if db.is_a?(String) && name.is_a?(Mongo::DB) if db.is_a?(String) && name.is_a?(Mongo::DB)
warn "Warning: the order of parameters to initialize a collection have changed. " + warn "Warning: the order of parameters to initialize a collection have changed. " +
"Please specify the collection name first, followed by the db." "Please specify the collection name first, followed by the db. This will be made permanent" +
"in v2.0."
db, name = name, db db, name = name, db
end end
@ -84,15 +91,31 @@ module Mongo
@cache = Hash.new(0) @cache = Hash.new(0)
unless pk_factory unless pk_factory
@safe = opts.fetch(:safe, @db.safe) @safe = opts.fetch(:safe, @db.safe)
if value = opts[:read]
Mongo::Support.validate_read_preference(value)
else
value = @db.read_preference
end
@read_preference = value.is_a?(Hash) ? value.dup : value
end end
@pk_factory = pk_factory || opts[:pk] || BSON::ObjectId @pk_factory = pk_factory || opts[:pk] || BSON::ObjectId
@hint = nil @hint = nil
end end
# Indicate whether this is a capped collection.
#
# @raise [Mongo::OperationFailure]
# if the collection doesn't exist.
#
# @return [Boolean]
def capped?
@db.command({:collstats => @name})['capped'] == 1
end
# Return a sub-collection of this collection by name. If 'users' is a collection, then # Return a sub-collection of this collection by name. If 'users' is a collection, then
# 'users.comments' is a sub-collection of users. # 'users.comments' is a sub-collection of users.
# #
# @param [String] name # @param [String, Symbol] name
# the collection to return # the collection to return
# #
# @raise [Mongo::InvalidNSName] # @raise [Mongo::InvalidNSName]
@ -102,7 +125,8 @@ module Mongo
# the specified sub-collection # the specified sub-collection
def [](name) def [](name)
name = "#{self.name}.#{name}" name = "#{self.name}.#{name}"
return Collection.new(name, db) if !db.strict? || db.collection_names.include?(name) return Collection.new(name, db) if !db.strict? ||
db.collection_names.include?(name.to_s)
raise "Collection #{name} doesn't exist. Currently in strict mode." raise "Collection #{name} doesn't exist. Currently in strict mode."
end end
@ -144,20 +168,34 @@ module Mongo
# you can cut down on network traffic and decoding time. If using a Hash, keys should be field # you can cut down on network traffic and decoding time. If using a Hash, keys should be field
# names and values should be either 1 or 0, depending on whether you want to include or exclude # names and values should be either 1 or 0, depending on whether you want to include or exclude
# the given field. # the given field.
# @option opts [:primary, :secondary] :read The default read preference for queries
# initiates from this connection object. If +:secondary+ is chosen, reads will be sent
# to one of the closest available secondary nodes. If a secondary node cannot be located, the
# read will be sent to the primary. If this option is left unspecified, the value of the read
# preference for this Collection object will be used.
# @option opts [Integer] :skip number of documents to skip from the beginning of the result set # @option opts [Integer] :skip number of documents to skip from the beginning of the result set
# @option opts [Integer] :limit maximum number of documents to return # @option opts [Integer] :limit maximum number of documents to return
# @option opts [Array] :sort an array of [key, direction] pairs to sort by. Direction should # @option opts [Array] :sort an array of [key, direction] pairs to sort by. Direction should
# be specified as Mongo::ASCENDING (or :ascending / :asc) or Mongo::DESCENDING (or :descending / :desc) # be specified as Mongo::ASCENDING (or :ascending / :asc) or Mongo::DESCENDING (or :descending / :desc)
# @option opts [String, Array, OrderedHash] :hint hint for query optimizer, usually not necessary if using MongoDB > 1.1 # @option opts [String, Array, OrderedHash] :hint hint for query optimizer, usually not necessary if
# using MongoDB > 1.1
# @option opts [Boolean] :snapshot (false) if true, snapshot mode will be used for this query. # @option opts [Boolean] :snapshot (false) if true, snapshot mode will be used for this query.
# Snapshot mode assures no duplicates are returned, or objects missed, which were preset at both the start and # Snapshot mode assures no duplicates are returned, or objects missed, which were preset at both the start and
# end of the query's execution. For details see http://www.mongodb.org/display/DOCS/How+to+do+Snapshotting+in+the+Mongo+Database # end of the query's execution.
# @option opts [Boolean] :batch_size (100) the number of documents to returned by the database per GETMORE operation. A value of 0 # For details see http://www.mongodb.org/display/DOCS/How+to+do+Snapshotting+in+the+Mongo+Database
# will let the database server decide how many results to returns. This option can be ignored for most use cases. # @option opts [Boolean] :batch_size (100) the number of documents to returned by the database per
# GETMORE operation. A value of 0 will let the database server decide how many results to return.
# This option can be ignored for most use cases.
# @option opts [Boolean] :timeout (true) when +true+, the returned cursor will be subject to # @option opts [Boolean] :timeout (true) when +true+, the returned cursor will be subject to
# the normal cursor timeout behavior of the mongod process. When +false+, the returned cursor will never timeout. Note # the normal cursor timeout behavior of the mongod process. When +false+, the returned cursor will
# that disabling timeout will only work when #find is invoked with a block. This is to prevent any inadvertant failure to # never timeout. Note that disabling timeout will only work when #find is invoked with a block.
# close the cursor, as the cursor is explicitly closed when block code finishes. # This is to prevent any inadvertant failure to close the cursor, as the cursor is explicitly
# closed when block code finishes.
# @option opts [Integer] :max_scan (nil) Limit the number of items to scan on both collection scans and indexed queries..
# @option opts [Boolean] :show_disk_loc (false) Return the disk location of each query result (for debugging).
# @option opts [Boolean] :return_key (false) Return the index key used to obtain the result (for debugging).
# @option opts [Block] :transformer (nil) a block for tranforming returned documents.
# This is normally used by object mappers to convert each returned document to an instance of a class.
# #
# @raise [ArgumentError] # @raise [ArgumentError]
# if timeout is set to false and find is not invoked in a block # if timeout is set to false and find is not invoked in a block
@ -167,6 +205,7 @@ module Mongo
# #
# @core find find-instance_method # @core find find-instance_method
def find(selector={}, opts={}) def find(selector={}, opts={})
opts = opts.dup
fields = opts.delete(:fields) fields = opts.delete(:fields)
fields = ["_id"] if fields && fields.empty? fields = ["_id"] if fields && fields.empty?
skip = opts.delete(:skip) || skip || 0 skip = opts.delete(:skip) || skip || 0
@ -176,6 +215,11 @@ module Mongo
snapshot = opts.delete(:snapshot) snapshot = opts.delete(:snapshot)
batch_size = opts.delete(:batch_size) batch_size = opts.delete(:batch_size)
timeout = (opts.delete(:timeout) == false) ? false : true timeout = (opts.delete(:timeout) == false) ? false : true
max_scan = opts.delete(:max_scan)
return_key = opts.delete(:return_key)
transformer = opts.delete(:transformer)
show_disk_loc = opts.delete(:show_disk_loc)
read = opts.delete(:read) || @read_preference
if timeout == false && !block_given? if timeout == false && !block_given?
raise ArgumentError, "Collection#find must be invoked with a block when timeout is disabled." raise ArgumentError, "Collection#find must be invoked with a block when timeout is disabled."
@ -189,8 +233,22 @@ module Mongo
raise RuntimeError, "Unknown options [#{opts.inspect}]" unless opts.empty? raise RuntimeError, "Unknown options [#{opts.inspect}]" unless opts.empty?
cursor = Cursor.new(self, :selector => selector, :fields => fields, :skip => skip, :limit => limit, cursor = Cursor.new(self, {
:order => sort, :hint => hint, :snapshot => snapshot, :timeout => timeout, :batch_size => batch_size) :selector => selector,
:fields => fields,
:skip => skip,
:limit => limit,
:order => sort,
:hint => hint,
:snapshot => snapshot,
:timeout => timeout,
:batch_size => batch_size,
:transformer => transformer,
:max_scan => max_scan,
:show_disk_loc => show_disk_loc,
:return_key => return_key,
:read => read
})
if block_given? if block_given?
yield cursor yield cursor
@ -246,8 +304,6 @@ module Mongo
# for DB#error. # for DB#error.
# #
# @raise [OperationFailure] when :safe mode fails. # @raise [OperationFailure] when :safe mode fails.
#
# @see DB#remove for options that can be passed to :safe.
def save(doc, opts={}) def save(doc, opts={})
if doc.has_key?(:_id) || doc.has_key?('_id') if doc.has_key?(:_id) || doc.has_key?('_id')
id = doc[:_id] || doc['_id'] id = doc[:_id] || doc['_id']
@ -265,6 +321,10 @@ module Mongo
# #
# @return [ObjectId, Array] # @return [ObjectId, Array]
# The _id of the inserted document or a list of _ids of all inserted documents. # The _id of the inserted document or a list of _ids of all inserted documents.
# @return [[ObjectId, Array], [Hash, Array]]
# 1st, the _id of the inserted document or a list of _ids of all inserted documents.
# 2nd, a list of invalid documents.
# Return this result format only when :collect_on_error is true.
# #
# @option opts [Boolean, Hash] :safe (+false+) # @option opts [Boolean, Hash] :safe (+false+)
# run the operation in safe mode, which run a getlasterror command on the # run the operation in safe mode, which run a getlasterror command on the
@ -274,14 +334,23 @@ module Mongo
# its database object, or the current connection. See the options on # its database object, or the current connection. See the options on
# for DB#get_last_error. # for DB#get_last_error.
# #
# @see DB#remove for options that can be passed to :safe. # @option opts [Boolean] :continue_on_error (+false+) If true, then
# continue a bulk insert even if one of the documents inserted
# triggers a database assertion (as in a duplicate insert, for instance).
# If not using safe mode, the list of ids returned will
# include the object ids of all documents attempted on insert, even
# if some are rejected on error. When safe mode is
# enabled, any error will raise an OperationFailure exception.
# MongoDB v2.0+.
# @option opts [Boolean] :collect_on_error (+false+) if true, then
# collects invalid documents as an array. Note that this option changes the result format.
# #
# @core insert insert-instance_method # @core insert insert-instance_method
def insert(doc_or_docs, opts={}) def insert(doc_or_docs, opts={})
doc_or_docs = [doc_or_docs] unless doc_or_docs.is_a?(Array) doc_or_docs = [doc_or_docs] unless doc_or_docs.is_a?(Array)
doc_or_docs.collect! { |doc| @pk_factory.create_pk(doc) } doc_or_docs.collect! { |doc| @pk_factory.create_pk(doc) }
safe = opts.fetch(:safe, @safe) safe = opts.fetch(:safe, @safe)
result = insert_documents(doc_or_docs, @name, true, safe) result = insert_documents(doc_or_docs, @name, true, safe, opts)
result.size > 1 ? result : result.first result.size > 1 ? result : result.first
end end
alias_method :<<, :insert alias_method :<<, :insert
@ -311,8 +380,6 @@ module Mongo
# @raise [Mongo::OperationFailure] an exception will be raised iff safe mode is enabled # @raise [Mongo::OperationFailure] an exception will be raised iff safe mode is enabled
# and the operation fails. # and the operation fails.
# #
# @see DB#remove for options that can be passed to :safe.
#
# @core remove remove-instance_method # @core remove remove-instance_method
def remove(selector={}, opts={}) def remove(selector={}, opts={})
# Initial byte is 0. # Initial byte is 0.
@ -320,14 +387,15 @@ module Mongo
message = BSON::ByteBuffer.new("\0\0\0\0") message = BSON::ByteBuffer.new("\0\0\0\0")
BSON::BSON_RUBY.serialize_cstr(message, "#{@db.name}.#{@name}") BSON::BSON_RUBY.serialize_cstr(message, "#{@db.name}.#{@name}")
message.put_int(0) message.put_int(0)
message.put_binary(BSON::BSON_CODER.serialize(selector, false, true).to_s) message.put_binary(BSON::BSON_CODER.serialize(selector, false, true, @connection.max_bson_size).to_s)
@logger.debug("MONGODB #{@db.name}['#{@name}'].remove(#{selector.inspect})") if @logger instrument(:remove, :database => @db.name, :collection => @name, :selector => selector) do
if safe if safe
@connection.send_message_with_safe_check(Mongo::Constants::OP_DELETE, message, @db.name, nil, safe) @connection.send_message_with_safe_check(Mongo::Constants::OP_DELETE, message, @db.name, nil, safe)
else else
@connection.send_message(Mongo::Constants::OP_DELETE, message) @connection.send_message(Mongo::Constants::OP_DELETE, message)
true true
end
end end
end end
@ -366,12 +434,14 @@ module Mongo
update_options += 2 if opts[:multi] update_options += 2 if opts[:multi]
message.put_int(update_options) message.put_int(update_options)
message.put_binary(BSON::BSON_CODER.serialize(selector, false, true).to_s) message.put_binary(BSON::BSON_CODER.serialize(selector, false, true).to_s)
message.put_binary(BSON::BSON_CODER.serialize(document, false, true).to_s) message.put_binary(BSON::BSON_CODER.serialize(document, false, true, @connection.max_bson_size).to_s)
@logger.debug("MONGODB #{@db.name}['#{@name}'].update(#{selector.inspect}, #{document.inspect})") if @logger
if safe instrument(:update, :database => @db.name, :collection => @name, :selector => selector, :document => document) do
@connection.send_message_with_safe_check(Mongo::Constants::OP_UPDATE, message, @db.name, nil, safe) if safe
else @connection.send_message_with_safe_check(Mongo::Constants::OP_UPDATE, message, @db.name, nil, safe)
@connection.send_message(Mongo::Constants::OP_UPDATE, message, nil) else
@connection.send_message(Mongo::Constants::OP_UPDATE, message)
end
end end
end end
@ -418,8 +488,9 @@ module Mongo
# #
# @core indexes create_index-instance_method # @core indexes create_index-instance_method
def create_index(spec, opts={}) def create_index(spec, opts={})
opts[:dropDups] = opts.delete(:drop_dups) if opts[:drop_dups] opts[:dropDups] = opts[:drop_dups] if opts[:drop_dups]
field_spec = parse_index_spec(spec) field_spec = parse_index_spec(spec)
opts = opts.dup
name = opts.delete(:name) || generate_index_name(field_spec) name = opts.delete(:name) || generate_index_name(field_spec)
name = name.to_s if name name = name.to_s if name
@ -445,9 +516,10 @@ module Mongo
# @return [String] the name of the index. # @return [String] the name of the index.
def ensure_index(spec, opts={}) def ensure_index(spec, opts={})
now = Time.now.utc.to_i now = Time.now.utc.to_i
opts[:dropDups] = opts[:drop_dups] if opts[:drop_dups]
field_spec = parse_index_spec(spec) field_spec = parse_index_spec(spec)
name = opts.delete(:name) || generate_index_name(field_spec) name = opts[:name] || generate_index_name(field_spec)
name = name.to_s if name name = name.to_s if name
if !@cache[name] || @cache[name] <= now if !@cache[name] || @cache[name] <= now
@ -465,6 +537,9 @@ module Mongo
# #
# @core indexes # @core indexes
def drop_index(name) def drop_index(name)
if name.is_a?(Array)
return drop_index(index_name(name))
end
@cache[name.to_s] = nil @cache[name.to_s] = nil
@db.drop_index(@name, name) @db.drop_index(@name, name)
end end
@ -507,7 +582,7 @@ module Mongo
@db.command(cmd)['value'] @db.command(cmd)['value']
end end
# Perform a map/reduce operation on the current collection. # Perform a map-reduce operation on the current collection.
# #
# @param [String, BSON::Code] map a map function, written in JavaScript. # @param [String, BSON::Code] map a map function, written in JavaScript.
# @param [String, BSON::Code] reduce a reduce function, written in JavaScript. # @param [String, BSON::Code] reduce a reduce function, written in JavaScript.
@ -519,13 +594,20 @@ module Mongo
# @option opts [Integer] :limit (nil) if passing a query, number of objects to return from the collection. # @option opts [Integer] :limit (nil) if passing a query, number of objects to return from the collection.
# @option opts [String, BSON::Code] :finalize (nil) a javascript function to apply to the result set after the # @option opts [String, BSON::Code] :finalize (nil) a javascript function to apply to the result set after the
# map/reduce operation has finished. # map/reduce operation has finished.
# @option opts [String] :out (nil) the name of the output collection. If specified, the collection will not be treated as temporary. # @option opts [String] :out (nil) a valid output type. In versions of MongoDB prior to v1.7.6,
# @option opts [Boolean] :keeptemp (false) if true, the generated collection will be persisted. default is false. # this option takes the name of a collection for the output results. In versions 1.7.6 and later,
# this option specifies the output type. See the core docs for available output types.
# @option opts [Boolean] :keeptemp (false) if true, the generated collection will be persisted. The defualt
# is false. Note that this option has no effect is versions of MongoDB > v1.7.6.
# @option opts [Boolean ] :verbose (false) if true, provides statistics on job execution time. # @option opts [Boolean ] :verbose (false) if true, provides statistics on job execution time.
# @option opts [Boolean] :raw (false) if true, return the raw result object from the map_reduce command, and not # @option opts [Boolean] :raw (false) if true, return the raw result object from the map_reduce command, and not
# the instantiated collection that's returned by default. # the instantiated collection that's returned by default. Note if a collection name isn't returned in the
# map-reduce output (as, for example, when using :out => { :inline => 1 }), then you must specify this option
# or an ArgumentError will be raised.
# #
# @return [Collection] a collection containing the results of the operation. # @return [Collection, Hash] a Mongo::Collection object or a Hash with the map-reduce command's results.
#
# @raise ArgumentError if you specify { :out => { :inline => true }} but don't specify :raw => true.
# #
# @see http://www.mongodb.org/display/DOCS/MapReduce Offical MongoDB map/reduce documentation. # @see http://www.mongodb.org/display/DOCS/MapReduce Offical MongoDB map/reduce documentation.
# #
@ -540,6 +622,9 @@ module Mongo
hash['map'] = map hash['map'] = map
hash['reduce'] = reduce hash['reduce'] = reduce
hash.merge! opts hash.merge! opts
if hash[:sort]
hash[:sort] = Mongo::Support.format_order_clause(hash[:sort])
end
result = @db.command(hash) result = @db.command(hash)
unless Mongo::Support.ok?(result) unless Mongo::Support.ok?(result)
@ -548,8 +633,16 @@ module Mongo
if raw if raw
result result
elsif result["result"]
if result['result'].is_a? BSON::OrderedHash and result['result'].has_key? 'db' and result['result'].has_key? 'collection'
otherdb = @db.connection[result['result']['db']]
otherdb[result['result']['collection']]
else
@db[result["result"]]
end
else else
@db[result["result"]] raise ArgumentError, "Could not instantiate collection from result. If you specified " +
"{:out => {:inline => true}}, then you must also specify :raw => true to get the results."
end end
end end
alias :mapreduce :map_reduce alias :mapreduce :map_reduce
@ -570,11 +663,11 @@ module Mongo
# set to true. # set to true.
# #
# @return [Array] the command response consisting of grouped items. # @return [Array] the command response consisting of grouped items.
def group(key, condition={}, initial={}, reduce=nil, finalize=nil) def group(opts, condition={}, initial={}, reduce=nil, finalize=nil)
if key.is_a?(Hash) if opts.is_a?(Hash)
return new_group(key) return new_group(opts)
else else
warn "Collection#group no longer take a list of paramters. This usage is deprecated." + warn "Collection#group no longer take a list of parameters. This usage is deprecated and will be remove in v2.0." +
"Check out the new API at http://api.mongodb.org/ruby/current/Mongo/Collection.html#group-instance_method" "Check out the new API at http://api.mongodb.org/ruby/current/Mongo/Collection.html#group-instance_method"
end end
@ -589,19 +682,19 @@ module Mongo
} }
} }
if key.is_a?(Symbol) if opts.is_a?(Symbol)
raise MongoArgumentError, "Group takes either an array of fields to group by or a JavaScript function" + raise MongoArgumentError, "Group takes either an array of fields to group by or a JavaScript function" +
"in the form of a String or BSON::Code." "in the form of a String or BSON::Code."
end end
unless key.nil? unless opts.nil?
if key.is_a? Array if opts.is_a? Array
key_type = "key" key_type = "key"
key_value = {} key_value = {}
key.each { |k| key_value[k] = 1 } opts.each { |k| key_value[k] = 1 }
else else
key_type = "$keyf" key_type = "$keyf"
key_value = key.is_a?(BSON::Code) ? key : BSON::Code.new(key) key_value = opts.is_a?(BSON::Code) ? opts : BSON::Code.new(opts)
end end
group_command["group"][key_type] = key_value group_command["group"][key_type] = key_value
@ -621,6 +714,13 @@ module Mongo
end end
end end
# The value of the read preference. This will be
# either +:primary+, +:secondary+, or an object
# representing the tags to be read from.
def read_preference
@read_preference
end
private private
def new_group(opts={}) def new_group(opts={})
@ -757,9 +857,15 @@ module Mongo
# Get the number of documents in this collection. # Get the number of documents in this collection.
# #
# @option opts [Hash] :query ({}) A query selector for filtering the documents counted.
# @option opts [Integer] :skip (nil) The number of documents to skip.
# @option opts [Integer] :limit (nil) The number of documents to limit.
#
# @return [Integer] # @return [Integer]
def count def count(opts={})
find().count() find(opts[:query],
:skip => opts[:skip],
:limit => opts[:limit]).count(true)
end end
alias :size :count alias :size :count
@ -783,13 +889,21 @@ module Mongo
private private
def index_name(spec)
field_spec = parse_index_spec(spec)
index_information.each do |index|
return index[0] if index[1]['key'] == field_spec
end
nil
end
def parse_index_spec(spec) def parse_index_spec(spec)
field_spec = BSON::OrderedHash.new field_spec = BSON::OrderedHash.new
if spec.is_a?(String) || spec.is_a?(Symbol) if spec.is_a?(String) || spec.is_a?(Symbol)
field_spec[spec.to_s] = 1 field_spec[spec.to_s] = 1
elsif spec.is_a?(Array) && spec.all? {|field| field.is_a?(Array) } elsif spec.is_a?(Array) && spec.all? {|field| field.is_a?(Array) }
spec.each do |f| spec.each do |f|
if [Mongo::ASCENDING, Mongo::DESCENDING, Mongo::GEO2D].include?(f[1]) if [Mongo::ASCENDING, Mongo::DESCENDING, Mongo::GEO2D, Mongo::GEOHAYSTACK].include?(f[1])
field_spec[f[0].to_s] = f[1] field_spec[f[0].to_s] = f[1]
else else
raise MongoArgumentError, "Invalid index field #{f[1].inspect}; " + raise MongoArgumentError, "Invalid index field #{f[1].inspect}; " +
@ -829,22 +943,51 @@ module Mongo
# Sends a Mongo::Constants::OP_INSERT message to the database. # Sends a Mongo::Constants::OP_INSERT message to the database.
# Takes an array of +documents+, an optional +collection_name+, and a # Takes an array of +documents+, an optional +collection_name+, and a
# +check_keys+ setting. # +check_keys+ setting.
def insert_documents(documents, collection_name=@name, check_keys=true, safe=false) def insert_documents(documents, collection_name=@name, check_keys=true, safe=false, flags={})
# Initial byte is 0. if flags[:continue_on_error]
message = BSON::ByteBuffer.new("\0\0\0\0") message = BSON::ByteBuffer.new
BSON::BSON_RUBY.serialize_cstr(message, "#{@db.name}.#{collection_name}") message.put_int(1)
documents.each do |doc| else
message.put_binary(BSON::BSON_CODER.serialize(doc, check_keys, true).to_s) message = BSON::ByteBuffer.new("\0\0\0\0")
end end
collect_on_error = !!flags[:collect_on_error]
error_docs = [] if collect_on_error
BSON::BSON_RUBY.serialize_cstr(message, "#{@db.name}.#{collection_name}")
documents =
if collect_on_error
documents.select do |doc|
begin
message.put_binary(BSON::BSON_CODER.serialize(doc, check_keys, true, @connection.max_bson_size).to_s)
true
rescue StandardError # StandardError will be replaced with BSONError
doc.delete(:_id)
error_docs << doc
false
end
end
else
documents.each do |doc|
message.put_binary(BSON::BSON_CODER.serialize(doc, check_keys, true, @connection.max_bson_size).to_s)
end
end
raise InvalidOperation, "Exceded maximum insert size of 16,000,000 bytes" if message.size > 16_000_000 raise InvalidOperation, "Exceded maximum insert size of 16,000,000 bytes" if message.size > 16_000_000
@logger.debug("MONGODB #{@db.name}['#{collection_name}'].insert(#{documents.inspect})") if @logger instrument(:insert, :database => @db.name, :collection => collection_name, :documents => documents) do
if safe if safe
@connection.send_message_with_safe_check(Mongo::Constants::OP_INSERT, message, @db.name, nil, safe) @connection.send_message_with_safe_check(Mongo::Constants::OP_INSERT, message, @db.name, nil, safe)
else else
@connection.send_message(Mongo::Constants::OP_INSERT, message, nil) @connection.send_message(Mongo::Constants::OP_INSERT, message)
end
end
doc_ids = documents.collect { |o| o[:_id] || o['_id'] }
if collect_on_error
return doc_ids, error_docs
else
doc_ids
end end
documents.collect { |o| o[:_id] || o['_id'] }
end end
def generate_index_name(spec) def generate_index_name(spec)

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -19,29 +19,34 @@
require 'set' require 'set'
require 'socket' require 'socket'
require 'thread' require 'thread'
module Mongo module Mongo
# Instantiates and manages connections to MongoDB. # Instantiates and manages self.connections to MongoDB.
class Connection class Connection
TCPSocket = ::TCPSocket include Mongo::Logging
include Mongo::Networking
TCPSocket = Mongo::TCPSocket
Mutex = ::Mutex Mutex = ::Mutex
ConditionVariable = ::ConditionVariable ConditionVariable = ::ConditionVariable
# Abort connections if a ConnectionError is raised.
Thread.abort_on_exception = true Thread.abort_on_exception = true
DEFAULT_HOST = 'localhost'
DEFAULT_PORT = 27017 DEFAULT_PORT = 27017
STANDARD_HEADER_SIZE = 16 GENERIC_OPTS = [:ssl, :auths, :pool_size, :pool_timeout, :timeout, :op_timeout, :connect_timeout, :safe, :logger, :connect]
RESPONSE_HEADER_SIZE = 20 CONNECTION_OPTS = [:slave_ok]
attr_reader :logger, :size, :auths, :primary, :safe, :primary_pool, :host_to_try mongo_thread_local_accessor :connections
# Counter for generating unique request ids. attr_reader :logger, :size, :auths, :primary, :safe, :host_to_try,
@@current_request_id = 0 :pool_size, :connect_timeout, :pool_timeout,
:primary_pool, :socket_class, :op_timeout
# Create a connection to single MongoDB instance. # Create a connection to single MongoDB instance.
# #
# If no args are provided, it will check <code>ENV["MONGODB_URI"]</code>.
#
# You may specify whether connection to slave is permitted. # You may specify whether connection to slave is permitted.
# In all cases, the default host is "localhost" and the default port is 27017. # In all cases, the default host is "localhost" and the default port is 27017.
# #
@ -52,7 +57,7 @@ module Mongo
# Connection#arbiters. This is useful if your application needs to connect manually to nodes other # Connection#arbiters. This is useful if your application needs to connect manually to nodes other
# than the primary. # than the primary.
# #
# @param [String, Hash] host. # @param [String, Hash] host
# @param [Integer] port specify a port number here if only one host is being specified. # @param [Integer] port specify a port number here if only one host is being specified.
# #
# @option opts [Boolean, Hash] :safe (false) Set the default safe-mode options # @option opts [Boolean, Hash] :safe (false) Set the default safe-mode options
@ -61,40 +66,67 @@ module Mongo
# on initialization. # on initialization.
# @option opts [Boolean] :slave_ok (false) Must be set to +true+ when connecting # @option opts [Boolean] :slave_ok (false) Must be set to +true+ when connecting
# to a single, slave node. # to a single, slave node.
# @option opts [Logger, #debug] :logger (nil) Logger instance to receive driver operation log. # @option opts [Logger, #debug] :logger (nil) A Logger instance for debugging driver ops. Note that
# @option opts [Integer] :pool_size (1) The maximum number of socket connections allowed per # logging negatively impacts performance; therefore, it should not be used for high-performance apps.
# @option opts [Integer] :pool_size (1) The maximum number of socket self.connections allowed per
# connection pool. Note: this setting is relevant only for multi-threaded applications. # connection pool. Note: this setting is relevant only for multi-threaded applications.
# @option opts [Float] :timeout (5.0) When all of the connections a pool are checked out, # @option opts [Float] :timeout (5.0) When all of the self.connections a pool are checked out,
# this is the number of seconds to wait for a new connection to be released before throwing an exception. # this is the number of seconds to wait for a new connection to be released before throwing an exception.
# Note: this setting is relevant only for multi-threaded applications (which in Ruby are rare). # Note: this setting is relevant only for multi-threaded applications (which in Ruby are rare).
# @option opts [Float] :op_timeout (nil) The number of seconds to wait for a read operation to time out.
# Disabled by default.
# @option opts [Float] :connect_timeout (nil) The number of seconds to wait before timing out a
# connection attempt.
# @option opts [Boolean] :ssl (false) If true, create the connection to the server using SSL.
#
# @example localhost, 27017 (or <code>ENV["MONGODB_URI"]</code> if available)
# Mongo::Connection.new
# #
# @example localhost, 27017 # @example localhost, 27017
# Connection.new # Mongo::Connection.new("localhost")
# #
# @example localhost, 27017 # @example localhost, 3000, max 5 self.connections, with max 5 seconds of wait time.
# Connection.new("localhost") # Mongo::Connection.new("localhost", 3000, :pool_size => 5, :timeout => 5)
#
# @example localhost, 3000, max 5 connections, with max 5 seconds of wait time.
# Connection.new("localhost", 3000, :pool_size => 5, :timeout => 5)
# #
# @example localhost, 3000, where this node may be a slave # @example localhost, 3000, where this node may be a slave
# Connection.new("localhost", 3000, :slave_ok => true) # Mongo::Connection.new("localhost", 3000, :slave_ok => true)
# #
# @see http://api.mongodb.org/ruby/current/file.REPLICA_SETS.html Replica sets in Ruby # @see http://api.mongodb.org/ruby/current/file.REPLICA_SETS.html Replica sets in Ruby
# #
# @raise [ReplicaSetConnectionError] This is raised if a replica set name is specified and the # @raise [ReplicaSetConnectionError] This is raised if a replica set name is specified and the
# driver fails to connect to a replica set with that name. # driver fails to connect to a replica set with that name.
# #
# @core connections # @raise [MongoArgumentError] If called with no arguments and <code>ENV["MONGODB_URI"]</code> implies a replica set.
#
# @core self.connections
def initialize(host=nil, port=nil, opts={}) def initialize(host=nil, port=nil, opts={})
@host_to_try = format_pair(host, port) if host.nil? and ENV.has_key?('MONGODB_URI')
parser = URIParser.new ENV['MONGODB_URI'], opts
if parser.replicaset?
raise MongoArgumentError, "Mongo::Connection.new called with no arguments, but ENV['MONGODB_URI'] implies a replica set."
end
opts = parser.connection_options
@host_to_try = [parser.host, parser.port]
elsif host.is_a?(String)
@host_to_try = [host, (port || DEFAULT_PORT).to_i]
else
@host_to_try = [DEFAULT_HOST, DEFAULT_PORT]
end
# Host and port of current master. # Host and port of current master.
@host = @port = nil @host = @port = nil
# slave_ok can be true only if one node is specified # Default maximum BSON object size
@slave_ok = opts[:slave_ok] @max_bson_size = Mongo::DEFAULT_MAX_BSON_SIZE
# Lock for request ids.
@id_lock = Mutex.new
# Connection pool for primay node
@primary = nil
@primary_pool = nil
check_opts(opts)
setup(opts) setup(opts)
end end
@ -115,23 +147,24 @@ module Mongo
# to send reads to. # to send reads to.
# #
# @example # @example
# Connection.multi([["db1.example.com", 27017], ["db2.example.com", 27017]]) # Mongo::Connection.multi([["db1.example.com", 27017], ["db2.example.com", 27017]])
# #
# @example This connection will read from a random secondary node. # @example This connection will read from a random secondary node.
# Connection.multi([["db1.example.com", 27017], ["db2.example.com", 27017], ["db3.example.com", 27017]], # Mongo::Connection.multi([["db1.example.com", 27017], ["db2.example.com", 27017], ["db3.example.com", 27017]],
# :read_secondary => true) # :read_secondary => true)
# #
# @return [Mongo::Connection] # @return [Mongo::Connection]
# #
# @deprecated # @deprecated
def self.multi(nodes, opts={}) def self.multi(nodes, opts={})
warn "Connection.multi is now deprecated. Please use ReplSetConnection.new instead." warn "Connection.multi is now deprecated and will be removed in v2.0. Please use ReplSetConnection.new instead."
nodes << opts ReplSetConnection.new(*(nodes+[opts]))
ReplSetConnection.new(*nodes)
end end
# Initialize a connection to MongoDB using the MongoDB URI spec: # Initialize a connection to MongoDB using the MongoDB URI spec.
#
# Since Connection.new cannot be used with any <code>ENV["MONGODB_URI"]</code> that has multiple hosts (implying a replicaset), you may use this when the type of your connection varies by environment and should be determined solely from <code>ENV["MONGODB_URI"]</code>.
# #
# @param uri [String] # @param uri [String]
# A string of the format mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/database] # A string of the format mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/database]
@ -139,21 +172,23 @@ module Mongo
# @param opts Any of the options available for Connection.new # @param opts Any of the options available for Connection.new
# #
# @return [Mongo::Connection, Mongo::ReplSetConnection] # @return [Mongo::Connection, Mongo::ReplSetConnection]
def self.from_uri(string, extra_opts={}) def self.from_uri(uri = ENV['MONGODB_URI'], extra_opts={})
uri = URIParser.new(string) parser = URIParser.new uri, extra_opts
opts = uri.connection_options parser.connection
opts.merge!(extra_opts) end
if uri.nodes.length == 1 # The host name used for this connection.
opts.merge!({:auths => uri.auths}) #
Connection.new(uri.nodes[0][0], uri.nodes[0][1], opts) # @return [String]
elsif uri.nodes.length > 1 def host
nodes = uri.nodes.clone @primary_pool.host
nodes_with_opts = nodes << opts end
ReplSetConnection.new(*nodes_with_opts)
else # The port used for this connection.
raise MongoArgumentError, "No nodes specified. Please ensure that you've provided at least one node." #
end # @return [Integer]
def port
@primary_pool.port
end end
# Fsync, then lock the mongod process against writes. Use this to get # Fsync, then lock the mongod process against writes. Use this to get
@ -188,10 +223,11 @@ module Mongo
# #
# @raise [AuthenticationError] raises an exception if any one # @raise [AuthenticationError] raises an exception if any one
# authentication fails. # authentication fails.
def apply_saved_authentication def apply_saved_authentication(opts={})
return false if @auths.empty? return false if @auths.empty?
@auths.each do |auth| @auths.each do |auth|
self[auth['db_name']].authenticate(auth['username'], auth['password'], false) self[auth['db_name']].issue_authentication(auth['username'], auth['password'], false,
:socket => opts[:socket])
end end
true true
end end
@ -241,6 +277,14 @@ module Mongo
true true
end end
def authenticate_pools
@primary_pool.authenticate_existing
end
def logout_pools(db)
@primary_pool.logout_existing(db)
end
# Return a hash with all database names # Return a hash with all database names
# and their respective sizes on disk. # and their respective sizes on disk.
# #
@ -280,7 +324,7 @@ module Mongo
# #
# @core databases []-instance_method # @core databases []-instance_method
def [](db_name) def [](db_name)
DB.new(db_name, self, :safe => @safe) DB.new(db_name, self)
end end
# Drop a database. # Drop a database.
@ -298,7 +342,7 @@ module Mongo
# @param [String] from_host host of the 'from' database. # @param [String] from_host host of the 'from' database.
# @param [String] username username for authentication against from_db (>=1.3.x). # @param [String] username username for authentication against from_db (>=1.3.x).
# @param [String] password password for authentication against from_db (>=1.3.x). # @param [String] password password for authentication against from_db (>=1.3.x).
def copy_database(from, to, from_host="localhost", username=nil, password=nil) def copy_database(from, to, from_host=DEFAULT_HOST, username=nil, password=nil)
oh = BSON::OrderedHash.new oh = BSON::OrderedHash.new
oh[:copydb] = 1 oh[:copydb] = 1
oh[:fromhost] = from_host oh[:fromhost] = from_host
@ -319,13 +363,22 @@ module Mongo
self["admin"].command(oh) self["admin"].command(oh)
end end
# Get the build information for the current connection. # Checks if a server is alive. This command will return immediately
# even if the server is in a lock.
#
# @return [Hash]
def ping
self["admin"].command({:ping => 1})
end
# Get the build information for the current connection.
# #
# @return [Hash] # @return [Hash]
def server_info def server_info
self["admin"].command({:buildinfo => 1}) self["admin"].command({:buildinfo => 1})
end end
# Get the build version of the current server. # Get the build version of the current server.
# #
# @return [Mongo::ServerVersion] # @return [Mongo::ServerVersion]
@ -341,89 +394,6 @@ module Mongo
@slave_ok @slave_ok
end end
# Send a message to MongoDB, adding the necessary headers.
#
# @param [Integer] operation a MongoDB opcode.
# @param [BSON::ByteBuffer] message a message to send to the database.
#
# @return [Integer] number of bytes sent
def send_message(operation, message, log_message=nil)
begin
add_message_headers(message, operation)
packed_message = message.to_s
socket = checkout_writer
send_message_on_socket(packed_message, socket)
ensure
checkin_writer(socket)
end
end
# Sends a message to the database, waits for a response, and raises
# an exception if the operation has failed.
#
# @param [Integer] operation a MongoDB opcode.
# @param [BSON::ByteBuffer] message a message to send to the database.
# @param [String] db_name the name of the database. used on call to get_last_error.
# @param [Hash] last_error_params parameters to be sent to getLastError. See DB#error for
# available options.
#
# @see DB#get_last_error for valid last error params.
#
# @return [Hash] The document returned by the call to getlasterror.
def send_message_with_safe_check(operation, message, db_name, log_message=nil, last_error_params=false)
docs = num_received = cursor_id = ''
add_message_headers(message, operation)
last_error_message = BSON::ByteBuffer.new
build_last_error_message(last_error_message, db_name, last_error_params)
last_error_id = add_message_headers(last_error_message, Mongo::Constants::OP_QUERY)
packed_message = message.append!(last_error_message).to_s
begin
sock = checkout_writer
@safe_mutexes[sock].synchronize do
send_message_on_socket(packed_message, sock)
docs, num_received, cursor_id = receive(sock, last_error_id)
end
ensure
checkin_writer(sock)
end
if num_received == 1 && (error = docs[0]['err'] || docs[0]['errmsg'])
close if error == "not master"
error = "wtimeout" if error == "timeout"
raise Mongo::OperationFailure, docs[0]['code'].to_s + ': ' + error
end
docs[0]
end
# Sends a message to the database and waits for the response.
#
# @param [Integer] operation a MongoDB opcode.
# @param [BSON::ByteBuffer] message a message to send to the database.
# @param [Socket] socket a socket to use in lieu of checking out a new one.
#
# @return [Array]
# An array whose indexes include [0] documents returned, [1] number of document received,
# and [3] a cursor_id.
def receive_message(operation, message, log_message=nil, socket=nil, command=false)
request_id = add_message_headers(message, operation)
packed_message = message.to_s
begin
sock = socket || (command ? checkout_writer : checkout_reader)
result = ''
@safe_mutexes[sock].synchronize do
send_message_on_socket(packed_message, sock)
result = receive(sock, request_id)
end
ensure
command ? checkin_writer(sock) : checkin_reader(sock)
end
result
end
# Create a new socket and attempt to connect to master. # Create a new socket and attempt to connect to master.
# If successful, sets host and port to master and returns the socket. # If successful, sets host and port to master and returns the socket.
# #
@ -432,7 +402,7 @@ module Mongo
# #
# @raise [ConnectionFailure] if unable to connect to any host or port. # @raise [ConnectionFailure] if unable to connect to any host or port.
def connect def connect
reset_connection close
config = check_is_master(@host_to_try) config = check_is_master(@host_to_try)
if config if config
@ -442,25 +412,37 @@ module Mongo
@read_primary = false @read_primary = false
end end
@max_bson_size = config['maxBsonObjectSize'] || Mongo::DEFAULT_MAX_BSON_SIZE
set_primary(@host_to_try) set_primary(@host_to_try)
end end
if connected? if !connected?
BSON::BSON_CODER.update_max_bson_size(self)
else
raise ConnectionFailure, "Failed to connect to a master node at #{@host_to_try[0]}:#{@host_to_try[1]}" raise ConnectionFailure, "Failed to connect to a master node at #{@host_to_try[0]}:#{@host_to_try[1]}"
end end
end end
alias :reconnect :connect
def connecting?
@nodes_to_try.length > 0
end
# It's possible that we defined connected as all nodes being connected??? # It's possible that we defined connected as all nodes being connected???
# NOTE: Do check if this needs to be more stringent. # NOTE: Do check if this needs to be more stringent.
# Probably not since if any node raises a connection failure, all nodes will be closed. # Probably not since if any node raises a connection failure, all nodes will be closed.
def connected? def connected?
@primary_pool && @primary_pool.host && @primary_pool.port @primary_pool && !@primary_pool.closed?
end
# Determine if the connection is active. In a normal case the *server_info* operation
# will be performed without issues, but if the connection was dropped by the server or
# for some reason the sockets are unsynchronized, a ConnectionFailure will be raised and
# the return will be false.
#
# @return [Boolean]
def active?
return false unless connected?
ping
true
rescue ConnectionFailure
false
end end
# Determine whether we're reading from a primary node. If false, # Determine whether we're reading from a primary node. If false,
@ -470,11 +452,29 @@ module Mongo
def read_primary? def read_primary?
@read_primary @read_primary
end end
alias :primary? :read_primary?
# The socket pool that this connection reads from.
#
# @return [Mongo::Pool]
def read_pool
@primary_pool
end
# The value of the read preference.
def read_preference
if slave_ok?
:secondary
else
:primary
end
end
# Close the connection to the database. # Close the connection to the database.
def close def close
@primary_pool.close if @primary_pool @primary_pool.close if @primary_pool
@primary_pool = nil @primary_pool = nil
@primary = nil
end end
# Returns the maximum BSON object size as returned by the core server. # Returns the maximum BSON object size as returned by the core server.
@ -482,8 +482,13 @@ module Mongo
# #
# @return [Integer] # @return [Integer]
def max_bson_size def max_bson_size
config = self['admin'].command({:ismaster => 1}) @max_bson_size
config['maxBsonObjectSize'] || Mongo::DEFAULT_MAX_BSON_SIZE end
# Prefer primary pool but fall back to secondary
def checkout_best
connect unless connected?
@primary_pool.checkout
end end
# Checkout a socket for reading (i.e., a secondary node). # Checkout a socket for reading (i.e., a secondary node).
@ -503,69 +508,90 @@ module Mongo
# Checkin a socket used for reading. # Checkin a socket used for reading.
# Note: this is overridden in ReplSetConnection. # Note: this is overridden in ReplSetConnection.
def checkin_reader(socket) def checkin_reader(socket)
if @primary_pool checkin(socket)
@primary_pool.checkin(socket)
end
end end
# Checkin a socket used for writing. # Checkin a socket used for writing.
# Note: this is overridden in ReplSetConnection. # Note: this is overridden in ReplSetConnection.
def checkin_writer(socket) def checkin_writer(socket)
if @primary_pool checkin(socket)
@primary_pool.checkin(socket) end
# Check a socket back into its pool.
def checkin(socket)
if @primary_pool && socket
socket.pool.checkin(socket)
end
end
# Excecutes block with the best available socket
def best_available_socket
socket = nil
begin
socket = checkout_best
yield socket
ensure
if socket
socket.pool.checkin(socket)
end
end end
end end
protected protected
# Generic initialization code. def valid_opts
GENERIC_OPTS + CONNECTION_OPTS
end
def check_opts(opts)
bad_opts = opts.keys.reject { |opt| valid_opts.include?(opt) }
unless bad_opts.empty?
bad_opts.each {|opt| warn "#{opt} is not a valid option for #{self.class}"}
end
end
# Parse option hash
def setup(opts) def setup(opts)
# slave_ok can be true only if one node is specified
@slave_ok = opts[:slave_ok]
# Determine whether to use SSL.
@ssl = opts.fetch(:ssl, false)
if @ssl
@socket_class = Mongo::SSLSocket
else
@socket_class = Mongo::TCPSocket
end
# Authentication objects # Authentication objects
@auths = opts.fetch(:auths, []) @auths = opts.fetch(:auths, [])
# Lock for request ids.
@id_lock = Mutex.new
# Pool size and timeout. # Pool size and timeout.
@pool_size = opts[:pool_size] || 1 @pool_size = opts[:pool_size] || 1
@timeout = opts[:timeout] || 5.0 if opts[:timeout]
warn "The :timeout option has been deprecated " +
"and will be removed in the 2.0 release. Use :pool_timeout instead."
end
@pool_timeout = opts[:pool_timeout] || opts[:timeout] || 5.0
# Mutex for synchronizing pool access # Timeout on socket read operation.
@connection_mutex = Mutex.new @op_timeout = opts[:op_timeout] || nil
# Timeout on socket connect.
@connect_timeout = opts[:connect_timeout] || nil
# Global safe option. This is false by default. # Global safe option. This is false by default.
@safe = opts[:safe] || false @safe = opts[:safe] || false
# Create a mutex when a new key, in this case a socket, @logger = opts.fetch(:logger, nil)
# is added to the hash.
@safe_mutexes = Hash.new { |h, k| h[k] = Mutex.new }
# Condition variable for signal and wait if @logger
@queue = ConditionVariable.new write_logging_startup_message
end
# Connection pool for primay node if opts.fetch(:connect, true)
@primary = nil connect
@primary_pool = nil
@logger = opts[:logger] || nil
should_connect = opts.fetch(:connect, true)
connect if should_connect
end
## Configuration helper methods
# Returns a host-port pair.
#
# @return [Array]
#
# @private
def format_pair(host, port)
case host
when String
[host, port ? port.to_i : DEFAULT_PORT]
when nil
['localhost', DEFAULT_PORT]
end end
end end
@ -578,205 +604,32 @@ module Mongo
# TODO: evaluate whether this method is actually necessary # TODO: evaluate whether this method is actually necessary
def reset_connection def reset_connection
close close
@primary = nil
end end
def check_is_master(node) def check_is_master(node)
begin begin
host, port = *node host, port = *node
socket = TCPSocket.new(host, port) socket = nil
socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) config = nil
config = self['admin'].command({:ismaster => 1}, :sock => socket) socket = @socket_class.new(host, port, @op_timeout, @connect_timeout)
rescue OperationFailure, SocketError, SystemCallError, IOError => ex config = self['admin'].command({:ismaster => 1}, :socket => socket)
rescue OperationFailure, SocketError, SystemCallError, IOError
close close
ensure ensure
socket.close if socket if socket
socket.close unless socket.closed?
end
end end
config config
end end
# Set the specified node as primary, and # Set the specified node as primary.
# apply any saved authentication credentials.
def set_primary(node) def set_primary(node)
host, port = *node host, port = *node
@primary = [host, port] @primary = [host, port]
@primary_pool = Pool.new(self, host, port, :size => @pool_size, :timeout => @timeout) @primary_pool = Pool.new(self, host, port, :size => @pool_size, :timeout => @pool_timeout)
apply_saved_authentication
end
## Low-level connection methods.
def receive(sock, expected_response)
begin
receive_header(sock, expected_response)
number_received, cursor_id = receive_response_header(sock)
read_documents(number_received, cursor_id, sock)
rescue Mongo::ConnectionFailure => ex
close
raise ex
end
end
def receive_header(sock, expected_response)
header = receive_message_on_socket(16, sock)
size, request_id, response_to = header.unpack('VVV')
if expected_response != response_to
raise Mongo::ConnectionFailure, "Expected response #{expected_response} but got #{response_to}"
end
unless header.size == STANDARD_HEADER_SIZE
raise "Short read for DB response header: " +
"expected #{STANDARD_HEADER_SIZE} bytes, saw #{header.size}"
end
nil
end
def receive_response_header(sock)
header_buf = receive_message_on_socket(RESPONSE_HEADER_SIZE, sock)
if header_buf.length != RESPONSE_HEADER_SIZE
raise "Short read for DB response header; " +
"expected #{RESPONSE_HEADER_SIZE} bytes, saw #{header_buf.length}"
end
flags, cursor_id_a, cursor_id_b, starting_from, number_remaining = header_buf.unpack('VVVVV')
check_response_flags(flags)
cursor_id = (cursor_id_b << 32) + cursor_id_a
[number_remaining, cursor_id]
end
def check_response_flags(flags)
if flags & Mongo::Constants::REPLY_CURSOR_NOT_FOUND != 0
raise Mongo::OperationFailure, "Query response returned CURSOR_NOT_FOUND. " +
"Either an invalid cursor was specified, or the cursor may have timed out on the server."
elsif flags & Mongo::Constants::REPLY_QUERY_FAILURE != 0
# Getting odd failures when a exception is raised here.
end
end
def read_documents(number_received, cursor_id, sock)
docs = []
number_remaining = number_received
while number_remaining > 0 do
buf = receive_message_on_socket(4, sock)
size = buf.unpack('V')[0]
buf << receive_message_on_socket(size - 4, sock)
number_remaining -= 1
docs << BSON::BSON_CODER.deserialize(buf)
end
[docs, number_received, cursor_id]
end
# Constructs a getlasterror message. This method is used exclusively by
# Connection#send_message_with_safe_check.
#
# Because it modifies message by reference, we don't need to return it.
def build_last_error_message(message, db_name, opts)
message.put_int(0)
BSON::BSON_RUBY.serialize_cstr(message, "#{db_name}.$cmd")
message.put_int(0)
message.put_int(-1)
cmd = BSON::OrderedHash.new
cmd[:getlasterror] = 1
if opts.is_a?(Hash)
opts.assert_valid_keys(:w, :wtimeout, :fsync)
cmd.merge!(opts)
end
message.put_binary(BSON::BSON_CODER.serialize(cmd, false).to_s)
nil
end
# Prepares a message for transmission to MongoDB by
# constructing a valid message header.
#
# Note: this method modifies message by reference.
#
# @return [Integer] the request id used in the header
def add_message_headers(message, operation)
headers = [
# Message size.
16 + message.size,
# Unique request id.
request_id = get_request_id,
# Response id.
0,
# Opcode.
operation
].pack('VVVV')
message.prepend!(headers)
request_id
end
# Increment and return the next available request id.
#
# return [Integer]
def get_request_id
request_id = ''
@id_lock.synchronize do
request_id = @@current_request_id += 1
end
request_id
end
# Low-level method for sending a message on a socket.
# Requires a packed message and an available socket,
#
# @return [Integer] number of bytes sent
def send_message_on_socket(packed_message, socket)
begin
total_bytes_sent = socket.send(packed_message, 0)
if total_bytes_sent != packed_message.size
packed_message.slice!(0, total_bytes_sent)
while packed_message.size > 0
byte_sent = socket.send(packed_message, 0)
total_bytes_sent += byte_sent
packed_message.slice!(0, byte_sent)
end
end
total_bytes_sent
rescue => ex
close
raise ConnectionFailure, "Operation failed with the following exception: #{ex}"
end
end
# Low-level method for receiving data from socket.
# Requires length and an available socket.
def receive_message_on_socket(length, socket)
begin
message = socket.read(length)
raise ConnectionFailure, "connection closed" unless message.length > 0
if message.length < length
chunk = new_binary_string
while message.length < length
socket.read(length - message.length, chunk)
raise ConnectionFailure, "connection closed" unless chunk.length > 0
message << chunk
end
end
rescue => ex
close
raise ConnectionFailure, "Operation failed with the following exception: #{ex}"
end
message
end
if defined?(Encoding)
BINARY_ENCODING = Encoding.find("binary")
def new_binary_string
"".force_encoding(BINARY_ENCODING)
end
else
def new_binary_string
""
end
end end
end end
end end

View File

@ -1,6 +1,6 @@
# encoding: UTF-8 # encoding: UTF-8
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -18,12 +18,15 @@ module Mongo
# A cursor over query results. Returned objects are hashes. # A cursor over query results. Returned objects are hashes.
class Cursor class Cursor
include Mongo::Conversions
include Enumerable include Enumerable
include Mongo::Constants
include Mongo::Conversions
include Mongo::Logging
attr_reader :collection, :selector, :fields, attr_reader :collection, :selector, :fields,
:order, :hint, :snapshot, :timeout, :order, :hint, :snapshot, :timeout,
:full_collection_name :full_collection_name, :transformer,
:options, :cursor_id, :show_disk_loc
# Create a new cursor. # Create a new cursor.
# #
@ -34,42 +37,97 @@ module Mongo
# #
# @core cursors constructor_details # @core cursors constructor_details
def initialize(collection, opts={}) def initialize(collection, opts={})
@cursor_id = nil
@db = collection.db @db = collection.db
@collection = collection @collection = collection
@connection = @db.connection @connection = @db.connection
@logger = @connection.logger @logger = @connection.logger
# Query selector
@selector = opts[:selector] || {} @selector = opts[:selector] || {}
# Special operators that form part of $query
@order = opts[:order]
@explain = opts[:explain]
@hint = opts[:hint]
@snapshot = opts[:snapshot]
@max_scan = opts.fetch(:max_scan, nil)
@return_key = opts.fetch(:return_key, nil)
@show_disk_loc = opts.fetch(:show_disk_loc, nil)
# Wire-protocol settings
@fields = convert_fields_for_query(opts[:fields]) @fields = convert_fields_for_query(opts[:fields])
@skip = opts[:skip] || 0 @skip = opts[:skip] || 0
@limit = opts[:limit] || 0 @limit = opts[:limit] || 0
@order = opts[:order]
@hint = opts[:hint]
@snapshot = opts[:snapshot]
@timeout = opts.fetch(:timeout, true)
@explain = opts[:explain]
@socket = opts[:socket]
@tailable = opts[:tailable] || false @tailable = opts[:tailable] || false
@timeout = opts.fetch(:timeout, true)
@options = 0
# Use this socket for the query
@socket = opts[:socket]
@closed = false @closed = false
@query_run = false @query_run = false
@transformer = opts[:transformer]
if value = opts[:read]
Mongo::Support.validate_read_preference(value)
else
value = collection.read_preference
end
@read_preference = value.is_a?(Hash) ? value.dup : value
batch_size(opts[:batch_size] || 0) batch_size(opts[:batch_size] || 0)
@full_collection_name = "#{@collection.db.name}.#{@collection.name}" @full_collection_name = "#{@collection.db.name}.#{@collection.name}"
@cache = [] @cache = []
@returned = 0 @returned = 0
if(!@timeout)
add_option(OP_QUERY_NO_CURSOR_TIMEOUT)
end
if(@read_preference != :primary)
add_option(OP_QUERY_SLAVE_OK)
end
if(@tailable)
add_option(OP_QUERY_TAILABLE)
end
if @collection.name =~ /^\$cmd/ || @collection.name =~ /^system/ if @collection.name =~ /^\$cmd/ || @collection.name =~ /^system/
@command = true @command = true
else else
@command = false @command = false
end end
@checkin_read_pool = false
@checkin_connection = false
@read_pool = nil
end
# Guess whether the cursor is alive on the server.
#
# Note that this method only checks whether we have
# a cursor id. The cursor may still have timed out
# on the server. This will be indicated in the next
# call to Cursor#next.
#
# @return [Boolean]
def alive?
@cursor_id && @cursor_id != 0
end end
# Get the next document specified the cursor options. # Get the next document specified the cursor options.
# #
# @return [Hash, Nil] the next document or Nil if no documents remain. # @return [Hash, Nil] the next document or Nil if no documents remain.
def next_document def next
refresh if @cache.length == 0 if @cache.length == 0
if @query_run && (@options & OP_QUERY_EXHAUST != 0)
close
return nil
else
refresh
end
end
doc = @cache.shift doc = @cache.shift
if doc && doc['$err'] if doc && doc['$err']
@ -78,16 +136,21 @@ module Mongo
# If the server has stopped being the master (e.g., it's one of a # If the server has stopped being the master (e.g., it's one of a
# pair but it has died or something like that) then we close that # pair but it has died or something like that) then we close that
# connection. The next request will re-open on master server. # connection. The next request will re-open on master server.
if err == "not master" if err.include?("not master")
@connection.close @connection.close
raise ConnectionFailure, err raise ConnectionFailure.new(err, doc['code'], doc)
end end
raise OperationFailure, err raise OperationFailure.new(err, doc['code'], doc)
end end
doc if @transformer.nil?
doc
else
@transformer.call(doc) if doc
end
end end
alias :next_document :next
# Reset this cursor on the server. Cursor options, such as the # Reset this cursor on the server. Cursor options, such as the
# query string and the values for skip and limit, are preserved. # query string and the values for skip and limit, are preserved.
@ -128,7 +191,7 @@ module Mongo
response = @db.command(command) response = @db.command(command)
return response['n'].to_i if Mongo::Support.ok?(response) return response['n'].to_i if Mongo::Support.ok?(response)
return 0 if response['errmsg'] == "ns missing" return 0 if response['errmsg'] == "ns missing"
raise OperationFailure, "Count failed: #{response['errmsg']}" raise OperationFailure.new("Count failed: #{response['errmsg']}", response['code'], response)
end end
# Sort this cursor's results. # Sort this cursor's results.
@ -196,16 +259,20 @@ module Mongo
# Note that the batch size will take effect only on queries # Note that the batch size will take effect only on queries
# where the number to be returned is greater than 100. # where the number to be returned is greater than 100.
# #
# This can not override MongoDB's limit on the amount of data it will
# return to the client. Depending on server version this can be 4-16mb.
#
# @param [Integer] size either 0 or some integer greater than 1. If 0, # @param [Integer] size either 0 or some integer greater than 1. If 0,
# the server will determine the batch size. # the server will determine the batch size.
# #
# @return [Cursor] # @return [Cursor]
def batch_size(size=0) def batch_size(size=nil)
return @batch_size unless size
check_modifiable check_modifiable
if size < 0 || size == 1 if size < 0 || size == 1
raise ArgumentError, "Invalid value for batch_size #{size}; must be 0 or > 1." raise ArgumentError, "Invalid value for batch_size #{size}; must be 0 or > 1."
else else
@batch_size = size > @limit ? @limit : size @batch_size = @limit != 0 && size > @limit ? @limit : size
end end
self self
@ -223,11 +290,8 @@ module Mongo
# puts doc['user'] # puts doc['user']
# end # end
def each def each
#num_returned = 0 while doc = self.next
#while has_next? && (@limit <= 0 || num_returned < @limit) yield doc
while doc = next_document
yield doc #next_document
#num_returned += 1
end end
end end
@ -253,7 +317,8 @@ module Mongo
# #
# @core explain explain-instance_method # @core explain explain-instance_method
def explain def explain
c = Cursor.new(@collection, query_options_hash.merge(:limit => -@limit.abs, :explain => true)) c = Cursor.new(@collection,
query_options_hash.merge(:limit => -@limit.abs, :explain => true))
explanation = c.next_document explanation = c.next_document
c.close c.close
@ -275,8 +340,8 @@ module Mongo
message = BSON::ByteBuffer.new([0, 0, 0, 0]) message = BSON::ByteBuffer.new([0, 0, 0, 0])
message.put_int(1) message.put_int(1)
message.put_long(@cursor_id) message.put_long(@cursor_id)
@logger.debug("MONGODB cursor.close #{@cursor_id}") if @logger log(:debug, "Cursor#close #{@cursor_id}")
@connection.send_message(Mongo::Constants::OP_KILL_CURSORS, message, nil) @connection.send_message(Mongo::Constants::OP_KILL_CURSORS, message, :connection => :reader)
end end
@cursor_id = 0 @cursor_id = 0
@closed = true @closed = true
@ -285,7 +350,9 @@ module Mongo
# Is this cursor closed? # Is this cursor closed?
# #
# @return [Boolean] # @return [Boolean]
def closed?; @closed; end def closed?
@closed
end
# Returns an integer indicating which query options have been selected. # Returns an integer indicating which query options have been selected.
# #
@ -294,11 +361,43 @@ module Mongo
# @see http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol#MongoWireProtocol-Mongo::Constants::OPQUERY # @see http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol#MongoWireProtocol-Mongo::Constants::OPQUERY
# The MongoDB wire protocol. # The MongoDB wire protocol.
def query_opts def query_opts
opts = 0 warn "The method Cursor#query_opts has been deprecated " +
opts |= Mongo::Constants::OP_QUERY_NO_CURSOR_TIMEOUT unless @timeout "and will removed in v2.0. Use Cursor#options instead."
opts |= Mongo::Constants::OP_QUERY_SLAVE_OK if @connection.slave_ok? @options
opts |= Mongo::Constants::OP_QUERY_TAILABLE if @tailable end
opts
# Add an option to the query options bitfield.
#
# @param opt a valid query option
#
# @raise InvalidOperation if this method is run after the cursor has bee
# iterated for the first time.
#
# @return [Integer] the current value of the options bitfield for this cursor.
#
# @see http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol#MongoWireProtocol-Mongo::Constants::OPQUERY
def add_option(opt)
check_modifiable
@options |= opt
@options
end
# Remove an option from the query options bitfield.
#
# @param opt a valid query option
#
# @raise InvalidOperation if this method is run after the cursor has bee
# iterated for the first time.
#
# @return [Integer] the current value of the options bitfield for this cursor.
#
# @see http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol#MongoWireProtocol-Mongo::Constants::OPQUERY
def remove_option(opt)
check_modifiable
@options &= ~opt
@options
end end
# Get the query options for this Cursor. # Get the query options for this Cursor.
@ -307,18 +406,21 @@ module Mongo
def query_options_hash def query_options_hash
{ :selector => @selector, { :selector => @selector,
:fields => @fields, :fields => @fields,
:skip => @skip_num, :skip => @skip,
:limit => @limit_num, :limit => @limit,
:order => @order, :order => @order,
:hint => @hint, :hint => @hint,
:snapshot => @snapshot, :snapshot => @snapshot,
:timeout => @timeout } :timeout => @timeout,
:max_scan => @max_scan,
:return_key => @return_key,
:show_disk_loc => @show_disk_loc }
end end
# Clean output for inspect. # Clean output for inspect.
def inspect def inspect
"<Mongo::Cursor:0x#{object_id.to_s(16)} namespace='#{@db.name}.#{@collection.name}' " + "<Mongo::Cursor:0x#{object_id.to_s(16)} namespace='#{@db.name}.#{@collection.name}' " +
"@selector=#{@selector.inspect}>" "@selector=#{@selector.inspect} @cursor_id=#{@cursor_id}>"
end end
private private
@ -340,12 +442,49 @@ module Mongo
# Return the number of documents remaining for this cursor. # Return the number of documents remaining for this cursor.
def num_remaining def num_remaining
refresh if @cache.length == 0 if @cache.length == 0
if @query_run && (@options & OP_QUERY_EXHAUST != 0)
close
return 0
else
refresh
end
end
@cache.length @cache.length
end end
# Refresh the documents in @cache. This means either
# sending the initial query or sending a GET_MORE operation.
def refresh def refresh
return if send_initial_query || @cursor_id.zero? if !@query_run
send_initial_query
elsif !@cursor_id.zero?
send_get_more
end
end
def send_initial_query
message = construct_query_message
sock = @socket || checkout_socket_from_connection
instrument(:find, instrument_payload) do
begin
results, @n_received, @cursor_id = @connection.receive_message(
Mongo::Constants::OP_QUERY, message, nil, sock, @command,
nil, @options & OP_QUERY_EXHAUST != 0)
rescue ConnectionFailure, OperationFailure, OperationTimeout => ex
force_checkin_socket(sock) unless @socket
raise ex
end
checkin_socket(sock) unless @socket
@returned += @n_received
@cache += results
@query_run = true
close_cursor_if_query_complete
end
end
def send_get_more
message = BSON::ByteBuffer.new([0, 0, 0, 0]) message = BSON::ByteBuffer.new([0, 0, 0, 0])
# DB name. # DB name.
@ -364,34 +503,103 @@ module Mongo
# Cursor id. # Cursor id.
message.put_long(@cursor_id) message.put_long(@cursor_id)
@logger.debug("MONGODB cursor.refresh() for cursor #{@cursor_id}") if @logger log(:debug, "cursor.refresh() for cursor #{@cursor_id}") if @logger
sock = @socket || checkout_socket_for_op_get_more
begin
results, @n_received, @cursor_id = @connection.receive_message( results, @n_received, @cursor_id = @connection.receive_message(
Mongo::Constants::OP_GET_MORE, message, nil, @socket, @command) Mongo::Constants::OP_GET_MORE, message, nil, sock, @command, nil)
rescue ConnectionFailure, OperationFailure, OperationTimeout => ex
force_checkin_socket(sock)
raise ex
end
checkin_socket(sock) unless @socket
@returned += @n_received @returned += @n_received
@cache += results @cache += results
close_cursor_if_query_complete close_cursor_if_query_complete
end end
# Run query the first time we request an object from the wire def checkout_socket_from_connection
def send_initial_query socket = nil
if @query_run begin
false @checkin_connection = true
if @command || @read_preference == :primary
socket = @connection.checkout_writer
elsif @read_preference == :secondary_only
socket = @connection.checkout_secondary
else
@read_pool = @connection.read_pool
socket = @connection.checkout_reader
end
rescue SystemStackError, NoMemoryError, SystemCallError => ex
@connection.close
raise ex
end
socket
end
def checkout_socket_for_op_get_more
if @read_pool && (@read_pool != @connection.read_pool)
checkout_socket_from_read_pool
else else
message = construct_query_message checkout_socket_from_connection
@logger.debug query_log_message if @logger end
results, @n_received, @cursor_id = @connection.receive_message( end
Mongo::Constants::OP_QUERY, message, nil, @socket, @command)
@returned += @n_received def checkout_socket_from_read_pool
@cache += results new_pool = @connection.secondary_pools.detect do |pool|
@query_run = true pool.host == @read_pool.host && pool.port == @read_pool.port
close_cursor_if_query_complete end
true if new_pool
sock = nil
begin
@read_pool = new_pool
sock = new_pool.checkout
@checkin_read_pool = true
rescue SystemStackError, NoMemoryError, SystemCallError => ex
@connection.close
raise ex
end
return sock
else
raise Mongo::OperationFailure, "Failure to continue iterating " +
"cursor because the the replica set member persisting this " +
"cursor at #{@read_pool.host_string} cannot be found."
end
end
def checkin_socket(sock)
if @checkin_read_pool
@read_pool.checkin(sock)
@checkin_read_pool = false
elsif @checkin_connection
if @command || @read_preference == :primary
@connection.checkin_writer(sock)
else
@connection.checkin_reader(sock)
end
@checkin_connection = false
end
end
def force_checkin_socket(sock)
if @checkin_read_pool
@read_pool.checkin(sock)
@checkin_read_pool = false
else
if @command || @read_preference == :primary
@connection.checkin_writer(sock)
else
@connection.checkin_reader(sock)
end
@checkin_connection = false
end end
end end
def construct_query_message def construct_query_message
message = BSON::ByteBuffer.new message = BSON::ByteBuffer.new
message.put_int(query_opts) message.put_int(@options)
BSON::BSON_RUBY.serialize_cstr(message, "#{@db.name}.#{@collection.name}") BSON::BSON_RUBY.serialize_cstr(message, "#{@db.name}.#{@collection.name}")
message.put_int(@skip) message.put_int(@skip)
message.put_int(@limit) message.put_int(@limit)
@ -401,10 +609,13 @@ module Mongo
message message
end end
def query_log_message def instrument_payload
"#{@db.name}['#{@collection.name}'].find(#{@selector.inspect}, #{@fields ? @fields.inspect : '{}'})" + log = { :database => @db.name, :collection => @collection.name, :selector => selector }
"#{@skip != 0 ? ('.skip(' + @skip.to_s + ')') : ''}#{@limit != 0 ? ('.limit(' + @limit.to_s + ')') : ''}" + log[:fields] = @fields if @fields
"#{@order ? ('.sort(' + @order.inspect + ')') : ''}" log[:skip] = @skip if @skip && (@skip != 0)
log[:limit] = @limit if @limit && (@limit != 0)
log[:order] = @order if @order
log
end end
def construct_query_spec def construct_query_spec
@ -415,16 +626,16 @@ module Mongo
spec['$hint'] = @hint if @hint && @hint.length > 0 spec['$hint'] = @hint if @hint && @hint.length > 0
spec['$explain'] = true if @explain spec['$explain'] = true if @explain
spec['$snapshot'] = true if @snapshot spec['$snapshot'] = true if @snapshot
spec['$maxScan'] = @max_scan if @max_scan
spec['$returnKey'] = true if @return_key
spec['$showDiskLoc'] = true if @show_disk_loc
spec spec
end end
# Returns true if the query contains order, explain, hint, or snapshot. # Returns true if the query contains order, explain, hint, or snapshot.
def query_contains_special_fields? def query_contains_special_fields?
@order || @explain || @hint || @snapshot @order || @explain || @hint || @snapshot || @show_disk_loc ||
end @max_scan || @return_key
def to_s
"DBResponse(flags=#@result_flags, cursor_id=#@cursor_id, start=#@starting_from)"
end end
def close_cursor_if_query_complete def close_cursor_if_query_complete

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -17,7 +17,6 @@
# ++ # ++
require 'socket' require 'socket'
require 'timeout'
require 'thread' require 'thread'
module Mongo module Mongo
@ -63,13 +62,13 @@ module Mongo
# @option opts [Boolean] :strict (False) If true, collections must exist to be accessed and must # @option opts [Boolean] :strict (False) If true, collections must exist to be accessed and must
# not exist to be created. See DB#collection and DB#create_collection. # not exist to be created. See DB#collection and DB#create_collection.
# #
# @option opts [Object, #create_pk(doc)] :pk (Mongo::ObjectId) A primary key factory object, # @option opts [Object, #create_pk(doc)] :pk (BSON::ObjectId) A primary key factory object,
# which should take a hash and return a hash which merges the original hash with any primary key # which should take a hash and return a hash which merges the original hash with any primary key
# fields the factory wishes to inject. (NOTE: if the object already has a primary key, # fields the factory wishes to inject. (NOTE: if the object already has a primary key,
# the factory should not inject a new key). # the factory should not inject a new key).
# #
# @option opts [Boolean, Hash] :safe (false) Set the default safe-mode options # @option opts [Boolean, Hash] :safe (false) Set the default safe-mode options
# propogated to Collection objects instantiated off of this DB. If no # propagated to Collection objects instantiated off of this DB. If no
# value is provided, the default value set on this instance's Connection object will be used. This # value is provided, the default value set on this instance's Connection object will be used. This
# default can be overridden upon instantiation of any collection by explicity setting a :safe value # default can be overridden upon instantiation of any collection by explicity setting a :safe value
# on initialization # on initialization
@ -82,6 +81,12 @@ module Mongo
@strict = opts[:strict] @strict = opts[:strict]
@pk_factory = opts[:pk] @pk_factory = opts[:pk]
@safe = opts.fetch(:safe, @connection.safe) @safe = opts.fetch(:safe, @connection.safe)
if value = opts[:read]
Mongo::Support.validate_read_preference(value)
else
value = @connection.read_preference
end
@read_preference = value.is_a?(Hash) ? value.dup : value
@cache_time = opts[:cache_time] || 300 #5 minutes. @cache_time = opts[:cache_time] || 300 #5 minutes.
end end
@ -92,7 +97,8 @@ module Mongo
# @param [String] password # @param [String] password
# @param [Boolean] save_auth # @param [Boolean] save_auth
# Save this authentication to the connection object using Connection#add_auth. This # Save this authentication to the connection object using Connection#add_auth. This
# will ensure that the authentication will be applied on database reconnect. # will ensure that the authentication will be applied on database reconnect. Note
# that this value must be true when using connection pooling.
# #
# @return [Boolean] # @return [Boolean]
# #
@ -100,8 +106,22 @@ module Mongo
# #
# @core authenticate authenticate-instance_method # @core authenticate authenticate-instance_method
def authenticate(username, password, save_auth=true) def authenticate(username, password, save_auth=true)
doc = command({:getnonce => 1}, :check_response => false) if @connection.pool_size > 1
raise "error retrieving nonce: #{doc}" unless ok?(doc) if !save_auth
raise MongoArgumentError, "If using connection pooling, :save_auth must be set to true."
end
end
@connection.best_available_socket do |socket|
issue_authentication(username, password, save_auth, :socket => socket)
end
@connection.authenticate_pools
end
def issue_authentication(username, password, save_auth=true, opts={})
doc = command({:getnonce => 1}, :check_response => false, :socket => opts[:socket])
raise MongoDBError, "Error retrieving nonce: #{doc}" unless ok?(doc)
nonce = doc['nonce'] nonce = doc['nonce']
auth = BSON::OrderedHash.new auth = BSON::OrderedHash.new
@ -109,13 +129,14 @@ module Mongo
auth['user'] = username auth['user'] = username
auth['nonce'] = nonce auth['nonce'] = nonce
auth['key'] = Mongo::Support.auth_key(username, password, nonce) auth['key'] = Mongo::Support.auth_key(username, password, nonce)
if ok?(self.command(auth, :check_response => false)) if ok?(doc = self.command(auth, :check_response => false, :socket => opts[:socket]))
if save_auth if save_auth
@connection.add_auth(@name, username, password) @connection.add_auth(@name, username, password)
end end
true true
else else
raise(Mongo::AuthenticationError, "Failed to authenticate user '#{username}' on db '#{self.name}'") message = "Failed to authenticate user '#{username}' on db '#{self.name}'"
raise Mongo::AuthenticationError.new(message, doc['code'], doc)
end end
end end
@ -154,12 +175,15 @@ module Mongo
# #
# @param [String] username # @param [String] username
# @param [String] password # @param [String] password
# @param [Boolean] read_only
# Create a read-only user.
# #
# @return [Hash] an object representing the user. # @return [Hash] an object representing the user.
def add_user(username, password) def add_user(username, password, read_only = false)
users = self[SYSTEM_USER_COLLECTION] users = self[SYSTEM_USER_COLLECTION]
user = users.find_one({:user => username}) || {:user => username} user = users.find_one({:user => username}) || {:user => username}
user['pwd'] = Mongo::Support.hash_password(username, password) user['pwd'] = Mongo::Support.hash_password(username, password)
user['readOnly'] = true if read_only;
users.save(user) users.save(user)
return user return user
end end
@ -179,14 +203,22 @@ module Mongo
end end
# Deauthorizes use for this database for this connection. Also removes # Deauthorizes use for this database for this connection. Also removes
# any saved authorization in the connection class associated with this # any saved authentication in the connection class associated with this
# database. # database.
# #
# @raise [MongoDBError] if logging out fails. # @raise [MongoDBError] if logging out fails.
# #
# @return [Boolean] # @return [Boolean]
def logout def logout(opts={})
doc = command(:logout => 1) if @connection.pool_size > 1
@connection.logout_pools(@name)
end
issue_logout(opts)
end
def issue_logout(opts={})
doc = command({:logout => 1}, :socket => opts[:socket])
if ok?(doc) if ok?(doc)
@connection.remove_auth(@name) @connection.remove_auth(@name)
true true
@ -231,28 +263,31 @@ module Mongo
# new collection. If +strict+ is true, will raise an error if # new collection. If +strict+ is true, will raise an error if
# collection +name+ already exists. # collection +name+ already exists.
# #
# @param [String] name the name of the new collection. # @param [String, Symbol] name the name of the new collection.
# #
# @option opts [Boolean] :capped (False) created a capped collection. # @option opts [Boolean] :capped (False) created a capped collection.
# #
# @option opts [Integer] :size (Nil) If +capped+ is +true+, specifies the maximum number of # @option opts [Integer] :size (Nil) If +capped+ is +true+,
# bytes for the capped collection. If +false+, specifies the number of bytes allocated # specifies the maximum number of bytes for the capped collection.
# If +false+, specifies the number of bytes allocated
# for the initial extent of the collection. # for the initial extent of the collection.
# #
# @option opts [Integer] :max (Nil) If +capped+ is +true+, indicates the maximum number of records # @option opts [Integer] :max (Nil) If +capped+ is +true+, indicates
# in a capped collection. # the maximum number of records in a capped collection.
# #
# @raise [MongoDBError] raised under two conditions: either we're in +strict+ mode and the collection # @raise [MongoDBError] raised under two conditions:
# either we're in +strict+ mode and the collection
# already exists or collection creation fails on the server. # already exists or collection creation fails on the server.
# #
# @return [Mongo::Collection] # @return [Mongo::Collection]
def create_collection(name, opts={}) def create_collection(name, opts={})
# Does the collection already exist? name = name.to_s
if collection_names.include?(name) if collection_names.include?(name)
if strict? if strict?
raise MongoDBError, "Collection #{name} already exists. Currently in strict mode." raise MongoDBError, "Collection #{name} already exists. " +
"Currently in strict mode."
else else
return Collection.new(name, self) return Collection.new(name, self, opts)
end end
end end
@ -266,16 +301,19 @@ module Mongo
# Get a collection by name. # Get a collection by name.
# #
# @param [String] name the collection name. # @param [String, Symbol] name the collection name.
# @param [Hash] opts any valid options that can me passed to Collection#new. # @param [Hash] opts any valid options that can be passed to Collection#new.
# #
# @raise [MongoDBError] if collection does not already exist and we're in +strict+ mode. # @raise [MongoDBError] if collection does not already exist and we're in
# +strict+ mode.
# #
# @return [Mongo::Collection] # @return [Mongo::Collection]
def collection(name, opts={}) def collection(name, opts={})
if strict? && !collection_names.include?(name) if strict? && !collection_names.include?(name.to_s)
raise Mongo::MongoDBError, "Collection #{name} doesn't exist. Currently in strict mode." raise Mongo::MongoDBError, "Collection #{name} doesn't exist. " +
"Currently in strict mode."
else else
opts = opts.dup
opts[:safe] = opts.fetch(:safe, @safe) opts[:safe] = opts.fetch(:safe, @safe)
opts.merge!(:pk => @pk_factory) unless opts[:pk] opts.merge!(:pk => @pk_factory) unless opts[:pk]
Collection.new(name, self, opts) Collection.new(name, self, opts)
@ -285,11 +323,11 @@ module Mongo
# Drop a collection by +name+. # Drop a collection by +name+.
# #
# @param [String] name # @param [String, Symbol] name
# #
# @return [Boolean] +true+ on success or +false+ if the collection name doesn't exist. # @return [Boolean] +true+ on success or +false+ if the collection name doesn't exist.
def drop_collection(name) def drop_collection(name)
return true unless collection_names.include?(name) return true unless collection_names.include?(name.to_s)
ok?(command(:drop => name)) ok?(command(:drop => name))
end end
@ -299,6 +337,7 @@ module Mongo
# @option opts [Boolean] :fsync (false) # @option opts [Boolean] :fsync (false)
# @option opts [Integer] :w (nil) # @option opts [Integer] :w (nil)
# @option opts [Integer] :wtimeout (nil) # @option opts [Integer] :wtimeout (nil)
# @option opts [Boolean] :j (false)
# #
# @return [Hash] the entire response to getlasterror. # @return [Hash] the entire response to getlasterror.
# #
@ -399,7 +438,7 @@ module Mongo
# #
# @return [True] returns +true+ on success. # @return [True] returns +true+ on success.
# #
# @raise MongoDBError if there's an error renaming the collection. # @raise MongoDBError if there's an error dropping the index.
def drop_index(collection_name, index_name) def drop_index(collection_name, index_name)
oh = BSON::OrderedHash.new oh = BSON::OrderedHash.new
oh[:deleteIndexes] = collection_name oh[:deleteIndexes] = collection_name
@ -455,14 +494,14 @@ module Mongo
# #
# @option opts [Boolean] :check_response (true) If +true+, raises an exception if the # @option opts [Boolean] :check_response (true) If +true+, raises an exception if the
# command fails. # command fails.
# @option opts [Socket] :sock a socket to use for sending the command. This is mainly for internal use. # @option opts [Socket] :socket a socket to use for sending the command. This is mainly for internal use.
# #
# @return [Hash] # @return [Hash]
# #
# @core commands command_instance-method # @core commands command_instance-method
def command(selector, opts={}) def command(selector, opts={})
check_response = opts.fetch(:check_response, true) check_response = opts.fetch(:check_response, true)
sock = opts[:sock] socket = opts[:socket]
raise MongoArgumentError, "command must be given a selector" unless selector.is_a?(Hash) && !selector.empty? raise MongoArgumentError, "command must be given a selector" unless selector.is_a?(Hash) && !selector.empty?
if selector.keys.length > 1 && RUBY_VERSION < '1.9' && selector.class != BSON::OrderedHash if selector.keys.length > 1 && RUBY_VERSION < '1.9' && selector.class != BSON::OrderedHash
raise MongoArgumentError, "DB#command requires an OrderedHash when hash contains multiple keys" raise MongoArgumentError, "DB#command requires an OrderedHash when hash contains multiple keys"
@ -470,7 +509,7 @@ module Mongo
begin begin
result = Cursor.new(system_command_collection, result = Cursor.new(system_command_collection,
:limit => -1, :selector => selector, :socket => sock).next_document :limit => -1, :selector => selector, :socket => socket).next_document
rescue OperationFailure => ex rescue OperationFailure => ex
raise OperationFailure, "Database command '#{selector.keys.first}' failed: #{ex.message}" raise OperationFailure, "Database command '#{selector.keys.first}' failed: #{ex.message}"
end end
@ -478,7 +517,13 @@ module Mongo
if result.nil? if result.nil?
raise OperationFailure, "Database command '#{selector.keys.first}' failed: returned null." raise OperationFailure, "Database command '#{selector.keys.first}' failed: returned null."
elsif (check_response && !ok?(result)) elsif (check_response && !ok?(result))
raise OperationFailure, "Database command '#{selector.keys.first}' failed: #{result.inspect}" message = "Database command '#{selector.keys.first}' failed: ("
message << result.map do |key, value|
"#{key}: '#{value}'"
end.join('; ')
message << ').'
code = result['code'] || result['assertionCode']
raise OperationFailure.new(message, code, result)
else else
result result
end end
@ -570,14 +615,26 @@ module Mongo
# @raise [MongoDBError] if the command fails or there's a problem with the validation # @raise [MongoDBError] if the command fails or there's a problem with the validation
# data, or if the collection is invalid. # data, or if the collection is invalid.
def validate_collection(name) def validate_collection(name)
doc = command({:validate => name}, :check_response => false) cmd = BSON::OrderedHash.new
raise MongoDBError, "Error with validate command: #{doc.inspect}" unless ok?(doc) cmd[:validate] = name
result = doc['result'] cmd[:full] = true
raise MongoDBError, "Error with validation data: #{doc.inspect}" unless result.kind_of?(String) doc = command(cmd, :check_response => false)
raise MongoDBError, "Error: invalid collection #{name}: #{doc.inspect}" if result =~ /\b(exception|corrupt)\b/i if !ok?(doc)
raise MongoDBError, "Error with validate command: #{doc.inspect}"
end
if (doc.has_key?('valid') && !doc['valid']) || (doc['result'] =~ /\b(exception|corrupt)\b/i)
raise MongoDBError, "Error: invalid collection #{name}: #{doc.inspect}"
end
doc doc
end end
# The value of the read preference. This will be
# either +:primary+, +:secondary+, or an object
# representing the tags to be read from.
def read_preference
@read_preference
end
private private
def system_command_collection def system_command_collection

View File

@ -2,7 +2,7 @@
# #
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -22,10 +22,20 @@ module Mongo
class MongoRubyError < StandardError; end class MongoRubyError < StandardError; end
# Raised when MongoDB itself has returned an error. # Raised when MongoDB itself has returned an error.
class MongoDBError < RuntimeError; end class MongoDBError < RuntimeError
# Raised when configuration options cause connections, queries, etc., to fail. # @return The entire failed command's response object, if available.
class ConfigurationError < MongoRubyError; end attr_reader :result
# @return The failed command's error code, if availab.e
attr_reader :error_code
def initialize(message=nil, error_code=nil, result=nil)
@error_code = error_code
@result = result
super(message)
end
end
# Raised on fatal errors to GridFS. # Raised on fatal errors to GridFS.
class GridError < MongoRubyError; end class GridError < MongoRubyError; end
@ -48,6 +58,9 @@ module Mongo
# Raised on failures in connection to the database server. # Raised on failures in connection to the database server.
class ConnectionTimeoutError < MongoRubyError; end class ConnectionTimeoutError < MongoRubyError; end
# Raised when no tags in a read preference maps to a given connection.
class NodeWithTagsNotFound < MongoRubyError; end
# Raised when a connection operation fails. # Raised when a connection operation fails.
class ConnectionFailure < MongoDBError; end class ConnectionFailure < MongoDBError; end
@ -57,6 +70,9 @@ module Mongo
# Raised when a database operation fails. # Raised when a database operation fails.
class OperationFailure < MongoDBError; end class OperationFailure < MongoDBError; end
# Raised when a socket read operation times out.
class OperationTimeout < SocketError; end
# Raised when a client attempts to perform an invalid operation. # Raised when a client attempts to perform an invalid operation.
class InvalidOperation < MongoDBError; end class InvalidOperation < MongoDBError; end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -38,8 +38,10 @@ module Mongo
@chunks = @db["#{fs_name}.chunks"] @chunks = @db["#{fs_name}.chunks"]
@fs_name = fs_name @fs_name = fs_name
# Ensure indexes only if not connected to slave. # Create indexes only if we're connected to a primary node.
unless db.connection.slave_ok? connection = @db.connection
if (connection.class == Connection && connection.read_primary?) ||
(connection.class == ReplSetConnection && connection.primary)
@chunks.create_index([['files_id', Mongo::ASCENDING], ['n', Mongo::ASCENDING]], :unique => true) @chunks.create_index([['files_id', Mongo::ASCENDING], ['n', Mongo::ASCENDING]], :unique => true)
end end
end end
@ -63,11 +65,12 @@ module Mongo
# @option opts [Boolean] :safe (false) When safe mode is enabled, the chunks sent to the server # @option opts [Boolean] :safe (false) When safe mode is enabled, the chunks sent to the server
# will be validated using an md5 hash. If validation fails, an exception will be raised. # will be validated using an md5 hash. If validation fails, an exception will be raised.
# #
# @return [Mongo::ObjectId] the file's id. # @return [BSON::ObjectId] the file's id.
def put(data, opts={}) def put(data, opts={})
filename = opts.delete :filename opts = opts.dup
filename = opts.delete(:filename)
opts.merge!(default_grid_io_opts) opts.merge!(default_grid_io_opts)
file = GridIO.new(@files, @chunks, filename, 'w', opts=opts) file = GridIO.new(@files, @chunks, filename, 'w', opts)
file.write(data) file.write(data)
file.close file.close
file.files_id file.files_id

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -33,19 +33,19 @@ module Mongo
# @example # @example
# #
# # Check for the existence of a given filename # # Check for the existence of a given filename
# @grid = GridFileSystem.new(@db) # @grid = Mongo::GridFileSystem.new(@db)
# @grid.exist?(:filename => 'foo.txt') # @grid.exist?(:filename => 'foo.txt')
# #
# # Check for existence filename and content type # # Check for existence filename and content type
# @grid = GridFileSystem.new(@db) # @grid = Mongo::GridFileSystem.new(@db)
# @grid.exist?(:filename => 'foo.txt', :content_type => 'image/jpg') # @grid.exist?(:filename => 'foo.txt', :content_type => 'image/jpg')
# #
# # Check for existence by _id # # Check for existence by _id
# @grid = Grid.new(@db) # @grid = Mongo::Grid.new(@db)
# @grid.exist?(:_id => BSON::ObjectId.from_string('4bddcd24beffd95a7db9b8c8')) # @grid.exist?(:_id => BSON::ObjectId.from_string('4bddcd24beffd95a7db9b8c8'))
# #
# # Check for existence by an arbitrary attribute. # # Check for existence by an arbitrary attribute.
# @grid = Grid.new(@db) # @grid = Mongo::Grid.new(@db)
# @grid.exist?(:tags => {'$in' => ['nature', 'zen', 'photography']}) # @grid.exist?(:tags => {'$in' => ['nature', 'zen', 'photography']})
# #
# @return [nil, Hash] either nil for the file's metadata as a hash. # @return [nil, Hash] either nil for the file's metadata as a hash.

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -39,8 +39,10 @@ module Mongo
@default_query_opts = {:sort => [['filename', 1], ['uploadDate', -1]], :limit => 1} @default_query_opts = {:sort => [['filename', 1], ['uploadDate', -1]], :limit => 1}
# Ensure indexes only if not connected to slave. # Create indexes only if we're connected to a primary node.
unless db.connection.slave_ok? connection = @db.connection
if (connection.class == Connection && connection.read_primary?) ||
(connection.class == ReplSetConnection && connection.primary)
@files.create_index([['filename', 1], ['uploadDate', -1]]) @files.create_index([['filename', 1], ['uploadDate', -1]])
@chunks.create_index([['files_id', Mongo::ASCENDING], ['n', Mongo::ASCENDING]], :unique => true) @chunks.create_index([['files_id', Mongo::ASCENDING], ['n', Mongo::ASCENDING]], :unique => true)
end end
@ -69,32 +71,41 @@ module Mongo
# GridFileSystem#delete. # GridFileSystem#delete.
# @option opts [Boolean] :safe (false) When safe mode is enabled, the chunks sent to the server # @option opts [Boolean] :safe (false) When safe mode is enabled, the chunks sent to the server
# will be validated using an md5 hash. If validation fails, an exception will be raised. # will be validated using an md5 hash. If validation fails, an exception will be raised.
# @option opts [Integer] :versions (false) deletes all versions which exceed the number specified to
# retain ordered by uploadDate. This option only works in 'w' mode. Certain precautions must be taken when
# deleting GridFS files. See the notes under GridFileSystem#delete.
# #
# @example # @example
# #
# # Store the text "Hello, world!" in the grid file system. # # Store the text "Hello, world!" in the grid file system.
# @grid = GridFileSystem.new(@db) # @grid = Mongo::GridFileSystem.new(@db)
# @grid.open('filename', 'w') do |f| # @grid.open('filename', 'w') do |f|
# f.write "Hello, world!" # f.write "Hello, world!"
# end # end
# #
# # Output "Hello, world!" # # Output "Hello, world!"
# @grid = GridFileSystem.new(@db) # @grid = Mongo::GridFileSystem.new(@db)
# @grid.open('filename', 'r') do |f| # @grid.open('filename', 'r') do |f|
# puts f.read # puts f.read
# end # end
# #
# # Write a file on disk to the GridFileSystem # # Write a file on disk to the GridFileSystem
# @file = File.open('image.jpg') # @file = File.open('image.jpg')
# @grid = GridFileSystem.new(@db) # @grid = Mongo::GridFileSystem.new(@db)
# @grid.open('image.jpg, 'w') do |f| # @grid.open('image.jpg, 'w') do |f|
# f.write @file # f.write @file
# end # end
# #
# @return [Mongo::GridIO] # @return [Mongo::GridIO]
def open(filename, mode, opts={}) def open(filename, mode, opts={})
opts = opts.dup
opts.merge!(default_grid_io_opts(filename)) opts.merge!(default_grid_io_opts(filename))
del = opts.delete(:delete_old) && mode == 'w' if mode == 'w'
versions = opts.delete(:versions)
if opts.delete(:delete_old) || (versions && versions < 1)
versions = 1
end
end
file = GridIO.new(@files, @chunks, filename, mode, opts) file = GridIO.new(@files, @chunks, filename, mode, opts)
return file unless block_given? return file unless block_given?
result = nil result = nil
@ -102,9 +113,9 @@ module Mongo
result = yield file result = yield file
ensure ensure
id = file.close id = file.close
if del if versions
self.delete do self.delete do
@files.find({'filename' => filename, '_id' => {'$ne' => id}}, :fields => ['_id']) @files.find({'filename' => filename, '_id' => {'$ne' => id}}, :fields => ['_id'], :sort => ['uploadDate', -1], :skip => (versions - 1))
end end
end end
end end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -17,10 +17,6 @@
# ++ # ++
require 'digest/md5' require 'digest/md5'
begin
require 'mime/types'
rescue LoadError
end
module Mongo module Mongo
@ -59,6 +55,7 @@ module Mongo
@chunks = chunks @chunks = chunks
@filename = filename @filename = filename
@mode = mode @mode = mode
opts = opts.dup
@query = opts.delete(:query) || {} @query = opts.delete(:query) || {}
@query_opts = opts.delete(:query_opts) || {} @query_opts = opts.delete(:query_opts) || {}
@fs_name = opts.delete(:fs_name) || Grid::DEFAULT_FS_NAME @fs_name = opts.delete(:fs_name) || Grid::DEFAULT_FS_NAME
@ -172,6 +169,57 @@ module Mongo
def tell def tell
@file_position @file_position
end end
alias :pos :tell
# Rewind the file. This is equivalent to seeking to the zeroth position.
#
# @return [Integer] the position of the file after rewinding (always zero).
def rewind
raise GridError, "file not opened for read" unless @mode[0] == ?r
seek(0)
end
# Return a boolean indicating whether the position pointer is
# at the end of the file.
#
# @return [Boolean]
def eof
raise GridError, "file not opened for read #{@mode}" unless @mode[0] == ?r
@file_position >= @file_length
end
alias :eof? :eof
# Return the next line from a GridFS file. This probably
# makes sense only if you're storing plain text. This method
# has a somewhat tricky API, which it inherits from Ruby's
# StringIO#gets.
#
# @param [String, Integer] separator or length. If a separator,
# read up to the separator. If a length, read the +length+ number
# of bytes. If nil, read the entire file.
# @param [Integer] length If a separator is provided, then
# read until either finding the separator or
# passing over the +length+ number of bytes.
#
# @return [String]
def gets(separator="\n", length=nil)
if separator.nil?
read_all
elsif separator.is_a?(Integer)
read_length(separator)
elsif separator.length > 1
read_to_string(separator, length)
else
read_to_character(separator, length)
end
end
# Return the next byte from the GridFS file.
#
# @return [String]
def getc
read_length(1)
end
# Creates or updates the document from the files collection that # Creates or updates the document from the files collection that
# stores the chunks' metadata. The file becomes available only after # stores the chunks' metadata. The file becomes available only after
@ -205,6 +253,7 @@ module Mongo
return read_all unless block_given? return read_all unless block_given?
while chunk = read(chunk_size) while chunk = read(chunk_size)
yield chunk yield chunk
break if chunk.empty?
end end
self self
end end
@ -226,7 +275,7 @@ module Mongo
end end
def save_chunk(chunk) def save_chunk(chunk)
@chunks.insert(chunk) @chunks.save(chunk)
end end
def get_chunk(n) def get_chunk(n)
@ -235,21 +284,18 @@ module Mongo
chunk chunk
end end
def last_chunk_number
(@file_length / @chunk_size).to_i
end
# Read a file in its entirety. # Read a file in its entirety.
def read_all def read_all
buf = '' buf = ''
if @current_chunk if @current_chunk
buf << @current_chunk['data'].to_s buf << @current_chunk['data'].to_s
while chunk = get_chunk(@current_chunk['n'] + 1) while buf.size < @file_length
buf << chunk['data'].to_s @current_chunk = get_chunk(@current_chunk['n'] + 1)
@current_chunk = chunk break if @current_chunk.nil?
buf << @current_chunk['data'].to_s
end end
@file_position = @file_length
end end
@file_position = @file_length
buf buf
end end
@ -260,7 +306,7 @@ module Mongo
if length.nil? if length.nil?
to_read = remaining to_read = remaining
else else
to_read = length > remaining ? remaining : length to_read = length > remaining ? remaining : length
end end
return nil unless remaining > 0 return nil unless remaining > 0
@ -280,6 +326,48 @@ module Mongo
buf buf
end end
def read_to_character(character="\n", length=nil)
result = ''
len = 0
while char = getc
result << char
len += 1
break if char == character || (length ? len >= length : false)
end
result.length > 0 ? result : nil
end
def read_to_string(string="\n", length=nil)
result = ''
len = 0
match_idx = 0
match_num = string.length - 1
to_match = string[match_idx].chr
if length
matcher = lambda {|idx, num| idx < num && len < length }
else
matcher = lambda {|idx, num| idx < num}
end
while matcher.call(match_idx, match_num) && char = getc
result << char
len += 1
if char == to_match
while match_idx < match_num do
match_idx += 1
to_match = string[match_idx].chr
char = getc
result << char
if char != to_match
match_idx = 0
to_match = string[match_idx].chr
break
end
end
end
end
result.length > 0 ? result : nil
end
def cache_chunk_data def cache_chunk_data
@current_chunk_data = @current_chunk['data'].to_s @current_chunk_data = @current_chunk['data'].to_s
if @current_chunk_data.respond_to?(:force_encoding) if @current_chunk_data.respond_to?(:force_encoding)
@ -332,11 +420,12 @@ module Mongo
# Initialize the class for writing a file. # Initialize the class for writing a file.
def init_write(opts) def init_write(opts)
opts = opts.dup
@files_id = opts.delete(:_id) || BSON::ObjectId.new @files_id = opts.delete(:_id) || BSON::ObjectId.new
@content_type = opts.delete(:content_type) || (defined? MIME) && get_content_type || DEFAULT_CONTENT_TYPE @content_type = opts.delete(:content_type) || (defined? MIME) && get_content_type || DEFAULT_CONTENT_TYPE
@chunk_size = opts.delete(:chunk_size) || DEFAULT_CHUNK_SIZE @chunk_size = opts.delete(:chunk_size) || DEFAULT_CHUNK_SIZE
@metadata = opts.delete(:metadata) if opts[:metadata] @metadata = opts.delete(:metadata)
@aliases = opts.delete(:aliases) if opts[:aliases] @aliases = opts.delete(:aliases)
@file_length = 0 @file_length = 0
opts.each {|k, v| self[k] = v} opts.each {|k, v| self[k] = v}
check_existing_file if @safe check_existing_file if @safe
@ -374,7 +463,9 @@ module Mongo
@server_md5 = @files.db.command(md5_command)['md5'] @server_md5 = @files.db.command(md5_command)['md5']
if @safe if @safe
@client_md5 = @local_md5.hexdigest @client_md5 = @local_md5.hexdigest
if @local_md5 != @server_md5 if @local_md5 == @server_md5
@server_md5
else
raise GridMD5Failure, "File on server failed MD5 check" raise GridMD5Failure, "File on server failed MD5 check"
end end
else else

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

369
lib/mongo/networking.rb Normal file
View File

@ -0,0 +1,369 @@
module Mongo
module Networking
STANDARD_HEADER_SIZE = 16
RESPONSE_HEADER_SIZE = 20
# Counter for generating unique request ids.
@@current_request_id = 0
# Send a message to MongoDB, adding the necessary headers.
#
# @param [Integer] operation a MongoDB opcode.
# @param [BSON::ByteBuffer] message a message to send to the database.
#
# @option opts [Symbol] :connection (:writer) The connection to which
# this message should be sent. Valid options are :writer and :reader.
#
# @return [Integer] number of bytes sent
def send_message(operation, message, opts={})
if opts.is_a?(String)
warn "Connection#send_message no longer takes a string log message. " +
"Logging is now handled within the Collection and Cursor classes."
opts = {}
end
connection = opts.fetch(:connection, :writer)
add_message_headers(message, operation)
packed_message = message.to_s
sock = nil
begin
if connection == :writer
sock = checkout_writer
else
sock = checkout_reader
end
send_message_on_socket(packed_message, sock)
rescue SystemStackError, NoMemoryError, SystemCallError => ex
close
raise ex
ensure
if sock
if connection == :writer
checkin_writer(sock)
else
checkin_reader(sock)
end
end
end
end
# Sends a message to the database, waits for a response, and raises
# an exception if the operation has failed.
#
# @param [Integer] operation a MongoDB opcode.
# @param [BSON::ByteBuffer] message a message to send to the database.
# @param [String] db_name the name of the database. used on call to get_last_error.
# @param [Hash] last_error_params parameters to be sent to getLastError. See DB#error for
# available options.
#
# @see DB#get_last_error for valid last error params.
#
# @return [Hash] The document returned by the call to getlasterror.
def send_message_with_safe_check(operation, message, db_name, log_message=nil, last_error_params=false)
docs = num_received = cursor_id = ''
add_message_headers(message, operation)
last_error_message = BSON::ByteBuffer.new
build_last_error_message(last_error_message, db_name, last_error_params)
last_error_id = add_message_headers(last_error_message, Mongo::Constants::OP_QUERY)
packed_message = message.append!(last_error_message).to_s
sock = nil
begin
sock = checkout_writer
send_message_on_socket(packed_message, sock)
docs, num_received, cursor_id = receive(sock, last_error_id)
checkin_writer(sock)
rescue ConnectionFailure, OperationFailure, OperationTimeout => ex
checkin_writer(sock)
raise ex
rescue SystemStackError, NoMemoryError, SystemCallError => ex
close
raise ex
end
if num_received == 1 && (error = docs[0]['err'] || docs[0]['errmsg'])
if error.include?("not master")
close
raise ConnectionFailure.new(docs[0]['code'].to_s + ': ' + error, docs[0]['code'], docs[0])
else
error = "wtimeout" if error == "timeout"
raise OperationFailure.new(docs[0]['code'].to_s + ': ' + error, docs[0]['code'], docs[0])
end
end
docs[0]
end
# Sends a message to the database and waits for the response.
#
# @param [Integer] operation a MongoDB opcode.
# @param [BSON::ByteBuffer] message a message to send to the database.
# @param [String] log_message this is currently a no-op and will be removed.
# @param [Socket] socket a socket to use in lieu of checking out a new one.
# @param [Boolean] command (false) indicate whether this is a command. If this is a command,
# the message will be sent to the primary node.
# @param [Boolean] command (false) indicate whether the cursor should be exhausted. Set
# this to true only when the OP_QUERY_EXHAUST flag is set.
#
# @return [Array]
# An array whose indexes include [0] documents returned, [1] number of document received,
# and [3] a cursor_id.
def receive_message(operation, message, log_message=nil, socket=nil, command=false,
read=:primary, exhaust=false)
request_id = add_message_headers(message, operation)
packed_message = message.to_s
result = ''
sock = nil
begin
if socket
sock = socket
should_checkin = false
else
if command || read == :primary
sock = checkout_writer
elsif read == :secondary
sock = checkout_reader
else
sock = checkout_tagged(read)
end
should_checkin = true
end
send_message_on_socket(packed_message, sock)
result = receive(sock, request_id, exhaust)
rescue SystemStackError, NoMemoryError, SystemCallError => ex
close
raise ex
rescue Exception => ex
if defined?(IRB)
close if ex.class == IRB::Abort
end
raise ex
ensure
if should_checkin
if command || read == :primary
checkin_writer(sock)
elsif read == :secondary
checkin_reader(sock)
else
# TODO: sock = checkout_tagged(read)
end
end
end
result
end
private
def receive(sock, cursor_id, exhaust=false)
begin
if exhaust
docs = []
num_received = 0
while(cursor_id != 0) do
receive_header(sock, cursor_id, exhaust)
number_received, cursor_id = receive_response_header(sock)
new_docs, n = read_documents(number_received, sock)
docs += new_docs
num_received += n
end
return [docs, num_received, cursor_id]
else
receive_header(sock, cursor_id, exhaust)
number_received, cursor_id = receive_response_header(sock)
docs, num_received = read_documents(number_received, sock)
return [docs, num_received, cursor_id]
end
rescue Mongo::ConnectionFailure => ex
close
raise ex
end
end
def receive_header(sock, expected_response, exhaust=false)
header = receive_message_on_socket(16, sock)
# unpacks to size, request_id, response_to
response_to = header.unpack('VVV')[2]
if !exhaust && expected_response != response_to
raise Mongo::ConnectionFailure, "Expected response #{expected_response} but got #{response_to}"
end
unless header.size == STANDARD_HEADER_SIZE
raise "Short read for DB response header: " +
"expected #{STANDARD_HEADER_SIZE} bytes, saw #{header.size}"
end
nil
end
def receive_response_header(sock)
header_buf = receive_message_on_socket(RESPONSE_HEADER_SIZE, sock)
if header_buf.length != RESPONSE_HEADER_SIZE
raise "Short read for DB response header; " +
"expected #{RESPONSE_HEADER_SIZE} bytes, saw #{header_buf.length}"
end
# unpacks to flags, cursor_id_a, cursor_id_b, starting_from, number_remaining
flags, cursor_id_a, cursor_id_b, _, number_remaining = header_buf.unpack('VVVVV')
check_response_flags(flags)
cursor_id = (cursor_id_b << 32) + cursor_id_a
[number_remaining, cursor_id]
end
def check_response_flags(flags)
if flags & Mongo::Constants::REPLY_CURSOR_NOT_FOUND != 0
raise Mongo::OperationFailure, "Query response returned CURSOR_NOT_FOUND. " +
"Either an invalid cursor was specified, or the cursor may have timed out on the server."
elsif flags & Mongo::Constants::REPLY_QUERY_FAILURE != 0
# Getting odd failures when a exception is raised here.
end
end
def read_documents(number_received, sock)
docs = []
number_remaining = number_received
while number_remaining > 0 do
buf = receive_message_on_socket(4, sock)
size = buf.unpack('V')[0]
buf << receive_message_on_socket(size - 4, sock)
number_remaining -= 1
docs << BSON::BSON_CODER.deserialize(buf)
end
[docs, number_received]
end
# Constructs a getlasterror message. This method is used exclusively by
# Connection#send_message_with_safe_check.
#
# Because it modifies message by reference, we don't need to return it.
def build_last_error_message(message, db_name, opts)
message.put_int(0)
BSON::BSON_RUBY.serialize_cstr(message, "#{db_name}.$cmd")
message.put_int(0)
message.put_int(-1)
cmd = BSON::OrderedHash.new
cmd[:getlasterror] = 1
if opts.is_a?(Hash)
opts.assert_valid_keys(:w, :wtimeout, :fsync, :j)
cmd.merge!(opts)
end
message.put_binary(BSON::BSON_CODER.serialize(cmd, false).to_s)
nil
end
# Prepares a message for transmission to MongoDB by
# constructing a valid message header.
#
# Note: this method modifies message by reference.
#
# @return [Integer] the request id used in the header
def add_message_headers(message, operation)
headers = [
# Message size.
16 + message.size,
# Unique request id.
request_id = get_request_id,
# Response id.
0,
# Opcode.
operation
].pack('VVVV')
message.prepend!(headers)
request_id
end
# Increment and return the next available request id.
#
# return [Integer]
def get_request_id
request_id = ''
@id_lock.synchronize do
request_id = @@current_request_id += 1
end
request_id
end
# Low-level method for sending a message on a socket.
# Requires a packed message and an available socket,
#
# @return [Integer] number of bytes sent
def send_message_on_socket(packed_message, socket)
begin
total_bytes_sent = socket.send(packed_message)
if total_bytes_sent != packed_message.size
packed_message.slice!(0, total_bytes_sent)
while packed_message.size > 0
byte_sent = socket.send(packed_message)
total_bytes_sent += byte_sent
packed_message.slice!(0, byte_sent)
end
end
total_bytes_sent
rescue => ex
close
raise ConnectionFailure, "Operation failed with the following exception: #{ex}:#{ex.message}"
end
end
# Low-level method for receiving data from socket.
# Requires length and an available socket.
def receive_message_on_socket(length, socket)
begin
message = receive_data(length, socket)
rescue OperationTimeout, ConnectionFailure => ex
close
if ex.class == OperationTimeout
raise OperationTimeout, "Timed out waiting on socket read."
else
raise ConnectionFailure, "Operation failed with the following exception: #{ex}"
end
end
message
end
def receive_data(length, socket)
message = new_binary_string
socket.read(length, message)
raise ConnectionFailure, "connection closed" unless message && message.length > 0
if message.length < length
chunk = new_binary_string
while message.length < length
socket.read(length - message.length, chunk)
raise ConnectionFailure, "connection closed" unless chunk.length > 0
message << chunk
end
end
message
end
if defined?(Encoding)
BINARY_ENCODING = Encoding.find("binary")
def new_binary_string
"".force_encoding(BINARY_ENCODING)
end
else
def new_binary_string
""
end
end
end
end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -20,44 +20,68 @@ module Mongo
# Instantiates and manages connections to a MongoDB replica set. # Instantiates and manages connections to a MongoDB replica set.
class ReplSetConnection < Connection class ReplSetConnection < Connection
attr_reader :nodes, :secondaries, :arbiters, :read_pool, :secondary_pools
REPL_SET_OPTS = [:read, :refresh_mode, :refresh_interval, :require_primary,
:read_secondary, :rs_name, :name]
attr_reader :replica_set_name, :seeds, :refresh_interval, :refresh_mode,
:refresh_version, :manager
# Create a connection to a MongoDB replica set. # Create a connection to a MongoDB replica set.
# #
# If no args are provided, it will check <code>ENV["MONGODB_URI"]</code>.
#
# Once connected to a replica set, you can find out which nodes are primary, secondary, and # Once connected to a replica set, you can find out which nodes are primary, secondary, and
# arbiters with the corresponding accessors: Connection#primary, Connection#secondaries, and # arbiters with the corresponding accessors: Connection#primary, Connection#secondaries, and
# Connection#arbiters. This is useful if your application needs to connect manually to nodes other # Connection#arbiters. This is useful if your application needs to connect manually to nodes other
# than the primary. # than the primary.
# #
# @param [Array] args A list of host-port pairs ending with a hash containing any options. See # @param [Array] seeds "host:port" strings
# the examples below for exactly how to use the constructor.
# #
# @option options [String] :rs_name (nil) The name of the replica set to connect to. You # @option opts [String] :name (nil) The name of the replica set to connect to. You
# can use this option to verify that you're connecting to the right replica set. # can use this option to verify that you're connecting to the right replica set.
# @option options [Boolean, Hash] :safe (false) Set the default safe-mode options # @option opts [Boolean, Hash] :safe (false) Set the default safe-mode options
# propogated to DB objects instantiated off of this Connection. This # propogated to DB objects instantiated off of this Connection. This
# default can be overridden upon instantiation of any DB by explicity setting a :safe value # default can be overridden upon instantiation of any DB by explicity setting a :safe value
# on initialization. # on initialization.
# @option options [Boolean] :read_secondary(false) If true, a random secondary node will be chosen, # @option opts [:primary, :secondary] :read (:primary) The default read preference for Mongo::DB
# and all reads will be directed to that node. # objects created from this connection object. If +:secondary+ is chosen, reads will be sent
# @option options [Logger, #debug] :logger (nil) Logger instance to receive driver operation log. # to one of the closest available secondary nodes. If a secondary node cannot be located, the
# @option options [Integer] :pool_size (1) The maximum number of socket connections allowed per # read will be sent to the primary.
# @option opts [Logger] :logger (nil) Logger instance to receive driver operation log.
# @option opts [Integer] :pool_size (1) The maximum number of socket connections allowed per
# connection pool. Note: this setting is relevant only for multi-threaded applications. # connection pool. Note: this setting is relevant only for multi-threaded applications.
# @option options [Float] :timeout (5.0) When all of the connections a pool are checked out, # @option opts [Float] :pool_timeout (5.0) When all of the connections a pool are checked out,
# this is the number of seconds to wait for a new connection to be released before throwing an exception. # this is the number of seconds to wait for a new connection to be released before throwing an exception.
# Note: this setting is relevant only for multi-threaded applications. # Note: this setting is relevant only for multi-threaded applications.
# @option opts [Float] :op_timeout (nil) The number of seconds to wait for a read operation to time out.
# @option opts [Float] :connect_timeout (30) The number of seconds to wait before timing out a
# connection attempt.
# @option opts [Boolean] :ssl (false) If true, create the connection to the server using SSL.
# @option opts [Boolean] :refresh_mode (false) Set this to :sync to periodically update the
# state of the connection every :refresh_interval seconds. Replica set connection failures
# will always trigger a complete refresh. This option is useful when you want to add new nodes
# or remove replica set nodes not currently in use by the driver.
# @option opts [Integer] :refresh_interval (90) If :refresh_mode is enabled, this is the number of seconds
# between calls to check the replica set's state.
# @option opts [Boolean] :require_primary (true) If true, require a primary node for the connection
# to succeed. Otherwise, connection will succeed as long as there's at least one secondary node.
# Note: that the number of seed nodes does not have to be equal to the number of replica set members.
# The purpose of seed nodes is to permit the driver to find at least one replica set member even if a member is down.
# #
# @example Connect to a replica set and provide two seed nodes: # @example Connect to a replica set and provide two seed nodes.
# ReplSetConnection.new(['localhost', 30000], ['localhost', 30001]) # Mongo::ReplSetConnection.new(['localhost:30000', 'localhost:30001'])
# #
# @example Connect to a replica set providing two seed nodes and ensuring a connection to the replica set named 'prod': # @example Connect to a replica set providing two seed nodes and ensuring a connection to the replica set named 'prod':
# ReplSetConnection.new(['localhost', 30000], ['localhost', 30001], :rs_name => 'prod') # Mongo::ReplSetConnection.new(['localhost:30000', 'localhost:30001'], :name => 'prod')
# #
# @example Connect to a replica set providing two seed nodes and allowing reads from a secondary node: # @example Connect to a replica set providing two seed nodes and allowing reads from a secondary node:
# ReplSetConnection.new(['localhost', 30000], ['localhost', 30001], :read_secondary => true) # Mongo::ReplSetConnection.new(['localhost:30000', 'localhost:30001'], :read => :secondary)
# #
# @see http://api.mongodb.org/ruby/current/file.REPLICA_SETS.html Replica sets in Ruby # @see http://api.mongodb.org/ruby/current/file.REPLICA_SETS.html Replica sets in Ruby
# #
# @raise [MongoArgumentError] If called with no arguments and <code>ENV["MONGODB_URI"]</code> implies a direct connection.
#
# @raise [ReplicaSetConnectionError] This is raised if a replica set name is specified and the # @raise [ReplicaSetConnectionError] This is raised if a replica set name is specified and the
# driver fails to connect to a replica set with that name. # driver fails to connect to a replica set with that name.
def initialize(*args) def initialize(*args)
@ -67,67 +91,170 @@ module Mongo
opts = {} opts = {}
end end
unless args.length > 0 nodes = args
raise MongoArgumentError, "A ReplSetConnection requires at least one node."
if nodes.empty? and ENV.has_key?('MONGODB_URI')
parser = URIParser.new ENV['MONGODB_URI'], opts
if parser.direct?
raise MongoArgumentError, "Mongo::ReplSetConnection.new called with no arguments, but ENV['MONGODB_URI'] implies a direct connection."
end
opts = parser.connection_options
nodes = parser.nodes
end end
# Get seed nodes unless nodes.length > 0
@nodes = args raise MongoArgumentError, "A ReplSetConnection requires at least one seed node."
end
# Replica set name # This is temporary until support for the old format is dropped
@replica_set = opts[:rs_name] if nodes.first.last.is_a?(Integer)
warn "Initiating a ReplSetConnection with seeds passed as individual [host, port] array arguments is deprecated."
warn "Please specify hosts as an array of 'host:port' strings; the old format will be removed in v2.0"
@seeds = nodes
else
@seeds = nodes.first.map do |host_port|
host, port = host_port.split(":")
[ host, port.to_i ]
end
end
# Cache the various node types when connecting to a replica set. # TODO: add a method for replacing this list of node.
@secondaries = [] @seeds.freeze
@arbiters = []
# Connection pools for each secondary node # Refresh
@secondary_pools = [] @last_refresh = Time.now
@read_pool = nil @refresh_version = 0
# Are we allowing reads from secondaries? # No connection manager by default.
@read_secondary = opts.fetch(:read_secondary, false) @manager = nil
@old_managers = []
# Lock for request ids.
@id_lock = Mutex.new
@pool_mutex = Mutex.new
@connected = false
@safe_mutex_lock = Mutex.new
@safe_mutexes = Hash.new {|hash, key| hash[key] = Mutex.new}
@connect_mutex = Mutex.new
@refresh_mutex = Mutex.new
check_opts(opts)
setup(opts) setup(opts)
end end
# Create a new socket and attempt to connect to master. def valid_opts
# If successful, sets host and port to master and returns the socket. GENERIC_OPTS + REPL_SET_OPTS
# end
# If connecting to a replica set, this method will replace the
# initially-provided seed list with any nodes known to the set. def inspect
# "<Mongo::ReplSetConnection:0x#{self.object_id.to_s(16)} @seeds=#{@seeds.inspect} " +
# @raise [ConnectionFailure] if unable to connect to any host or port. "@connected=#{@connected}>"
end
# Initiate a connection to the replica set.
def connect def connect
reset_connection log(:info, "Connecting...")
@nodes_to_try = @nodes.clone @connect_mutex.synchronize do
return if @connected
while connecting? discovered_seeds = @manager ? @manager.seeds : []
node = @nodes_to_try.shift @manager = PoolManager.new(self, discovered_seeds)
config = check_is_master(node)
if is_primary?(config) Thread.current[:managers] ||= Hash.new
set_primary(node) Thread.current[:managers][self] = @manager
else
set_auxillary(node, config)
end
end
pick_secondary_for_read if @read_secondary @manager.connect
@refresh_version += 1
if connected? if @require_primary && @manager.primary.nil? #TODO: in v2.0, we'll let this be optional and do a lazy connect.
BSON::BSON_CODER.update_max_bson_size(self) close
else
if @secondary_pools.empty?
raise ConnectionFailure, "Failed to connect any given host:port"
else
raise ConnectionFailure, "Failed to connect to primary node." raise ConnectionFailure, "Failed to connect to primary node."
elsif @manager.read_pool.nil?
close
raise ConnectionFailure, "Failed to connect to any node."
else
@connected = true
end end
end end
end end
# Determine whether a replica set refresh is
# required. If so, run a hard refresh. You can
# force a hard refresh by running
# ReplSetConnection#hard_refresh!
#
# @return [Boolean] +true+ unless a hard refresh
# is run and the refresh lock can't be acquired.
def refresh(opts={})
if !connected?
log(:info, "Trying to check replica set health but not " +
"connected...")
return hard_refresh!
end
log(:debug, "Checking replica set connection health...")
@manager.check_connection_health
if @manager.refresh_required?
return hard_refresh!
end
return true
end
# Force a hard refresh of this connection's view
# of the replica set.
#
# @return [Boolean] +true+ if hard refresh
# occurred. +false+ is returned when unable
# to get the refresh lock.
def hard_refresh!
log(:info, "Initiating hard refresh...")
discovered_seeds = @manager ? @manager.seeds : []
new_manager = PoolManager.new(self, discovered_seeds | @seeds)
new_manager.connect
Thread.current[:managers][self] = new_manager
# TODO: make sure that connect has succeeded
@old_managers << @manager
@manager = new_manager
@refresh_version += 1
return true
end
def connected?
@connected && (@manager.primary_pool || @manager.read_pool)
end
# @deprecated
def connecting? def connecting?
@nodes_to_try.length > 0 warn "ReplSetConnection#connecting? is deprecated and will be removed in v2.0."
false
end
# The replica set primary's host name.
#
# @return [String]
def host
@manager.primary_pool.host
end
# The replica set primary's port.
#
# @return [Integer]
def port
@manager.primary_pool.port
end
def nodes
warn "ReplSetConnection#nodes is DEPRECATED and will be removed in v2.0. " +
"Please use ReplSetConnection#seeds instead."
@seeds
end end
# Determine whether we're reading from a primary node. If false, # Determine whether we're reading from a primary node. If false,
@ -135,169 +262,328 @@ module Mongo
# #
# @return [Boolean] # @return [Boolean]
def read_primary? def read_primary?
!@read_pool || @read_pool.length.zero? @manager.read_pool == @manager.primary_pool
end
alias :primary? :read_primary?
def read_preference
@read
end end
# Close the connection to the database. # Close the connection to the database.
def close def close(opts={})
super if opts[:soft]
@read_pool = nil @manager.close(:soft => true) if @manager
@secondary_pools.each do |pool| else
pool.close @manager.close if @manager
end end
# Clear the reference to this object.
if Thread.current[:managers]
Thread.current[:managers].delete(self)
end
@connected = false
end end
# If a ConnectionFailure is raised, this method will be called # If a ConnectionFailure is raised, this method will be called
# to close the connection and reset connection values. # to close the connection and reset connection values.
# TODO: what's the point of this method? # @deprecated
def reset_connection def reset_connection
super close
@secondaries = [] warn "ReplSetConnection#reset_connection is now deprecated and will be removed in v2.0. " +
@secondary_pools = [] "Use ReplSetConnection#close instead."
@arbiters = []
@nodes_tried = []
@nodes_to_try = []
end end
# Is it okay to connect to a slave? # Returns +true+ if it's okay to read from a secondary node.
# Since this is a replica set, this must always be true.
# #
# @return [Boolean] # This method exist primarily so that Cursor objects will
# generate query messages with a slaveOkay value of +true+.
#
# @return [Boolean] +true+
def slave_ok? def slave_ok?
@read_secondary || @slave_ok true
end end
private def authenticate_pools
if primary_pool
primary_pool.authenticate_existing
end
secondary_pools.each do |pool|
pool.authenticate_existing
end
end
def logout_pools(db)
if primary_pool
primary_pool.logout_existing(db)
end
secondary_pools.each do |pool|
pool.logout_existing(db)
end
end
# Generic socket checkout
# Takes a block that returns a socket from pool
def checkout(&block)
if connected?
sync_refresh
else
connect
end
def check_is_master(node)
begin begin
host, port = *node socket = block.call
socket = TCPSocket.new(host, port) rescue => ex
socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) checkin(socket) if socket
raise ex
end
config = self['admin'].command({:ismaster => 1}, :sock => socket) if socket
socket
else
@connected = false
raise ConnectionFailure.new("Could not checkout a socket.")
end
end
check_set_name(config, socket) # Checkout best available socket by trying primary
rescue OperationFailure, SocketError, SystemCallError, IOError => ex # pool first and then falling back to secondary.
close unless connected? def checkout_best
ensure checkout do
@nodes_tried << node socket = get_socket_from_pool(:primary)
if config if !socket
nodes = [] connect
nodes += config['hosts'] if config['hosts'] socket = get_socket_from_pool(:secondary)
nodes += config['arbiters'] if config['arbiters']
nodes += config['passives'] if config['passives']
update_node_list(nodes)
if config['msg'] && @logger
@logger.warn("MONGODB #{config['msg']}")
end
end end
socket
socket.close if socket
end end
config
end
# Primary, when connecting to a replica can, can only be a true primary node.
# (And not a slave, which is possible when connecting with the standard
# Connection class.
def is_primary?(config)
config && (config['ismaster'] == 1 || config['ismaster'] == true)
end
# Pick a node randomly from the set of possible secondaries.
def pick_secondary_for_read
if (size = @secondary_pools.size) > 0
@read_pool = @secondary_pools[rand(size)]
end
end
# Make sure that we're connected to the expected replica set.
def check_set_name(config, socket)
if @replica_set
config = self['admin'].command({:replSetGetStatus => 1},
:sock => socket, :check_response => false)
if !Mongo::Support.ok?(config)
raise ReplicaSetConnectionError, config['errmsg']
elsif config['set'] != @replica_set
raise ReplicaSetConnectionError,
"Attempting to connect to replica set '#{config['set']}' but expected '#{@replica_set}'"
end
end
end
# Determines what kind of node we have and caches its host
# and port so that users can easily connect manually.
def set_auxillary(node, config)
if config
if config['secondary']
host, port = *node
@secondaries << node unless @secondaries.include?(node)
@secondary_pools << Pool.new(self, host, port, :size => @pool_size, :timeout => @timeout)
elsif config['arbiterOnly']
@arbiters << node unless @arbiters.include?(node)
end
end
end
# Update the list of known nodes. Only applies to replica sets,
# where the response to the ismaster command will return a list
# of known hosts.
#
# @param hosts [Array] a list of hosts, specified as string-encoded
# host-port values. Example: ["myserver-1.org:27017", "myserver-1.org:27017"]
#
# @return [Array] the updated list of nodes
def update_node_list(hosts)
new_nodes = hosts.map do |host|
if !host.respond_to?(:split)
warn "Could not parse host #{host.inspect}."
next
end
host, port = host.split(':')
[host, port ? port.to_i : Connection::DEFAULT_PORT]
end
# Replace the list of seed nodes with the canonical list.
@nodes = new_nodes.clone
@nodes_to_try = new_nodes - @nodes_tried
end end
# Checkout a socket for reading (i.e., a secondary node). # Checkout a socket for reading (i.e., a secondary node).
# Note that @read_pool might point to the primary pool
# if no read pool has been defined.
def checkout_reader def checkout_reader
connect unless connected? checkout do
socket = get_socket_from_pool(:read)
if !socket
connect
socket = get_socket_from_pool(:primary)
end
socket
end
end
if @read_pool # Checkout a socket from a secondary
@read_pool.checkout # For :read_preference => :secondary_only
else def checkout_secondary
checkout_writer checkout do
get_socket_from_pool(:secondary)
end end
end end
# Checkout a socket for writing (i.e., a primary node). # Checkout a socket for writing (i.e., a primary node).
def checkout_writer def checkout_writer
connect unless connected? checkout do
get_socket_from_pool(:primary)
@primary_pool.checkout end
end end
# Checkin a socket used for reading. # Checkin a socket used for reading.
def checkin_reader(socket) def checkin_reader(socket)
if @read_pool if socket
@read_pool.checkin(socket) socket.pool.checkin(socket)
else
checkin_writer(socket)
end end
sync_refresh
end end
# Checkin a socket used for writing. # Checkin a socket used for writing.
def checkin_writer(socket) def checkin_writer(socket)
if @primary_pool if socket
@primary_pool.checkin(socket) socket.pool.checkin(socket)
end
sync_refresh
end
def close_socket(socket)
begin
socket.close if socket
rescue IOError
log(:info, "Tried to close socket #{socket} but already closed.")
end
end
def ensure_manager
Thread.current[:managers] ||= Hash.new
if Thread.current[:managers][self] != @manager
Thread.current[:managers][self] = @manager
end
end
def get_socket_from_pool(pool_type)
ensure_manager
pool = case pool_type
when :primary
primary_pool
when :secondary
secondary_pool
when :read
read_pool
end
begin
if pool
pool.checkout
end
rescue ConnectionFailure => ex
log(:info, "Failed to checkout from #{pool} with #{ex.class}; #{ex.message}")
return nil
end
end
def local_manager
Thread.current[:managers][self] if Thread.current[:managers]
end
def arbiters
local_manager.arbiters.nil? ? [] : local_manager.arbiters
end
def primary
local_manager ? local_manager.primary : nil
end
# Note: might want to freeze these after connecting.
def secondaries
local_manager ? local_manager.secondaries : []
end
def hosts
local_manager ? local_manager.hosts : []
end
def primary_pool
local_manager ? local_manager.primary_pool : nil
end
def read_pool
local_manager ? local_manager.read_pool : nil
end
def secondary_pool
local_manager ? local_manager.secondary_pool : nil
end
def secondary_pools
local_manager ? local_manager.secondary_pools : []
end
def tag_map
local_manager ? local_manager.tag_map : {}
end
def max_bson_size
if local_manager && local_manager.max_bson_size
local_manager.max_bson_size
else
Mongo::DEFAULT_MAX_BSON_SIZE
end
end
private
# Parse option hash
def setup(opts)
# Require a primary node to connect?
@require_primary = opts.fetch(:require_primary, true)
# Refresh
@refresh_mode = opts.fetch(:refresh_mode, false)
@refresh_interval = opts.fetch(:refresh_interval, 90)
if @refresh_mode && @refresh_interval < 60
@refresh_interval = 60 unless ENV['TEST_MODE'] = 'TRUE'
end
if @refresh_mode == :async
warn ":async refresh mode has been deprecated. Refresh
mode will be disabled."
elsif ![:sync, false].include?(@refresh_mode)
raise MongoArgumentError,
"Refresh mode must be either :sync or false."
end
# Are we allowing reads from secondaries?
if opts[:read_secondary]
warn ":read_secondary options has now been deprecated and will " +
"be removed in driver v2.0. Use the :read option instead."
@read_secondary = opts.fetch(:read_secondary, false)
@read = :secondary
else
@read = opts.fetch(:read, :primary)
Mongo::Support.validate_read_preference(@read)
end
# Replica set name
if opts[:rs_name]
warn ":rs_name option has been deprecated and will be removed in v2.0. " +
"Please use :name instead."
@replica_set_name = opts[:rs_name]
else
@replica_set_name = opts[:name]
end
opts[:connect_timeout] = opts[:connect_timeout] || 30
super opts
end
# Checkout a socket connected to a node with one of
# the provided tags. If no such node exists, raise
# an exception.
#
# NOTE: will be available in driver release v2.0.
def checkout_tagged(tags)
tags.each do |k, v|
pool = self.tag_map[{k.to_s => v}]
if pool
socket = pool.checkout
return socket
end
end
raise NodeWithTagsNotFound,
"Could not find a connection tagged with #{tags}."
end
def prune_managers
@old_managers.each do |manager|
if manager != @manager
if manager.closed?
@old_managers.delete(manager)
else
manager.close(:soft => true)
end
end
end
end
def sync_refresh
if @refresh_mode == :sync &&
((Time.now - @last_refresh) > @refresh_interval)
@last_refresh = Time.now
if @refresh_mutex.try_lock
begin
refresh
prune_managers
ensure
@refresh_mutex.unlock
end
end
end end
end end
end end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -58,3 +58,48 @@ class String
end end
end end
#:nodoc:
class Class
def mongo_thread_local_accessor name, options = {}
m = Module.new
m.module_eval do
class_variable_set :"@@#{name}", Hash.new {|h,k| h[k] = options[:default] }
end
m.module_eval %{
def #{name}
@@#{name}[Thread.current.object_id]
end
def #{name}=(val)
@@#{name}[Thread.current.object_id] = val
end
}
class_eval do
include m
extend m
end
end
end
# Fix a bug in the interaction of
# mutexes and timeouts in Ruby 1.9.
# See https://jira.mongodb.org/browse/RUBY-364 for details.
if RUBY_VERSION > '1.9'
class Mutex
def lock_with_hack
lock_without_hack
rescue ThreadError => e
if e.message != "deadlock; recursive locking"
raise
else
unlock
lock_without_hack
end
end
alias_method :lock_without_hack, :lock
alias_method :lock, :lock_with_hack
end
end

53
lib/mongo/util/logging.rb Normal file
View File

@ -0,0 +1,53 @@
module Mongo
module Logging
def write_logging_startup_message
log(:debug, "Logging level is currently :debug which could negatively impact " +
"client-side performance. You should set your logging level no lower than " +
":info in production.")
end
# Log a message with the given level.
def log(level, msg)
return unless @logger
case level
when :fatal then
@logger.fatal "MONGODB [FATAL] #{msg}"
when :error then
@logger.error "MONGODB [ERROR] #{msg}"
when :warn then
@logger.warn "MONGODB [WARNING] #{msg}"
when :info then
@logger.info "MONGODB [INFO] #{msg}"
when :debug then
@logger.debug "MONGODB [DEBUG] #{msg}"
else
@logger.debug "MONGODB [DEBUG] #{msg}"
end
end
# Execute the block and log the operation described by name and payload.
def instrument(name, payload = {})
start_time = Time.now
res = yield
log_operation(name, payload, start_time)
res
end
protected
def log_operation(name, payload, start_time)
@logger && @logger.debug do
msg = "MONGODB "
msg << "(#{((Time.now - start_time) * 1000).to_i}ms) "
msg << "#{payload[:database]}['#{payload[:collection]}'].#{name}("
msg << payload.values_at(:selector, :document, :documents, :fields ).compact.map(&:inspect).join(', ') + ")"
msg << ".skip(#{payload[:skip]})" if payload[:skip]
msg << ".limit(#{payload[:limit]})" if payload[:limit]
msg << ".sort(#{payload[:order]})" if payload[:order]
msg
end
end
end
end

187
lib/mongo/util/node.rb Normal file
View File

@ -0,0 +1,187 @@
module Mongo
class Node
attr_accessor :host, :port, :address, :config, :connection, :socket,
:last_state
def initialize(connection, data)
@connection = connection
if data.is_a?(String)
@host, @port = split_nodes(data)
else
@host = data[0]
@port = data[1].nil? ? Connection::DEFAULT_PORT : data[1].to_i
end
@address = "#{host}:#{port}"
@config = nil
@socket = nil
end
def eql?(other)
other.is_a?(Node) && host == other.host && port == other.port
end
alias :== :eql?
def host_string
address
end
def inspect
"<Mongo::Node:0x#{self.object_id.to_s(16)} @host=#{@host} @port=#{@port}>"
end
# Create a connection to the provided node,
# and, if successful, return the socket. Otherwise,
# return nil.
def connect
begin
socket = nil
socket = @connection.socket_class.new(@host, @port,
@connection.op_timeout, @connection.connect_timeout
)
return nil if socket.nil?
rescue OperationTimeout, ConnectionFailure, OperationFailure, SocketError, SystemCallError, IOError => ex
@connection.log(:debug, "Failed connection to #{host_string} with #{ex.class}, #{ex.message}.")
socket.close if socket
return nil
end
@socket = socket
end
def close
if @socket && !@socket.closed?
@socket.close
end
@socket = nil
@config = nil
end
def connected?
@socket != nil
end
def active?
begin
result = @connection['admin'].command({:ping => 1}, :socket => @socket)
return result['ok'] == 1
rescue OperationFailure, SocketError, SystemCallError, IOError
return nil
end
end
# Get the configuration for the provided node as returned by the
# ismaster command. Additionally, check that the replica set name
# matches with the name provided.
def set_config
begin
@config = @connection['admin'].command({:ismaster => 1}, :socket => @socket)
if @config['msg'] && @logger
@connection.log(:warn, "#{config['msg']}")
end
check_set_membership(config)
check_set_name(config)
rescue ConnectionFailure, OperationFailure, OperationTimeout, SocketError, SystemCallError, IOError => ex
@connection.log(:warn, "Attempted connection to node #{host_string} raised " +
"#{ex.class}: #{ex.message}")
# Socket may already be nil from issuing command
if @socket && !@socket.closed?
@socket.close
end
return nil
end
@config
end
# Return a list of replica set nodes from the config.
# Note: this excludes arbiters.
def node_list
connect unless connected?
set_config unless @config
return [] unless config
nodes = []
nodes += config['hosts'] if config['hosts']
nodes += config['passives'] if config['passives']
nodes
end
def arbiters
connect unless connected?
set_config unless @config
return [] unless config['arbiters']
config['arbiters'].map do |arbiter|
split_nodes(arbiter)
end
end
def tags
connect unless connected?
set_config unless @config
return {} unless config['tags'] && !config['tags'].empty?
config['tags']
end
def primary?
@config['ismaster'] == true || @config['ismaster'] == 1
end
def secondary?
@config['secondary'] == true || @config['secondary'] == 1
end
def host_port
[@host, @port]
end
def hash
address.hash
end
private
def split_nodes(host_string)
data = host_string.split(":")
host = data[0]
port = data[1].nil? ? Connection::DEFAULT_PORT : data[1].to_i
[host, port]
end
# Ensure that this node is a healty member of a replica set.
def check_set_membership(config)
if !config['hosts']
message = "Will not connect to #{host_string} because it's not a member " +
"of a replica set."
raise ConnectionFailure, message
elsif config['hosts'].length == 1 && !config['ismaster'] &&
!config['secondary']
message = "Attempting to connect to an unhealthy, single-node replica set."
raise ConnectionFailure, message
end
end
# Ensure that this node is part of a replica set of the expected name.
def check_set_name(config)
if @connection.replica_set_name
if !config['setName']
@connection.log(:warn, "Could not verify replica set name for member #{host_string} " +
"because ismaster does not return name in this version of MongoDB")
elsif @connection.replica_set_name != config['setName']
message = "Attempting to connect to replica set '#{config['setName']}' on member #{host_string} " +
"but expected '#{@connection.replica_set_name}'"
raise ReplicaSetConnectionError, message
end
end
end
end
end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -17,19 +17,28 @@
module Mongo module Mongo
class Pool class Pool
PING_ATTEMPTS = 6
MAX_PING_TIME = 1_000_000
PRUNE_INTERVAL = 10_000
attr_accessor :host, :port, :size, :timeout, :safe, :checked_out attr_accessor :host, :port, :address,
:size, :timeout, :safe, :checked_out, :connection
# Create a new pool of connections. # Create a new pool of connections.
#
def initialize(connection, host, port, opts={}) def initialize(connection, host, port, opts={})
@connection = connection @connection = connection
@host, @port = host, port @host, @port = host, port
# A Mongo::Node object.
@node = opts[:node]
# The string address
@address = "#{@host}:#{@port}"
# Pool size and timeout. # Pool size and timeout.
@size = opts[:size] || 1 @size = opts.fetch(:size, 20)
@timeout = opts[:timeout] || 5.0 @timeout = opts.fetch(:timeout, 30)
# Mutex for synchronizing pool access # Mutex for synchronizing pool access
@connection_mutex = Mutex.new @connection_mutex = Mutex.new
@ -37,29 +46,106 @@ module Mongo
# Condition variable for signal and wait # Condition variable for signal and wait
@queue = ConditionVariable.new @queue = ConditionVariable.new
# Operations to perform on a socket
@socket_ops = Hash.new { |h, k| h[k] = [] }
@sockets = [] @sockets = []
@pids = {}
@checked_out = [] @checked_out = []
@ping_time = nil
@last_ping = nil
@closed = false
@threads_to_sockets = {}
@checkout_counter = 0
end end
def close # Close this pool.
@sockets.each do |sock| #
begin # @option opts [Boolean] :soft (false) If true,
sock.close # close only those sockets that are not checked out.
rescue IOError => ex def close(opts={})
warn "IOError when attempting to close socket connected " @connection_mutex.synchronize do
+ "to #{@host}:#{@port}: #{ex.inspect}" if opts[:soft] && !@checked_out.empty?
@closing = true
close_sockets(@sockets - @checked_out)
else
close_sockets(@sockets)
@closed = true
end end
end end
@host = @port = nil end
@sockets.clear
@checked_out.clear def closed?
@closed
end
def inspect
"#<Mongo::Pool:0x#{self.object_id.to_s(16)} @host=#{@host} @port=#{port} " +
"@ping_time=#{@ping_time} #{@checked_out.size}/#{@size} sockets available.>"
end
def host_string
"#{@host}:#{@port}"
end
def host_port
[@host, @port]
end
# Refresh ping time only if we haven't
# checked within the last five minutes.
def ping_time
if !@last_ping
@last_ping = Time.now
@ping_time = refresh_ping_time
elsif Time.now - @last_ping > 300
@last_ping = Time.now
@ping_time = refresh_ping_time
else
@ping_time
end
end
# Return the time it takes on average
# to do a round-trip against this node.
def refresh_ping_time
trials = []
PING_ATTEMPTS.times do
t1 = Time.now
if !self.ping
return MAX_PING_TIME
end
trials << (Time.now - t1) * 1000
end
trials.sort!
# Delete shortest and longest times
trials.delete_at(trials.length-1)
trials.delete_at(0)
total = 0.0
trials.each { |t| total += t }
(total / trials.length).ceil
end
def ping
begin
return self.connection['admin'].command({:ping => 1}, :socket => @node.socket)
rescue OperationFailure, SocketError, SystemCallError, IOError
return false
end
end end
# Return a socket to the pool. # Return a socket to the pool.
def checkin(socket) def checkin(socket)
@connection_mutex.synchronize do @connection_mutex.synchronize do
@checked_out.delete(socket) if @checked_out.delete(socket)
@queue.signal @queue.signal
else
return false
end
end end
true true
end end
@ -70,24 +156,83 @@ module Mongo
# therefore, it runs within a mutex. # therefore, it runs within a mutex.
def checkout_new_socket def checkout_new_socket
begin begin
socket = TCPSocket.new(@host, @port) socket = @connection.socket_class.new(@host, @port, @connection.op_timeout)
socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) socket.pool = self
rescue => ex rescue => ex
raise ConnectionFailure, "Failed to connect socket: #{ex}" socket.close if socket
raise ConnectionFailure, "Failed to connect to host #{@host} and port #{@port}: #{ex}"
@node.close if @node
end end
# If any saved authentications exist, we want to apply those
# when creating new sockets.
@connection.apply_saved_authentication(:socket => socket)
@sockets << socket @sockets << socket
@pids[socket] = Process.pid
@checked_out << socket @checked_out << socket
@threads_to_sockets[Thread.current] = socket
socket socket
end end
# If a user calls DB#authenticate, and several sockets exist,
# then we need a way to apply the authentication on each socket.
# So we store the apply_authentication method, and this will be
# applied right before the next use of each socket.
def authenticate_existing
@connection_mutex.synchronize do
@sockets.each do |socket|
@socket_ops[socket] << Proc.new do
@connection.apply_saved_authentication(:socket => socket)
end
end
end
end
# Store the logout op for each existing socket to be applied before
# the next use of each socket.
def logout_existing(db)
@connection_mutex.synchronize do
@sockets.each do |socket|
@socket_ops[socket] << Proc.new do
@connection.db(db).issue_logout(:socket => socket)
end
end
end
end
# Checks out the first available socket from the pool. # Checks out the first available socket from the pool.
# #
# If the pid has changed, remove the socket and check out
# new one.
#
# This method is called exclusively from #checkout; # This method is called exclusively from #checkout;
# therefore, it runs within a mutex. # therefore, it runs within a mutex.
def checkout_existing_socket def checkout_existing_socket(socket=nil)
socket = (@sockets - @checked_out).first if !socket
@checked_out << socket socket = (@sockets - @checked_out).first
socket end
if @pids[socket] != Process.pid
@pids[socket] = nil
@sockets.delete(socket)
if socket
socket.close unless socket.closed?
end
checkout_new_socket
else
@checked_out << socket
@threads_to_sockets[Thread.current] = socket
socket
end
end
def prune_thread_socket_hash
current_threads = Set[*Thread.list]
@threads_to_sockets.delete_if do |thread, socket|
!current_threads.include?(thread)
end
end end
# Check out an existing socket or create a new socket if the maximum # Check out an existing socket or create a new socket if the maximum
@ -98,28 +243,75 @@ module Mongo
start_time = Time.now start_time = Time.now
loop do loop do
if (Time.now - start_time) > @timeout if (Time.now - start_time) > @timeout
raise ConnectionTimeoutError, "could not obtain connection within " + raise ConnectionTimeoutError, "could not obtain connection within " +
"#{@timeout} seconds. The max pool size is currently #{@size}; " + "#{@timeout} seconds. The max pool size is currently #{@size}; " +
"consider increasing the pool size or timeout." "consider increasing the pool size or timeout."
end end
@connection_mutex.synchronize do @connection_mutex.synchronize do
socket = if @checked_out.size < @sockets.size if @checkout_counter > PRUNE_INTERVAL
checkout_existing_socket @checkout_counter = 0
elsif @sockets.size < @size prune_thread_socket_hash
checkout_new_socket else
end @checkout_counter += 1
end
return socket if socket
if socket_for_thread = @threads_to_sockets[Thread.current]
# Otherwise, wait if !@checked_out.include?(socket_for_thread)
if @logger socket = checkout_existing_socket(socket_for_thread)
@logger.warn "MONGODB Waiting for available connection; " + end
"#{@checked_out.size} of #{@size} connections checked out." else # First checkout for this thread
thread_length = @threads_to_sockets.keys.length
if (thread_length <= @sockets.size) && (@sockets.size < @size)
socket = checkout_new_socket
elsif @checked_out.size < @sockets.size
socket = checkout_existing_socket
elsif @sockets.size < @size
socket = checkout_new_socket
end
end
if socket
# This calls all procs, in order, scoped to existing sockets.
# At the moment, we use this to lazily authenticate and
# logout existing socket connections.
@socket_ops[socket].reject! do |op|
op.call
end
if socket.closed?
@checked_out.delete(socket)
@sockets.delete(socket)
@threads_to_sockets.each do |k,v|
if v == socket
@threads_to_sockets.delete(k)
end
end
socket = checkout_new_socket
end
return socket
else
# Otherwise, wait
@queue.wait(@connection_mutex)
end end
@queue.wait(@connection_mutex)
end end
end end
end end
private
def close_sockets(sockets)
sockets.each do |socket|
@sockets.delete(socket)
begin
socket.close unless socket.closed?
rescue IOError => ex
warn "IOError when attempting to close socket connected to #{@host}:#{@port}: #{ex.inspect}"
end
end
end
end end
end end

View File

@ -0,0 +1,305 @@
module Mongo
class PoolManager
attr_reader :connection, :arbiters, :primary, :secondaries, :primary_pool,
:read_pool, :secondary_pool, :secondary_pools, :hosts, :nodes,
:max_bson_size, :tags_to_pools, :tag_map, :members
# Create a new set of connection pools.
#
# The pool manager will by default use the original seed list passed
# to the connection objects, accessible via connection.seeds. In addition,
# the user may pass an additional list of seeds nodes discovered in real
# time. The union of these lists will be used when attempting to connect,
# with the newly-discovered nodes being used first.
def initialize(connection, seeds=[])
@connection = connection
@original_seeds = connection.seeds
@seeds = seeds
@previously_connected = false
end
def inspect
"<Mongo::PoolManager:0x#{self.object_id.to_s(16)} @seeds=#{@seeds}>"
end
def connect
close if @previously_connected
initialize_data
members = connect_to_members
initialize_pools(members)
cache_discovered_seeds(members)
set_read_pool
set_tag_mappings
@members = members
@previously_connected = true
end
# We're healthy if all members are pingable and if the view
# of the replica set returned by isMaster is equivalent
# to our view. If any of these isn't the case,
# set @refresh_required to true, and return.
def check_connection_health
begin
seed = get_valid_seed_node
rescue ConnectionFailure
@refresh_required = true
return
end
config = seed.set_config
if !config
@refresh_required = true
seed.close
return
end
if config['hosts'].length != @members.length
@refresh_required = true
seed.close
return
end
config['hosts'].each do |host|
member = @members.detect do |m|
m.address == host
end
if member && validate_existing_member(member)
next
else
@refresh_required = true
seed.close
return false
end
end
seed.close
end
# The replica set connection should initiate a full refresh.
def refresh_required?
@refresh_required
end
def closed?
pools.all? { |pool| pool.closed? }
end
def close(opts={})
begin
if @primary_pool
@primary_pool.close(opts)
end
if @secondary_pools
@secondary_pools.each do |pool|
pool.close(opts)
end
end
if @members
@members.each do |member|
member.close
end
end
rescue ConnectionFailure
end
end
# The set of nodes that this class has discovered and
# successfully connected to.
def seeds
@seeds || []
end
private
def pools
[@primary_pool, *@secondary_pools]
end
def validate_existing_member(member)
config = member.set_config
if !config
return false
else
if member.primary?
if member.last_state == :primary
return true
else # This node is now primary, but didn't used to be.
return false
end
elsif member.last_state == :secondary &&
member.secondary?
return true
else # This node isn't what it used to be.
return false
end
end
end
def initialize_data
@primary = nil
@primary_pool = nil
@read_pool = nil
@arbiters = []
@secondaries = []
@secondary_pool = nil
@secondary_pools = []
@hosts = Set.new
@members = Set.new
@tags_to_pools = {}
@tag_map = {}
@refresh_required = false
end
# Connect to each member of the replica set
# as reported by the given seed node, and return
# as a list of Mongo::Node objects.
def connect_to_members
members = []
seed = get_valid_seed_node
seed.node_list.each do |host|
node = Mongo::Node.new(self.connection, host)
if node.connect && node.set_config
members << node
end
end
seed.close
if members.empty?
raise ConnectionFailure, "Failed to connect to any given member."
end
members
end
def associate_tags_with_pool(tags, pool)
tags.each_key do |key|
@tags_to_pools[{key => tags[key]}] ||= []
@tags_to_pools[{key => tags[key]}] << pool
end
end
# Initialize the connection pools for the primary and secondary nodes.
def initialize_pools(members)
members.each do |member|
@hosts << member.host_string
if member.primary?
assign_primary(member)
elsif member.secondary? && !@secondaries.include?(member.host_port)
assign_secondary(member)
end
end
@max_bson_size = members.first.config['maxBsonObjectSize'] ||
Mongo::DEFAULT_MAX_BSON_SIZE
@arbiters = members.first.arbiters
end
def assign_primary(member)
member.last_state = :primary
@primary = member.host_port
@primary_pool = Pool.new(self.connection, member.host, member.port,
:size => self.connection.pool_size,
:timeout => self.connection.pool_timeout,
:node => member)
associate_tags_with_pool(member.tags, @primary_pool)
end
def assign_secondary(member)
member.last_state = :secondary
@secondaries << member.host_port
pool = Pool.new(self.connection, member.host, member.port,
:size => self.connection.pool_size,
:timeout => self.connection.pool_timeout,
:node => member)
@secondary_pools << pool
associate_tags_with_pool(member.tags, pool)
end
# If there's more than one pool associated with
# a given tag, choose a close one using the bucket method.
def set_tag_mappings
@tags_to_pools.each do |key, pool_list|
if pool_list.length == 1
@tag_map[key] = pool_list.first
else
@tag_map[key] = nearby_pool_from_set(pool_list)
end
end
end
# Pick a node from the set of possible secondaries.
# If more than one node is available, use the ping
# time to figure out which nodes to choose from.
def set_read_pool
if @secondary_pools.empty?
@read_pool = @primary_pool
elsif @secondary_pools.size == 1
@read_pool = @secondary_pools[0]
@secondary_pool = @read_pool
else
@read_pool = nearby_pool_from_set(@secondary_pools)
@secondary_pool = @read_pool
end
end
def nearby_pool_from_set(pool_set)
ping_ranges = Array.new(3) { |i| Array.new }
pool_set.each do |pool|
case pool.ping_time
when 0..150
ping_ranges[0] << pool
when 150..1000
ping_ranges[1] << pool
else
ping_ranges[2] << pool
end
end
for list in ping_ranges do
break if !list.empty?
end
list[rand(list.length)]
end
# Iterate through the list of provided seed
# nodes until we've gotten a response from the
# replica set we're trying to connect to.
#
# If we don't get a response, raise an exception.
def get_valid_seed_node
seed_list.each do |seed|
node = Mongo::Node.new(self.connection, seed)
if !node.connect
next
elsif node.set_config
return node
else
node.close
end
end
raise ConnectionFailure, "Cannot connect to a replica set using seeds " +
"#{seed_list.map {|s| "#{s[0]}:#{s[1]}" }.join(', ')}"
end
def seed_list
@seeds | @original_seeds
end
def cache_discovered_seeds(members)
@seeds = members.map { |n| n.host_port }
end
end
end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@ -0,0 +1,63 @@
require 'socket'
require 'openssl'
require 'timeout'
module Mongo
# A basic wrapper over Ruby's SSLSocket that initiates
# a TCP connection over SSL and then provides an basic interface
# mirroring Ruby's TCPSocket, vis., TCPSocket#send and TCPSocket#read.
class SSLSocket
attr_accessor :pool
def initialize(host, port, op_timeout=nil, connect_timeout=nil)
@op_timeout = op_timeout
@connect_timeout = connect_timeout
@socket = ::TCPSocket.new(host, port)
@socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
@ssl = OpenSSL::SSL::SSLSocket.new(@socket)
@ssl.sync_close = true
connect
end
def connect
if @connect_timeout
Timeout::timeout(@connect_timeout, ConnectionTimeoutError) do
@ssl.connect
end
else
@ssl.connect
end
end
def send(data)
@ssl.syswrite(data)
end
def read(length, buffer)
if @op_timeout
Timeout::timeout(@op_timeout, OperationTimeout) do
@ssl.sysread(length, buffer)
end
else
@ssl.sysread(length, buffer)
end
end
def setsockopt(key, value, n)
@ssl.setsockopt(key, value, n)
end
def close
@ssl.close
end
def closed?
@ssl.closed?
end
end
end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -44,7 +44,6 @@ module Mongo
Digest::MD5.hexdigest("#{username}:mongo:#{plaintext}") Digest::MD5.hexdigest("#{username}:mongo:#{plaintext}")
end end
def validate_db_name(db_name) def validate_db_name(db_name)
unless [String, Symbol].include?(db_name.class) unless [String, Symbol].include?(db_name.class)
raise TypeError, "db_name must be a string or symbol" raise TypeError, "db_name must be a string or symbol"
@ -59,6 +58,15 @@ module Mongo
db_name db_name
end end
def validate_read_preference(value)
if [:primary, :secondary, :secondary_only, nil].include?(value)
return true
else
raise MongoArgumentError, "#{value} is not a valid read preference. " +
"Please specify either :primary or :secondary or :secondary_only."
end
end
def format_order_clause(order) def format_order_clause(order)
case order case order
when String, Symbol then string_as_sort_parameters(order) when String, Symbol then string_as_sort_parameters(order)

View File

@ -0,0 +1,78 @@
require 'socket'
require 'timeout'
module Mongo
# Wrapper class for Socket
#
# Emulates TCPSocket with operation and connection timeout
# sans Timeout::timeout
#
class TCPSocket
attr_accessor :pool
def initialize(host, port, op_timeout=nil, connect_timeout=nil)
@op_timeout = op_timeout
@connect_timeout = connect_timeout
# TODO: Prefer ipv6 if server is ipv6 enabled
@host = Socket.getaddrinfo(host, nil, Socket::AF_INET).first[3]
@port = port
@socket_address = Socket.pack_sockaddr_in(@port, @host)
@socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
@socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
connect
end
def connect
if @connect_timeout
Timeout::timeout(@connect_timeout, OperationTimeout) do
@socket.connect(@socket_address)
end
else
@socket.connect(@socket_address)
end
end
def send(data)
@socket.write(data)
end
def read(maxlen, buffer)
# Block on data to read for @op_timeout seconds
begin
ready = IO.select([@socket], nil, [@socket], @op_timeout)
rescue IOError
raise OperationFailure
end
if ready
begin
@socket.sysread(maxlen, buffer)
rescue SystemCallError => ex
# Needed because sometimes JRUBY doesn't throw Errno::ECONNRESET as it should
# http://jira.codehaus.org/browse/JRUBY-6180
raise ConnectionFailure, ex
rescue Errno::ENOTCONN, Errno::EBADF, Errno::ECONNRESET, Errno::EPIPE, Errno::ETIMEDOUT, EOFError => ex
raise ConnectionFailure, ex
rescue Errno::EINTR, Errno::EIO, IOError => ex
raise OperationFailure, ex
end
else
raise OperationTimeout
end
end
def setsockopt(key, value, n)
@socket.setsockopt(key, value, n)
end
def close
@socket.close
end
def closed?
@socket.closed?
end
end
end

View File

@ -1,7 +1,7 @@
# encoding: UTF-8 # encoding: UTF-8
# -- # --
# Copyright (C) 2008-2010 10gen Inc. # Copyright (C) 2008-2011 10gen Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -16,73 +16,160 @@
# limitations under the License. # limitations under the License.
# ++ # ++
require 'cgi'
module Mongo module Mongo
class URIParser class URIParser
DEFAULT_PORT = 27017 USER_REGEX = /([-.\w:]+)/
MONGODB_URI_MATCHER = /(([-_.\w\d]+):([-_\w\d]+)@)?([-.\w\d]+)(:([\w\d]+))?(\/([-\d\w]+))?/ PASS_REGEX = /([^@,]+)/
MONGODB_URI_SPEC = "mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/database]" AUTH_REGEX = /(#{USER_REGEX}:#{PASS_REGEX}@)?/
HOST_REGEX = /([-.\w]+)/
PORT_REGEX = /(?::(\w+))?/
NODE_REGEX = /((#{HOST_REGEX}#{PORT_REGEX},?)+)/
PATH_REGEX = /(?:\/([-\w]+))?/
MONGODB_URI_MATCHER = /#{AUTH_REGEX}#{NODE_REGEX}#{PATH_REGEX}/
MONGODB_URI_SPEC = "mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"
SPEC_ATTRS = [:nodes, :auths] SPEC_ATTRS = [:nodes, :auths]
OPT_ATTRS = [:connect, :replicaset, :slaveok, :safe, :w, :wtimeout, :fsync] OPT_ATTRS = [:connect, :replicaset, :slaveok, :safe, :w, :wtimeout, :fsync, :journal, :connecttimeoutms, :sockettimeoutms, :wtimeoutms]
OPT_VALID = {:connect => lambda {|arg| ['direct', 'replicaset'].include?(arg)}, OPT_VALID = {:connect => lambda {|arg| ['direct', 'replicaset', 'true', 'false', true, false].include?(arg)},
:replicaset => lambda {|arg| arg.length > 0}, :replicaset => lambda {|arg| arg.length > 0},
:slaveok => lambda {|arg| ['true', 'false'].include?(arg)}, :slaveok => lambda {|arg| ['true', 'false'].include?(arg)},
:safe => lambda {|arg| ['true', 'false'].include?(arg)}, :safe => lambda {|arg| ['true', 'false'].include?(arg)},
:w => lambda {|arg| arg =~ /^\d+$/ }, :w => lambda {|arg| arg =~ /^\d+$/ },
:wtimeout => lambda {|arg| arg =~ /^\d+$/ }, :wtimeout => lambda {|arg| arg =~ /^\d+$/ },
:fsync => lambda {|arg| ['true', 'false'].include?(arg)} :fsync => lambda {|arg| ['true', 'false'].include?(arg)},
:journal => lambda {|arg| ['true', 'false'].include?(arg)},
:connecttimeoutms => lambda {|arg| arg =~ /^\d+$/ },
:sockettimeoutms => lambda {|arg| arg =~ /^\d+$/ },
:wtimeoutms => lambda {|arg| arg =~ /^\d+$/ }
} }
OPT_ERR = {:connect => "must be 'direct' or 'replicaset'", OPT_ERR = {:connect => "must be 'direct', 'replicaset', 'true', or 'false'",
:replicaset => "must be a string containing the name of the replica set to connect to", :replicaset => "must be a string containing the name of the replica set to connect to",
:slaveok => "must be 'true' or 'false'", :slaveok => "must be 'true' or 'false'",
:safe => "must be 'true' or 'false'", :safe => "must be 'true' or 'false'",
:w => "must be an integer specifying number of nodes to replica to", :w => "must be an integer specifying number of nodes to replica to",
:wtimeout => "must be an integer specifying milliseconds", :wtimeout => "must be an integer specifying milliseconds",
:fsync => "must be 'true' or 'false'" :fsync => "must be 'true' or 'false'",
:journal => "must be 'true' or 'false'",
:connecttimeoutms => "must be an integer specifying milliseconds",
:sockettimeoutms => "must be an integer specifying milliseconds",
:wtimeoutms => "must be an integer specifying milliseconds"
} }
OPT_CONV = {:connect => lambda {|arg| arg}, OPT_CONV = {:connect => lambda {|arg| arg == 'false' ? false : arg}, # be sure to convert 'false' to FalseClass
:replicaset => lambda {|arg| arg}, :replicaset => lambda {|arg| arg},
:slaveok => lambda {|arg| arg == 'true' ? true : false}, :slaveok => lambda {|arg| arg == 'true' ? true : false},
:safe => lambda {|arg| arg == 'true' ? true : false}, :safe => lambda {|arg| arg == 'true' ? true : false},
:w => lambda {|arg| arg.to_i}, :w => lambda {|arg| arg.to_i},
:wtimeout => lambda {|arg| arg.to_i}, :wtimeout => lambda {|arg| arg.to_i},
:fsync => lambda {|arg| arg == 'true' ? true : false} :fsync => lambda {|arg| arg == 'true' ? true : false},
:journal => lambda {|arg| arg == 'true' ? true : false},
:connecttimeoutms => lambda {|arg| arg.to_f / 1000 }, # stored as seconds
:sockettimeoutms => lambda {|arg| arg.to_f / 1000 }, # stored as seconds
:wtimeoutms => lambda {|arg| arg.to_i }
} }
attr_reader :nodes, :auths, :connect, :replicaset, :slaveok, :safe, :w, :wtimeout, :fsync attr_reader :nodes, :auths, :connect, :replicaset, :slaveok, :safe, :w, :wtimeout, :fsync, :journal, :connecttimeoutms, :sockettimeoutms, :wtimeoutms
# Parse a MongoDB URI. This method is used by Connection.from_uri. # Parse a MongoDB URI. This method is used by Connection.from_uri.
# Returns an array of nodes and an array of db authorizations, if applicable. # Returns an array of nodes and an array of db authorizations, if applicable.
# #
# @note Passwords can contain any character except for ','
#
# @param [String] uri The MongoDB URI string.
# @param [Hash,nil] extra_opts Extra options. Will override anything already specified in the URI.
#
# @core connections # @core connections
def initialize(string) def initialize(uri, extra_opts={})
if string =~ /^mongodb:\/\// if uri.start_with?('mongodb://')
string = string[10..-1] uri = uri[10..-1]
else else
raise MongoArgumentError, "MongoDB URI must match this spec: #{MONGODB_URI_SPEC}" raise MongoArgumentError, "MongoDB URI must match this spec: #{MONGODB_URI_SPEC}"
end end
hosts, opts = string.split('?') hosts, opts = uri.split('?')
parse_hosts(hosts) parse_hosts(hosts)
parse_options(opts) parse_options(opts, extra_opts)
configure_connect validate_connect
end end
# Create a Mongo::Connection or a Mongo::ReplSetConnection based on the URI.
#
# @note Don't confuse this with attribute getter method #connect.
#
# @return [Connection,ReplSetConnection]
def connection
if replicaset?
ReplSetConnection.new(*(nodes+[connection_options]))
else
Connection.new(host, port, connection_options)
end
end
# Whether this represents a replica set.
# @return [true,false]
def replicaset?
replicaset.is_a?(String) || nodes.length > 1
end
# Whether to immediately connect to the MongoDB node[s]. Defaults to true.
# @return [true, false]
def connect?
connect != false
end
# Whether this represents a direct connection.
#
# @note Specifying :connect => 'direct' has no effect... other than to raise an exception if other variables suggest a replicaset.
#
# @return [true,false]
def direct?
!replicaset?
end
# For direct connections, the host of the (only) node.
# @return [String]
def host
nodes[0][0]
end
# For direct connections, the port of the (only) node.
# @return [Integer]
def port
nodes[0][1].to_i
end
# Options that can be passed to Mongo::Connection.new or Mongo::ReplSetConnection.new
# @return [Hash]
def connection_options def connection_options
opts = {} opts = {}
if (@w || @wtimeout || @fsync) && !@safe if (@w || @journal || @wtimeout || @fsync || @wtimeoutms) && !@safe
raise MongoArgumentError, "Safe must be true if w, wtimeout, or fsync is specified" raise MongoArgumentError, "Safe must be true if w, journal, wtimeoutMS, or fsync is specified"
end end
if @safe if @safe
if @w || @wtimeout || @fsync if @w || @journal || @wtimeout || @fsync || @wtimeoutms
safe_opts = {} safe_opts = {}
safe_opts[:w] = @w if @w safe_opts[:w] = @w if @w
safe_opts[:wtimeout] = @wtimeout if @wtimeout safe_opts[:j] = @journal if @journal
if @wtimeout
warn "Using wtimeout in a URI is deprecated, please use wtimeoutMS. It will be removed in v2.0."
safe_opts[:wtimeout] = @wtimeout
end
if @wtimeoutms
safe_opts[:wtimeout] = @wtimeoutms
end
safe_opts[:fsync] = @fsync if @fsync safe_opts[:fsync] = @fsync if @fsync
else else
safe_opts = true safe_opts = true
@ -91,88 +178,118 @@ module Mongo
opts[:safe] = safe_opts opts[:safe] = safe_opts
end end
if @connecttimeoutms
opts[:connect_timeout] = @connecttimeoutms
end
if @sockettimeoutms
opts[:op_timeout] = @sockettimeoutms
end
if @slaveok if @slaveok
if @connect == 'direct' if direct?
opts[:slave_ok] = true opts[:slave_ok] = true
else else
opts[:read_secondary] = true opts[:read] = :secondary
end end
end end
opts[:rs_name] = @replicaset if @replicaset if direct?
opts[:auths] = auths
end
if replicaset.is_a?(String)
opts[:name] = replicaset
end
opts[:connect] = connect?
opts opts
end end
private private
def parse_hosts(hosts) def parse_hosts(uri_without_proto)
@nodes = [] @nodes = []
@auths = [] @auths = []
specs = hosts.split(',')
specs.each do |spec|
matches = MONGODB_URI_MATCHER.match(spec)
if !matches
raise MongoArgumentError, "MongoDB URI must match this spec: #{MONGODB_URI_SPEC}"
end
uname = matches[2] matches = MONGODB_URI_MATCHER.match(uri_without_proto)
pwd = matches[3]
host = matches[4] if !matches
port = matches[6] || DEFAULT_PORT raise MongoArgumentError, "MongoDB URI must match this spec: #{MONGODB_URI_SPEC}"
end
uname = matches[2]
pwd = matches[3]
hosturis = matches[4].split(',')
db = matches[8]
hosturis.each do |hosturi|
# If port is present, use it, otherwise use default port
host, port = hosturi.split(':') + [Connection::DEFAULT_PORT]
if !(port.to_s =~ /^\d+$/) if !(port.to_s =~ /^\d+$/)
raise MongoArgumentError, "Invalid port #{port}; port must be specified as digits." raise MongoArgumentError, "Invalid port #{port}; port must be specified as digits."
end end
port = port.to_i
db = matches[8]
if uname && pwd && db port = port.to_i
auths << {'db_name' => db, 'username' => uname, 'password' => pwd}
elsif uname || pwd || db
raise MongoArgumentError, "MongoDB URI must include all three of username, password, " +
"and db if any one of these is specified."
end
@nodes << [host, port] @nodes << [host, port]
end end
if @nodes.empty?
raise MongoArgumentError, "No nodes specified. Please ensure that you've provided at least one node."
end
if uname && pwd && db
auths << {'db_name' => db, 'username' => uname, 'password' => pwd}
elsif uname || pwd
raise MongoArgumentError, "MongoDB URI must include username, password, "
"and db if username and password are specified."
end
# The auths are repeated for each host in a replica set
@auths *= hosturis.length
end end
# This method uses the lambdas defined in OPT_VALID and OPT_CONV to validate # This method uses the lambdas defined in OPT_VALID and OPT_CONV to validate
# and convert the given options. # and convert the given options.
def parse_options(opts) def parse_options(string_opts, extra_opts={})
return unless opts # initialize instance variables for available options
separator = opts.include?('&') ? '&' : ';' OPT_VALID.keys.each { |k| instance_variable_set("@#{k}", nil) }
opts.split(separator).each do |attr|
key, value = attr.split('=') string_opts ||= ''
key = key.to_sym
value = value.strip.downcase return if string_opts.empty? && extra_opts.empty?
if string_opts.include?(';') and string_opts.include?('&')
raise MongoArgumentError, "must not mix URL separators ; and &"
end
opts = CGI.parse(string_opts).inject({}) do |memo, (key, value)|
value = value.first
memo[key.downcase.to_sym] = value.strip.downcase
memo
end
opts.merge! extra_opts
opts.each do |key, value|
if !OPT_ATTRS.include?(key) if !OPT_ATTRS.include?(key)
raise MongoArgumentError, "Invalid Mongo URI option #{key}" raise MongoArgumentError, "Invalid Mongo URI option #{key}"
end end
if OPT_VALID[key].call(value) if OPT_VALID[key].call(value)
instance_variable_set("@#{key}", OPT_CONV[key].call(value)) instance_variable_set("@#{key}", OPT_CONV[key].call(value))
else else
raise MongoArgumentError, "Invalid value for #{key}: #{OPT_ERR[key]}" raise MongoArgumentError, "Invalid value #{value.inspect} for #{key}: #{OPT_ERR[key]}"
end end
end end
end end
def configure_connect def validate_connect
if @nodes.length > 1 && !@connect if replicaset? and @connect == 'direct'
@connect = 'replicaset' # Make sure the user doesn't specify something contradictory
end raise MongoArgumentError, "connect=direct conflicts with setting a replicaset name"
if !@connect
if @nodes.length > 1
@connect = 'replicaset'
else
@connect = 'direct'
end
end
if @connect == 'direct' && @replicaset
raise MongoArgumentError, "If specifying a replica set name, please also specify that connect=replicaset"
end end
end end
end end

3
lib/mongo/version.rb Normal file
View File

@ -0,0 +1,3 @@
module Mongo
VERSION = "1.6.2"
end

View File

@ -1,4 +1,4 @@
require "./lib/mongo" require File.expand_path('../lib/mongo/version', __FILE__)
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = 'mongo' s.name = 'mongo'
@ -6,7 +6,7 @@ Gem::Specification.new do |s|
s.version = Mongo::VERSION s.version = Mongo::VERSION
s.platform = Gem::Platform::RUBY s.platform = Gem::Platform::RUBY
s.summary = 'Ruby driver for the MongoDB' s.summary = 'Ruby driver for MongoDB'
s.description = 'A Ruby driver for MongoDB. For more information about Mongo, see http://www.mongodb.org.' s.description = 'A Ruby driver for MongoDB. For more information about Mongo, see http://www.mongodb.org.'
s.require_paths = ['lib'] s.require_paths = ['lib']
@ -26,9 +26,9 @@ Gem::Specification.new do |s|
s.rdoc_options = ['--main', 'README.md', '--inline-source'] s.rdoc_options = ['--main', 'README.md', '--inline-source']
s.extra_rdoc_files = ['README.md'] s.extra_rdoc_files = ['README.md']
s.authors = ['Jim Menard', 'Mike Dirolf', 'Kyle Banker'] s.authors = ['Jim Menard', 'Mike Dirolf', 'Kyle Banker', 'Tyler Brock']
s.email = 'mongodb-dev@googlegroups.com' s.email = 'mongodb-dev@googlegroups.com'
s.homepage = 'http://www.mongodb.org' s.homepage = 'http://www.mongodb.org'
s.add_dependency(%q<bson>, [">= #{Mongo::VERSION}"]) s.add_dependency('bson', "~> #{Mongo::VERSION}")
end end

View File

@ -1,7 +1,7 @@
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'mongo' require 'mongo'
require 'test/unit' require 'test/unit'
require './test/test_helper' require File.expand_path("../../test_helper", __FILE__)
# Demonstrate features in MongoDB 1.4 # Demonstrate features in MongoDB 1.4
class Features14Test < Test::Unit::TestCase class Features14Test < Test::Unit::TestCase

View File

@ -1,7 +1,7 @@
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'mongo' require 'mongo'
require 'test/unit' require 'test/unit'
require './test/test_helper' require File.expand_path("../../test_helper", __FILE__)
# NOTE: This test requires bouncing the server. # NOTE: This test requires bouncing the server.
# It also requires that a user exists on the admin database. # It also requires that a user exists on the admin database.
@ -26,6 +26,7 @@ class AuthenticationTest < Test::Unit::TestCase
@admin.authenticate('bob', 'secret') @admin.authenticate('bob', 'secret')
@db1.add_user('user1', 'secret') @db1.add_user('user1', 'secret')
@db2.add_user('user2', 'secret') @db2.add_user('user2', 'secret')
@db2.add_user('userRO', 'secret', true) # read-only
@admin.logout @admin.logout
assert_raise Mongo::OperationFailure do assert_raise Mongo::OperationFailure do
@ -53,6 +54,7 @@ class AuthenticationTest < Test::Unit::TestCase
assert @db1['stuff'].insert({:a => 2}, :safe => true) assert @db1['stuff'].insert({:a => 2}, :safe => true)
assert @db2['stuff'].insert({:a => 2}, :safe => true) assert @db2['stuff'].insert({:a => 2}, :safe => true)
assert @db2['stuff'].find(:safe => true)
@db1.logout @db1.logout
assert_raise Mongo::OperationFailure do assert_raise Mongo::OperationFailure do
@ -63,6 +65,12 @@ class AuthenticationTest < Test::Unit::TestCase
assert_raise Mongo::OperationFailure do assert_raise Mongo::OperationFailure do
assert @db2['stuff'].insert({:a => 2}, :safe => true) assert @db2['stuff'].insert({:a => 2}, :safe => true)
end end
@db2.authenticate('userRO', 'secret')
assert @db2['stuff'].find(:safe => true)
assert_raise Mongo::OperationFailure do
assert @db2['stuff'].insert({:a => 2}, :safe => true)
end
end end
end end

View File

@ -1,7 +1,7 @@
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'mongo' require 'mongo'
require 'test/unit' require 'test/unit'
require './test/test_helper' require File.expand_path("../../test_helper", __FILE__)
# NOTE: This test requires bouncing the server # NOTE: This test requires bouncing the server
class AutoreconnectTest < Test::Unit::TestCase class AutoreconnectTest < Test::Unit::TestCase

View File

@ -0,0 +1,30 @@
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'mongo'
require 'test/unit'
require File.expand_path("../../test_helper", __FILE__)
class ForkTest < Test::Unit::TestCase
include Mongo
def setup
@conn = standard_connection
end
def test_fork
# Now insert some data
10.times do |n|
@conn[MONGO_TEST_DB]['nums'].insert({:a => n})
end
# Now fork. You'll almost always see an exception here.
if !Kernel.fork
10.times do
assert @conn[MONGO_TEST_DB]['nums'].find_one
end
else
10.times do
assert @conn[MONGO_TEST_DB]['nums'].find_one
end
end
end
end

View File

@ -0,0 +1,71 @@
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require File.expand_path("../../test_helper", __FILE__)
require './test/tools/auth_repl_set_manager'
require './test/replica_sets/rs_test_helper'
class AuthTest < Test::Unit::TestCase
include Mongo
def setup
@rs = AuthReplSetManager.new(:start_port => 40000)
@rs.start_set
end
def teardown
#@rs.cleanup_set
end
def test_repl_set_auth
@conn = ReplSetConnection.new(build_seeds(3), :name => @rs.name)
# Add an admin user
@conn['admin'].add_user("me", "secret")
# Ensure that insert fails
assert_raise_error Mongo::OperationFailure, "unauthorized" do
@conn['foo']['stuff'].insert({:a => 2}, :safe => {:w => 3})
end
# Then authenticate
assert @conn['admin'].authenticate("me", "secret")
# Insert should succeed now
assert @conn['foo']['stuff'].insert({:a => 2}, :safe => {:w => 3})
# So should a query
assert @conn['foo']['stuff'].find_one
# But not when we logout
@conn['admin'].logout
assert_raise_error Mongo::OperationFailure, "unauthorized" do
@conn['foo']['stuff'].find_one
end
# Same should apply to a random secondary
@slave1 = Connection.new(@conn.secondary_pools[0].host,
@conn.secondary_pools[0].port, :slave_ok => true)
# Find should fail
assert_raise_error Mongo::OperationFailure, "unauthorized" do
@slave1['foo']['stuff'].find_one
end
# But not when authenticated
assert @slave1['admin'].authenticate("me", "secret")
assert @slave1['foo']['stuff'].find_one
# Same should apply when using :secondary_only
@second_only = ReplSetConnection.new(build_seeds(3),
:require_primary => false, :read => :secondary_only)
# Find should fail
assert_raise_error Mongo::OperationFailure, "unauthorized" do
@second_only['foo']['stuff'].find_one
end
# But not when authenticated
assert @second_only['admin'].authenticate("me", "secret")
assert @second_only['foo']['stuff'].find_one
end
end

Some files were not shown because too many files have changed in this diff Show More