moneta 1.5.1 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES +18 -0
- data/CONTRIBUTORS +4 -0
- data/LICENSE +1 -1
- data/README.md +4 -6
- data/lib/active_support/cache/moneta_store.rb +32 -6
- data/lib/moneta/adapters/activerecord/backend.rb +50 -0
- data/lib/moneta/adapters/activerecord/v5_backend.rb +80 -0
- data/lib/moneta/adapters/activerecord.rb +50 -95
- data/lib/moneta/adapters/activesupportcache.rb +69 -14
- data/lib/moneta/adapters/client.rb +1 -1
- data/lib/moneta/adapters/hbase.rb +1 -1
- data/lib/moneta/adapters/mongo.rb +5 -3
- data/lib/moneta/adapters/redis.rb +2 -1
- data/lib/moneta/adapters/sequel/mysql.rb +6 -18
- data/lib/moneta/adapters/sequel/postgres_hstore.rb +8 -1
- data/lib/moneta/adapters/sqlite.rb +4 -2
- data/lib/moneta/adapters/tokyotyrant.rb +1 -1
- data/lib/moneta/adapters/yaml.rb +7 -1
- data/lib/moneta/pool.rb +16 -18
- data/lib/moneta/proxy.rb +1 -1
- data/lib/moneta/server.rb +9 -11
- data/lib/moneta/transformer/config.rb +4 -4
- data/lib/moneta/transformer.rb +4 -0
- data/lib/moneta/version.rb +1 -1
- data/lib/moneta.rb +1 -1
- metadata +10 -453
- data/.github/workflows/ruby.yml +0 -425
- data/.gitignore +0 -15
- data/.rspec +0 -4
- data/.rubocop.yml +0 -194
- data/.yardopts +0 -6
- data/Gemfile +0 -210
- data/feature_matrix.yaml +0 -227
- data/moneta.gemspec +0 -36
- data/script/benchmarks +0 -605
- data/script/contributors +0 -12
- data/script/memusage +0 -40
- data/script/parallel-tests +0 -82
- data/script/start-couchdb +0 -27
- data/script/start-hbase +0 -47
- data/script/start-services +0 -10
- data/script/travis-logs +0 -14
- data/script/update-feature-matrix +0 -148
- data/spec/active_support/cache_moneta_store_spec.rb +0 -282
- data/spec/features/concurrent_create.rb +0 -42
- data/spec/features/concurrent_increment.rb +0 -39
- data/spec/features/create.rb +0 -25
- data/spec/features/create_expires.rb +0 -19
- data/spec/features/default_expires.rb +0 -14
- data/spec/features/each_key.rb +0 -119
- data/spec/features/expires.rb +0 -296
- data/spec/features/features.rb +0 -16
- data/spec/features/increment.rb +0 -98
- data/spec/features/marshallable_key.rb +0 -43
- data/spec/features/marshallable_value.rb +0 -7
- data/spec/features/multiprocess.rb +0 -8
- data/spec/features/not_create.rb +0 -7
- data/spec/features/not_each_key.rb +0 -7
- data/spec/features/not_increment.rb +0 -13
- data/spec/features/not_persist.rb +0 -9
- data/spec/features/null.rb +0 -66
- data/spec/features/persist.rb +0 -14
- data/spec/features/returndifferent.rb +0 -9
- data/spec/features/returnsame.rb +0 -9
- data/spec/features/store.rb +0 -261
- data/spec/features/store_large.rb +0 -13
- data/spec/features/transform_value.rb +0 -44
- data/spec/features/transform_value_expires.rb +0 -41
- data/spec/helper.rb +0 -444
- data/spec/moneta/adapters/activerecord/adapter_activerecord_existing_connection_spec.rb +0 -61
- data/spec/moneta/adapters/activerecord/adapter_activerecord_spec.rb +0 -126
- data/spec/moneta/adapters/activerecord/standard_activerecord_spec.rb +0 -21
- data/spec/moneta/adapters/activerecord/standard_activerecord_with_expires_spec.rb +0 -27
- data/spec/moneta/adapters/activesupportcache/adapter_activesupportcache_spec.rb +0 -54
- data/spec/moneta/adapters/activesupportcache/adapter_activesupportcache_with_default_expires_spec.rb +0 -54
- data/spec/moneta/adapters/activesupportcache/standard_activesupportcache_spec.rb +0 -14
- data/spec/moneta/adapters/cassandra/adapter_cassandra_spec.rb +0 -17
- data/spec/moneta/adapters/cassandra/adapter_cassandra_with_default_expires_spec.rb +0 -18
- data/spec/moneta/adapters/cassandra/helper.rb +0 -18
- data/spec/moneta/adapters/cassandra/standard_cassandra_spec.rb +0 -18
- data/spec/moneta/adapters/client/adapter_client_spec.rb +0 -11
- data/spec/moneta/adapters/client/client_helper.rb +0 -25
- data/spec/moneta/adapters/client/standard_client_tcp_spec.rb +0 -23
- data/spec/moneta/adapters/client/standard_client_unix_spec.rb +0 -28
- data/spec/moneta/adapters/cookie/adapter_cookie_spec.rb +0 -7
- data/spec/moneta/adapters/couch/adapter_couch_spec.rb +0 -204
- data/spec/moneta/adapters/couch/standard_couch_spec.rb +0 -15
- data/spec/moneta/adapters/couch/standard_couch_with_expires_spec.rb +0 -19
- data/spec/moneta/adapters/datamapper/adapter_datamapper_spec.rb +0 -60
- data/spec/moneta/adapters/datamapper/standard_datamapper_spec.rb +0 -21
- data/spec/moneta/adapters/datamapper/standard_datamapper_with_expires_spec.rb +0 -26
- data/spec/moneta/adapters/datamapper/standard_datamapper_with_repository_spec.rb +0 -22
- data/spec/moneta/adapters/daybreak/adapter_daybreak_spec.rb +0 -7
- data/spec/moneta/adapters/daybreak/standard_daybreak_spec.rb +0 -7
- data/spec/moneta/adapters/daybreak/standard_daybreak_with_expires_spec.rb +0 -11
- data/spec/moneta/adapters/dbm/adapter_dbm_spec.rb +0 -7
- data/spec/moneta/adapters/dbm/standard_dbm_spec.rb +0 -7
- data/spec/moneta/adapters/dbm/standard_dbm_with_expires_spec.rb +0 -12
- data/spec/moneta/adapters/faraday_helper.rb +0 -10
- data/spec/moneta/adapters/file/adapter_file_spec.rb +0 -7
- data/spec/moneta/adapters/file/standard_file_spec.rb +0 -7
- data/spec/moneta/adapters/file/standard_file_with_expires_spec.rb +0 -11
- data/spec/moneta/adapters/fog/adapter_fog_spec.rb +0 -16
- data/spec/moneta/adapters/fog/standard_fog_spec.rb +0 -15
- data/spec/moneta/adapters/fog/standard_fog_with_expires_spec.rb +0 -20
- data/spec/moneta/adapters/gdbm/adapter_gdbm_spec.rb +0 -7
- data/spec/moneta/adapters/gdbm/standard_gdbm_spec.rb +0 -7
- data/spec/moneta/adapters/gdbm/standard_gdbm_with_expires_spec.rb +0 -11
- data/spec/moneta/adapters/hashfile/standard_hashfile_spec.rb +0 -7
- data/spec/moneta/adapters/hashfile/standard_hashfile_with_expires_spec.rb +0 -12
- data/spec/moneta/adapters/hbase/adapter_hbase_spec.rb +0 -7
- data/spec/moneta/adapters/hbase/standard_hbase_spec.rb +0 -4
- data/spec/moneta/adapters/hbase/standard_hbase_with_expires_spec.rb +0 -8
- data/spec/moneta/adapters/kyotocabinet/adapter_kyotocabinet_spec.rb +0 -7
- data/spec/moneta/adapters/kyotocabinet/standard_kyotocabinet_spec.rb +0 -7
- data/spec/moneta/adapters/kyotocabinet/standard_kyotocabinet_with_expires_spec.rb +0 -14
- data/spec/moneta/adapters/leveldb/adapter_leveldb_spec.rb +0 -7
- data/spec/moneta/adapters/leveldb/standard_leveldb_spec.rb +0 -7
- data/spec/moneta/adapters/leveldb/standard_leveldb_with_expires_spec.rb +0 -11
- data/spec/moneta/adapters/lmdb/adapter_lmdb_spec.rb +0 -7
- data/spec/moneta/adapters/lmdb/adapter_lmdb_with_db_spec.rb +0 -7
- data/spec/moneta/adapters/lmdb/standard_lmdb_spec.rb +0 -7
- data/spec/moneta/adapters/lmdb/standard_lmdb_with_expires_spec.rb +0 -11
- data/spec/moneta/adapters/localmemcache/adapter_localmemcache_spec.rb +0 -7
- data/spec/moneta/adapters/localmemcache/standard_localmemcache_spec.rb +0 -7
- data/spec/moneta/adapters/localmemcache/standard_localmemcache_with_expires_spec.rb +0 -11
- data/spec/moneta/adapters/lruhash/adapter_lruhash_spec.rb +0 -118
- data/spec/moneta/adapters/lruhash/standard_lruhash_spec.rb +0 -4
- data/spec/moneta/adapters/lruhash/standard_lruhash_with_expires_spec.rb +0 -8
- data/spec/moneta/adapters/memcached/adapter_memcached_spec.rb +0 -13
- data/spec/moneta/adapters/memcached/dalli/adapter_memcached_dalli_spec.rb +0 -25
- data/spec/moneta/adapters/memcached/dalli/standard_memcached_dalli_spec.rb +0 -11
- data/spec/moneta/adapters/memcached/native/adapter_memcached_native_spec.rb +0 -25
- data/spec/moneta/adapters/memcached/native/standard_memcached_native_spec.rb +0 -11
- data/spec/moneta/adapters/memcached/standard_memcached_spec.rb +0 -17
- data/spec/moneta/adapters/memcached_helper.rb +0 -20
- data/spec/moneta/adapters/memory/adapter_memory_spec.rb +0 -7
- data/spec/moneta/adapters/memory/standard_memory_spec.rb +0 -4
- data/spec/moneta/adapters/memory/standard_memory_with_compress_spec.rb +0 -9
- data/spec/moneta/adapters/memory/standard_memory_with_expires_spec.rb +0 -8
- data/spec/moneta/adapters/memory/standard_memory_with_json_key_serializer_spec.rb +0 -4
- data/spec/moneta/adapters/memory/standard_memory_with_json_serializer_spec.rb +0 -9
- data/spec/moneta/adapters/memory/standard_memory_with_json_value_serializer_spec.rb +0 -9
- data/spec/moneta/adapters/memory/standard_memory_with_prefix_spec.rb +0 -41
- data/spec/moneta/adapters/memory/standard_memory_with_snappy_compress_spec.rb +0 -9
- data/spec/moneta/adapters/mongo/adapter_mongo_spec.rb +0 -41
- data/spec/moneta/adapters/mongo/adapter_mongo_with_default_expires_spec.rb +0 -14
- data/spec/moneta/adapters/mongo/standard_mongo_spec.rb +0 -7
- data/spec/moneta/adapters/null/null_adapter_spec.rb +0 -7
- data/spec/moneta/adapters/null/standard_null_spec.rb +0 -4
- data/spec/moneta/adapters/pstore/adapter_pstore_spec.rb +0 -7
- data/spec/moneta/adapters/pstore/standard_pstore_spec.rb +0 -9
- data/spec/moneta/adapters/pstore/standard_pstore_with_expires_spec.rb +0 -13
- data/spec/moneta/adapters/redis/adapter_redis_spec.rb +0 -20
- data/spec/moneta/adapters/redis/standard_redis_spec.rb +0 -14
- data/spec/moneta/adapters/restclient/adapter_restclient_spec.rb +0 -13
- data/spec/moneta/adapters/restclient/helper.rb +0 -12
- data/spec/moneta/adapters/restclient/standard_restclient_spec.rb +0 -13
- data/spec/moneta/adapters/riak/adapter_riak_spec.rb +0 -14
- data/spec/moneta/adapters/riak/standard_riak_spec.rb +0 -10
- data/spec/moneta/adapters/riak/standard_riak_with_expires_spec.rb +0 -14
- data/spec/moneta/adapters/sdbm/adapter_sdbm_spec.rb +0 -7
- data/spec/moneta/adapters/sdbm/standard_sdbm_spec.rb +0 -7
- data/spec/moneta/adapters/sdbm/standard_sdbm_with_expires_spec.rb +0 -11
- data/spec/moneta/adapters/sequel/adapter_sequel_spec.rb +0 -133
- data/spec/moneta/adapters/sequel/helper.rb +0 -80
- data/spec/moneta/adapters/sequel/standard_sequel_spec.rb +0 -8
- data/spec/moneta/adapters/sequel/standard_sequel_with_expires_spec.rb +0 -18
- data/spec/moneta/adapters/sqlite/adapter_sqlite_spec.rb +0 -7
- data/spec/moneta/adapters/sqlite/standard_sqlite_spec.rb +0 -7
- data/spec/moneta/adapters/sqlite/standard_sqlite_with_expires_spec.rb +0 -15
- data/spec/moneta/adapters/tdb/adapter_tdb_spec.rb +0 -7
- data/spec/moneta/adapters/tdb/standard_tdb_spec.rb +0 -7
- data/spec/moneta/adapters/tdb/standard_tdb_with_expires_spec.rb +0 -11
- data/spec/moneta/adapters/tokyocabinet/adapter_tokyocabinet_bdb_spec.rb +0 -7
- data/spec/moneta/adapters/tokyocabinet/adapter_tokyocabinet_hdb_spec.rb +0 -7
- data/spec/moneta/adapters/tokyocabinet/standard_tokyocabinet_spec.rb +0 -7
- data/spec/moneta/adapters/tokyocabinet/standard_tokyocabinet_with_expires_spec.rb +0 -11
- data/spec/moneta/adapters/tokyotyrant/adapter_tokyotyrant_spec.rb +0 -11
- data/spec/moneta/adapters/tokyotyrant/helper.rb +0 -12
- data/spec/moneta/adapters/tokyotyrant/standard_tokyotyrant_spec.rb +0 -7
- data/spec/moneta/adapters/tokyotyrant/standard_tokyotyrant_with_expires_spec.rb +0 -12
- data/spec/moneta/adapters/yaml/adapter_yaml_spec.rb +0 -7
- data/spec/moneta/adapters/yaml/standard_yaml_spec.rb +0 -9
- data/spec/moneta/adapters/yaml/standard_yaml_with_expires_spec.rb +0 -13
- data/spec/moneta/builder_spec.rb +0 -50
- data/spec/moneta/config_spec.rb +0 -219
- data/spec/moneta/mutex_spec.rb +0 -55
- data/spec/moneta/proxies/cache/cache_file_memory_spec.rb +0 -24
- data/spec/moneta/proxies/cache/cache_memory_null_spec.rb +0 -12
- data/spec/moneta/proxies/enumerable/enumerable_spec.rb +0 -26
- data/spec/moneta/proxies/expires/expires_file_spec.rb +0 -28
- data/spec/moneta/proxies/expires/expires_memory_spec.rb +0 -15
- data/spec/moneta/proxies/expires/expires_memory_with_default_expires_spec.rb +0 -16
- data/spec/moneta/proxies/fallback/fallback_spec.rb +0 -42
- data/spec/moneta/proxies/lock/lock_spec.rb +0 -10
- data/spec/moneta/proxies/optionmerger/optionmerger_spec.rb +0 -96
- data/spec/moneta/proxies/pool/pool_spec.rb +0 -353
- data/spec/moneta/proxies/proxy/proxy_expires_memory_spec.rb +0 -16
- data/spec/moneta/proxies/shared/shared_tcp_spec.rb +0 -59
- data/spec/moneta/proxies/shared/shared_unix_spec.rb +0 -58
- data/spec/moneta/proxies/transformer/transformer_bencode_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_bert_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_bson_spec.rb +0 -25
- data/spec/moneta/proxies/transformer/transformer_bzip2_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_json_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_key_inspect_spec.rb +0 -17
- data/spec/moneta/proxies/transformer/transformer_key_marshal_spec.rb +0 -17
- data/spec/moneta/proxies/transformer/transformer_key_to_s_spec.rb +0 -17
- data/spec/moneta/proxies/transformer/transformer_key_yaml_spec.rb +0 -17
- data/spec/moneta/proxies/transformer/transformer_lz4_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_lzma_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_lzo_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_marshal_base64_spec.rb +0 -20
- data/spec/moneta/proxies/transformer/transformer_marshal_city128_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_city32_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_city64_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_escape_spec.rb +0 -21
- data/spec/moneta/proxies/transformer/transformer_marshal_hex_spec.rb +0 -20
- data/spec/moneta/proxies/transformer/transformer_marshal_hmac_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_marshal_md5_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_md5_spread_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_prefix_base64_spec.rb +0 -33
- data/spec/moneta/proxies/transformer/transformer_marshal_prefix_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_qp_spec.rb +0 -20
- data/spec/moneta/proxies/transformer/transformer_marshal_rmd160_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_sha1_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_sha256_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_sha384_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_sha512_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_marshal_truncate_spec.rb +0 -15
- data/spec/moneta/proxies/transformer/transformer_marshal_urlsafe_base64_spec.rb +0 -20
- data/spec/moneta/proxies/transformer/transformer_marshal_uuencode_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_msgpack_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_ox_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_php_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_quicklz_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_snappy_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_tnet_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_value_marshal_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_value_yaml_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_yaml_spec.rb +0 -19
- data/spec/moneta/proxies/transformer/transformer_zlib_spec.rb +0 -19
- data/spec/moneta/proxies/weak_create/weak_create_spec.rb +0 -21
- data/spec/moneta/proxies/weak_each_key/weak_each_key_spec.rb +0 -22
- data/spec/moneta/proxies/weak_increment/weak_increment_spec.rb +0 -21
- data/spec/moneta/semaphore_spec.rb +0 -68
- data/spec/moneta/stack_file_memory_spec.rb +0 -15
- data/spec/moneta/stack_memory_file_spec.rb +0 -13
- data/spec/rack/cache_moneta_spec.rb +0 -355
- data/spec/rack/moneta_cookies_spec.rb +0 -83
- data/spec/rack/moneta_store_spec.rb +0 -83
- data/spec/rack/session_moneta_spec.rb +0 -350
- data/spec/restserver.rb +0 -44
- data/test/action_dispatch/fixtures/session_autoload_test/foo.rb +0 -10
- data/test/action_dispatch/session_moneta_store_test.rb +0 -204
data/script/benchmarks
DELETED
@@ -1,605 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$: << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require 'benchmark'
|
5
|
-
require 'moneta'
|
6
|
-
require 'fileutils'
|
7
|
-
require 'active_support'
|
8
|
-
require 'active_support/cache/moneta_store'
|
9
|
-
|
10
|
-
require_relative '../spec/restserver.rb'
|
11
|
-
|
12
|
-
class String
|
13
|
-
def random(n)
|
14
|
-
(1..n).map { self[rand(size),1] }.join
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def mean arr
|
19
|
-
arr.sum / arr.length
|
20
|
-
end
|
21
|
-
|
22
|
-
def stddev arr
|
23
|
-
m = mean(arr)
|
24
|
-
Math.sqrt(mean(arr.map {|s| (s - m) ** 2 }))
|
25
|
-
end
|
26
|
-
|
27
|
-
class MonetaBenchmarks
|
28
|
-
DIR = __FILE__ + '.tmp'
|
29
|
-
|
30
|
-
mysql_username = ENV['MONETA_MYSQL_USERNAME'] || 'root'
|
31
|
-
mysql_password = ENV['MONETA_MYSQL_PASSWORD']
|
32
|
-
mysql_database1 = ENV['MONETA_MYSQL_DATABSASE1'] || 'moneta'
|
33
|
-
mysql_database2 = ENV['MONETA_MYSQL_DATABSASE2'] || 'moneta2'
|
34
|
-
|
35
|
-
postgres_username = ENV['MONETA_POSTGRES_USERNAME'] || 'postgres'
|
36
|
-
postgres_database1 = ENV['MONETA_POSTGRES_DATABSASE1'] || 'moneta1'
|
37
|
-
postgres_database2 = ENV['MONETA_POSTGRES_DATABSASE1'] || 'moneta2'
|
38
|
-
|
39
|
-
couch_login = ENV['COUCH_LOGIN'] || 'admin'
|
40
|
-
couch_password = ENV['COUCH_PASSWORD'] || 'password'
|
41
|
-
|
42
|
-
STORES = [
|
43
|
-
# SDBM accepts only very short key/value pairs (1k for both)
|
44
|
-
{name: "SDBM", sizes: [:small], options: {file: "#{DIR}/sdbm"}},
|
45
|
-
# YAML is too slow
|
46
|
-
#{name: "YAML", options: {file: "#{DIR}/yaml"}},
|
47
|
-
{
|
48
|
-
name: "ActiveRecord (MySQL)",
|
49
|
-
adapter: :ActiveRecord,
|
50
|
-
options: {
|
51
|
-
table: 'activerecord',
|
52
|
-
connection: {
|
53
|
-
adapter: (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'),
|
54
|
-
username: mysql_username,
|
55
|
-
database: mysql_database1
|
56
|
-
}
|
57
|
-
}
|
58
|
-
},
|
59
|
-
{
|
60
|
-
name: "ActiveRecord (Postgres)",
|
61
|
-
adapter: :ActiveRecord,
|
62
|
-
options: {
|
63
|
-
table: 'activerecord',
|
64
|
-
connection: {
|
65
|
-
adapter: (defined?(JRUBY_VERSION) ? 'jdbcpostgresql' : 'postgresql'),
|
66
|
-
database: postgres_database1,
|
67
|
-
username: postgres_username
|
68
|
-
}
|
69
|
-
}
|
70
|
-
},
|
71
|
-
{
|
72
|
-
name: "ActiveRecord (Sqlite)",
|
73
|
-
adapter: :ActiveRecord,
|
74
|
-
options: {
|
75
|
-
table: 'activerecord',
|
76
|
-
connection: {
|
77
|
-
adapter: (defined?(JRUBY_VERSION) ? 'jdbcsqlite3' : 'sqlite3'),
|
78
|
-
database: "#{DIR}/activerecord_sqlite.db"
|
79
|
-
}
|
80
|
-
}
|
81
|
-
},
|
82
|
-
{
|
83
|
-
name: "ActiveSupportCache (Memory)",
|
84
|
-
adapter: :ActiveSupportCache,
|
85
|
-
options: {
|
86
|
-
backend: ::ActiveSupport::Cache::MemoryStore.new
|
87
|
-
}
|
88
|
-
},
|
89
|
-
{
|
90
|
-
name: "ActiveSupportCache (Redis)",
|
91
|
-
adapter: :ActiveSupportCache,
|
92
|
-
options: {
|
93
|
-
backend: ::ActiveSupport::Cache::RedisCacheStore.new
|
94
|
-
}
|
95
|
-
},
|
96
|
-
{
|
97
|
-
name: "ActiveSupportCache (Moneta Memory)",
|
98
|
-
adapter: :ActiveSupportCache,
|
99
|
-
options: {
|
100
|
-
backend: ::ActiveSupport::Cache::MonetaStore.new(store: Moneta.new(:Memory))
|
101
|
-
}
|
102
|
-
},
|
103
|
-
{
|
104
|
-
name: "ActiveSupportCache (Moneta Redis)",
|
105
|
-
adapter: :ActiveSupportCache,
|
106
|
-
options: {
|
107
|
-
backend: ::ActiveSupport::Cache::MonetaStore.new(store: Moneta.new(:Redis))
|
108
|
-
}
|
109
|
-
},
|
110
|
-
{name: "Cassandra"},
|
111
|
-
{name: "Client (Memory)", adapter: :Client},
|
112
|
-
{
|
113
|
-
name: "Couch",
|
114
|
-
options: {
|
115
|
-
backend: if defined?(JRUBY_VERSION)
|
116
|
-
require 'faraday/adapter/manticore'
|
117
|
-
::Faraday.new("http://127.0.0.1:5984/moneta") { |f| f.adapter :manticore }
|
118
|
-
end,
|
119
|
-
login: couch_login,
|
120
|
-
password: couch_password
|
121
|
-
},
|
122
|
-
clear_options: { compact: true, await_compact: true },
|
123
|
-
},
|
124
|
-
{
|
125
|
-
name: "DBM",
|
126
|
-
options: {file: "#{DIR}/dbm"}
|
127
|
-
},
|
128
|
-
{
|
129
|
-
name: "DataMapper",
|
130
|
-
options: {
|
131
|
-
setup: "mysql://#{mysql_username}:@localhost/#{mysql_database1}",
|
132
|
-
table: 'datamapper'
|
133
|
-
}
|
134
|
-
},
|
135
|
-
{
|
136
|
-
name: "Daybreak",
|
137
|
-
options: { file: "#{DIR}/daybreak" },
|
138
|
-
},
|
139
|
-
{
|
140
|
-
name: "File",
|
141
|
-
options: {
|
142
|
-
dir: "#{DIR}/file"
|
143
|
-
}
|
144
|
-
},
|
145
|
-
{name: "GDBM", options: {file: "#{DIR}/gdbm"}},
|
146
|
-
{name: "HBase"},
|
147
|
-
{name: "HashFile", options: { dir: "#{DIR}/hashfile" }},
|
148
|
-
{name: "KyotoCabinet", options: { file: "#{DIR}/kyotocabinet.kch" }},
|
149
|
-
{name: "LRUHash"},
|
150
|
-
{name: "LevelDB", options: { dir: "#{DIR}/leveldb" }},
|
151
|
-
{name: "LocalMemCache", options: { file: "#{DIR}/lmc" }},
|
152
|
-
{
|
153
|
-
name: "LMDB",
|
154
|
-
options: {
|
155
|
-
dir: "#{DIR}/lmdb",
|
156
|
-
writemap: true,
|
157
|
-
mapasync: true,
|
158
|
-
nometasync: true,
|
159
|
-
mapsize: 4096 * 3e2
|
160
|
-
}
|
161
|
-
},
|
162
|
-
{name: "MemcachedDalli"},
|
163
|
-
unless defined?(JRUBY_VERSION)
|
164
|
-
{name: "MemcachedNative"}
|
165
|
-
end,
|
166
|
-
{name: "Memory"},
|
167
|
-
{name: "Mongo"},
|
168
|
-
{name: "PStore", options: { file: "#{DIR}/pstore" }},
|
169
|
-
{name: "Redis"},
|
170
|
-
{
|
171
|
-
name: "RestClient (Memory)",
|
172
|
-
adapter: :RestClient,
|
173
|
-
options: {
|
174
|
-
url: 'http://127.0.0.1:8808/moneta',
|
175
|
-
backend: if defined?(JRUBY_VERSION)
|
176
|
-
require 'faraday/adapter/manticore'
|
177
|
-
::Faraday.new("http://127.0.0.1:8808/moneta") { |f| f.adapter :manticore }
|
178
|
-
end
|
179
|
-
}
|
180
|
-
},
|
181
|
-
{name: "Riak"},
|
182
|
-
{
|
183
|
-
name: "Sequel (MySQL)",
|
184
|
-
adapter: :Sequel,
|
185
|
-
options: {
|
186
|
-
table: 'sequel',
|
187
|
-
db: (defined?(JRUBY_VERSION) ?
|
188
|
-
"jdbc:mysql://localhost/#{mysql_database1}?user=#{mysql_username}" :
|
189
|
-
"mysql2://#{mysql_username}:@localhost/#{mysql_database1}")
|
190
|
-
}
|
191
|
-
},
|
192
|
-
{
|
193
|
-
name: "Sequel (Postgres)",
|
194
|
-
adapter: :Sequel,
|
195
|
-
options:
|
196
|
-
if defined?(JRUBY_VERSION)
|
197
|
-
{db: "jdbc:postgresql://localhost/#{postgres_database1}?user=#{postgres_username}"}
|
198
|
-
else
|
199
|
-
{
|
200
|
-
db: "postgres://localhost/#{postgres_database1}",
|
201
|
-
user: postgres_username
|
202
|
-
}
|
203
|
-
end.merge(table: 'sequel')
|
204
|
-
},
|
205
|
-
{
|
206
|
-
name: "Sequel (HStore)",
|
207
|
-
adapter: :Sequel,
|
208
|
-
options:
|
209
|
-
if defined?(JRUBY_VERSION)
|
210
|
-
{db: "jdbc:postgresql://localhost/#{postgres_database1}?user=#{postgres_username}"}
|
211
|
-
else
|
212
|
-
{
|
213
|
-
db: "postgres://localhost/#{postgres_database1}",
|
214
|
-
user: postgres_username
|
215
|
-
}
|
216
|
-
end.merge(table: 'sequel_hstore', hstore: 'row')
|
217
|
-
},
|
218
|
-
{
|
219
|
-
name: "Sequel (Sqlite)",
|
220
|
-
adapter: :Sequel,
|
221
|
-
options: {
|
222
|
-
table: 'sequel',
|
223
|
-
db: "#{defined?(JRUBY_VERSION) && 'jdbc:'}sqlite://#{DIR}/sequel"
|
224
|
-
}
|
225
|
-
},
|
226
|
-
{
|
227
|
-
name: "Sqlite (Memory)",
|
228
|
-
adapter: :Sqlite,
|
229
|
-
options: {
|
230
|
-
file: ':memory:'
|
231
|
-
}
|
232
|
-
},
|
233
|
-
{
|
234
|
-
name: "Sqlite (File)",
|
235
|
-
adapter: :Sqlite,
|
236
|
-
options: {
|
237
|
-
file: "#{DIR}/sqlite"
|
238
|
-
}
|
239
|
-
},
|
240
|
-
{name: "TDB", options: { file: "#{DIR}/tdb" }},
|
241
|
-
{name: "TokyoCabinet", options: { file: "#{DIR}/tokyocabinet" }},
|
242
|
-
{name: "TokyoTyrant", options: {port: 10431}},
|
243
|
-
].compact
|
244
|
-
|
245
|
-
CONFIGS = {
|
246
|
-
test: {
|
247
|
-
runs: 2,
|
248
|
-
keys: 10,
|
249
|
-
min_key_len: 1,
|
250
|
-
max_key_len: 32,
|
251
|
-
key_dist: :uniform,
|
252
|
-
min_val_len: 0,
|
253
|
-
max_val_len: 256,
|
254
|
-
val_dist: :uniform
|
255
|
-
},
|
256
|
-
uniform_small: {
|
257
|
-
runs: 3,
|
258
|
-
keys: 1000,
|
259
|
-
min_key_len: 1,
|
260
|
-
max_key_len: 32,
|
261
|
-
key_dist: :uniform,
|
262
|
-
min_val_len: 0,
|
263
|
-
max_val_len: 256,
|
264
|
-
val_dist: :uniform
|
265
|
-
},
|
266
|
-
uniform_medium: {
|
267
|
-
runs: 3,
|
268
|
-
keys: 1000,
|
269
|
-
min_key_len: 3,
|
270
|
-
max_key_len: 128,
|
271
|
-
key_dist: :uniform,
|
272
|
-
min_val_len: 0,
|
273
|
-
max_val_len: 1024,
|
274
|
-
val_dist: :uniform
|
275
|
-
},
|
276
|
-
uniform_large: {
|
277
|
-
runs: 3,
|
278
|
-
keys: 100,
|
279
|
-
min_key_len: 3,
|
280
|
-
max_key_len: 128,
|
281
|
-
key_dist: :uniform,
|
282
|
-
min_val_len: 0,
|
283
|
-
max_val_len: 10240,
|
284
|
-
val_dist: :uniform
|
285
|
-
},
|
286
|
-
normal_small: {
|
287
|
-
runs: 3,
|
288
|
-
keys: 1000,
|
289
|
-
min_key_len: 1,
|
290
|
-
max_key_len: 32,
|
291
|
-
key_dist: :normal,
|
292
|
-
min_val_len: 0,
|
293
|
-
max_val_len: 256,
|
294
|
-
val_dist: :normal
|
295
|
-
},
|
296
|
-
normal_medium: {
|
297
|
-
runs: 3,
|
298
|
-
keys: 1000,
|
299
|
-
min_key_len: 3,
|
300
|
-
max_key_len: 128,
|
301
|
-
key_dist: :normal,
|
302
|
-
min_val_len: 0,
|
303
|
-
max_val_len: 1024,
|
304
|
-
val_dist: :normal
|
305
|
-
},
|
306
|
-
normal_large: {
|
307
|
-
runs: 3,
|
308
|
-
keys: 100,
|
309
|
-
min_key_len: 3,
|
310
|
-
max_key_len: 128,
|
311
|
-
key_dist: :normal,
|
312
|
-
min_val_len: 0,
|
313
|
-
max_val_len: 10240,
|
314
|
-
val_dist: :normal
|
315
|
-
},
|
316
|
-
}
|
317
|
-
|
318
|
-
DICT = 'ABCDEFGHIJKLNOPQRSTUVWXYZabcdefghijklnopqrstuvwxyz123456789'.freeze
|
319
|
-
|
320
|
-
module Rand
|
321
|
-
extend self
|
322
|
-
|
323
|
-
def normal_rand(mean, stddev)
|
324
|
-
# Box-Muller transform
|
325
|
-
theta = 2 * Math::PI * (rand(1e10) / 1e10)
|
326
|
-
scale = stddev * Math.sqrt(-2 * Math.log(1 - (rand(1e10) / 1e10)))
|
327
|
-
[mean + scale * Math.cos(theta),
|
328
|
-
mean + scale * Math.sin(theta)]
|
329
|
-
end
|
330
|
-
|
331
|
-
def uniform(min, max)
|
332
|
-
rand(max - min) + min
|
333
|
-
end
|
334
|
-
|
335
|
-
def normal(min, max)
|
336
|
-
mean = (min + max) / 2
|
337
|
-
stddev = (max - min) / 4
|
338
|
-
loop do
|
339
|
-
val = normal_rand(mean, stddev)
|
340
|
-
return val.first if val.first >= min && val.first <= max
|
341
|
-
return val.last if val.last >= min && val.last <= max
|
342
|
-
end
|
343
|
-
end
|
344
|
-
end
|
345
|
-
|
346
|
-
def header
|
347
|
-
(" " * @name_len) + " Minimum Maximum Total Mean Stddev Ops/s"
|
348
|
-
end
|
349
|
-
|
350
|
-
def separator
|
351
|
-
"=" * header.length
|
352
|
-
end
|
353
|
-
|
354
|
-
def parallel(&block)
|
355
|
-
if defined?(JRUBY_VERSION)
|
356
|
-
Thread.new(&block)
|
357
|
-
else
|
358
|
-
Process.fork(&block)
|
359
|
-
end
|
360
|
-
end
|
361
|
-
|
362
|
-
def write_histogram(file, sizes)
|
363
|
-
min = sizes.min
|
364
|
-
delta = sizes.max - min
|
365
|
-
histogram = []
|
366
|
-
sizes.each do |s|
|
367
|
-
s = 10 * (s - min) / delta
|
368
|
-
histogram[s] ||= 0
|
369
|
-
histogram[s] += 1
|
370
|
-
end
|
371
|
-
File.open(file, 'w') do |f|
|
372
|
-
histogram.each_with_index { |n,i| f.puts "#{i*delta/10+min} #{n}" }
|
373
|
-
end
|
374
|
-
end
|
375
|
-
|
376
|
-
def start_servers
|
377
|
-
@moneta_server_handle =
|
378
|
-
parallel do
|
379
|
-
begin
|
380
|
-
Moneta::Server.new(Moneta.new(:Memory)).run
|
381
|
-
rescue => ex
|
382
|
-
puts "\e[31mFailed to start Moneta server - #{ex.message}\e[0m"
|
383
|
-
end
|
384
|
-
end
|
385
|
-
|
386
|
-
@restserver_handle = start_restserver(8808)
|
387
|
-
|
388
|
-
@tokyotyrant_handle = spawn("ttserver -port 10431 -le -log #{DIR}/tokyotyrant.log #{DIR}/tokyotyrant.tch")
|
389
|
-
|
390
|
-
Signal.trap "INT" do
|
391
|
-
stop_servers
|
392
|
-
exit
|
393
|
-
end
|
394
|
-
|
395
|
-
sleep 1 # Wait for servers
|
396
|
-
end
|
397
|
-
|
398
|
-
def stop_servers
|
399
|
-
if @restserver_handle
|
400
|
-
stop_restserver(@restserver_handle)
|
401
|
-
@restserver_handle = nil
|
402
|
-
end
|
403
|
-
|
404
|
-
case @moneta_server_handle
|
405
|
-
when Thread
|
406
|
-
Thread.kill @moneta_server_handle
|
407
|
-
when Integer
|
408
|
-
Process.kill "TERM", @moneta_server_handle
|
409
|
-
Process.wait @moneta_server_handle
|
410
|
-
end
|
411
|
-
|
412
|
-
Process.kill "TERM", @tokyotyrant_handle
|
413
|
-
end
|
414
|
-
|
415
|
-
def test_stores
|
416
|
-
@stores.select! do |spec|
|
417
|
-
adapter = spec[:adapter] || spec[:name].to_sym
|
418
|
-
options = spec[:options] || {}
|
419
|
-
begin
|
420
|
-
if adapter == :DataMapper
|
421
|
-
begin
|
422
|
-
require 'dm-core'
|
423
|
-
DataMapper.setup(:default, adapter: :in_memory)
|
424
|
-
rescue LoadError => ex
|
425
|
-
puts "\e[31mFailed to load DataMapper - #{ex.message}\e[0m"
|
426
|
-
end
|
427
|
-
elsif adapter == :Riak
|
428
|
-
require 'riak'
|
429
|
-
Riak.disable_list_keys_warnings = true
|
430
|
-
end
|
431
|
-
|
432
|
-
cache = Moneta.new(adapter, options.dup)
|
433
|
-
cache['test'] = 'test'
|
434
|
-
true
|
435
|
-
rescue Exception => ex
|
436
|
-
puts "\e[31m#{spec[:name]} not benchmarked - #{ex.message}\e[0m"
|
437
|
-
false
|
438
|
-
ensure
|
439
|
-
(cache.close rescue nil) if cache
|
440
|
-
end
|
441
|
-
end
|
442
|
-
end
|
443
|
-
|
444
|
-
def generate_data
|
445
|
-
until @data.size == @config[:keys]
|
446
|
-
key = DICT.random(Rand.send(@config[:key_dist], @config[:min_key_len], @config[:max_key_len]))
|
447
|
-
@data[key] = DICT.random(Rand.send(@config[:val_dist], @config[:min_val_len], @config[:max_val_len]))
|
448
|
-
end
|
449
|
-
|
450
|
-
key_lens, val_lens = @data.keys.map(&:size), @data.values.map(&:size)
|
451
|
-
@data = @data.to_a
|
452
|
-
|
453
|
-
write_histogram("#{DIR}/key.histogram", key_lens)
|
454
|
-
write_histogram("#{DIR}/value.histogram", val_lens)
|
455
|
-
|
456
|
-
puts "\n\e[1m\e[34m#{separator}\n\e[34mComputing keys and values...\n\e[34m#{separator}\e[0m"
|
457
|
-
puts " " * @name_len + %{ Minimum Maximum Total Mean Stddev}
|
458
|
-
puts 'Key Length'.ljust(@name_len) + ' % 8d % 8d % 8d % 8d % 8d' % [key_lens.min, key_lens.max, key_lens.sum, mean(key_lens), stddev(key_lens)]
|
459
|
-
puts 'Value Length'.ljust(@name_len) + ' % 8d % 8d % 8d % 8d % 8d' % [val_lens.min, val_lens.max, val_lens.sum, mean(val_lens), stddev(val_lens)]
|
460
|
-
end
|
461
|
-
|
462
|
-
def print_config
|
463
|
-
puts "\e[1m\e[36m#{separator}\n\e[36mConfig #{@config_name}\n\e[36m#{separator}\e[0m"
|
464
|
-
@config.each do |k,v|
|
465
|
-
puts '%-16s = %-10s' % [k,v]
|
466
|
-
end
|
467
|
-
end
|
468
|
-
|
469
|
-
def print_store_stats(name)
|
470
|
-
puts "\n" + header
|
471
|
-
[:write, :read, :sum].each do |i|
|
472
|
-
ops = (1000 * @config[:runs] * @data.size) / @stats[name][i].sum
|
473
|
-
line = "%-#{@name_len-1}.#{@name_len-1}s %-5s % 8d % 8d % 8d % 8d % 8d % 8d" %
|
474
|
-
[name, i, @stats[name][i].min, @stats[name][i].max, @stats[name][i].sum,
|
475
|
-
mean(@stats[name][i]), stddev(@stats[name][i]), ops]
|
476
|
-
@summary << [-ops, line << "\n"] if i == :sum
|
477
|
-
puts line
|
478
|
-
end
|
479
|
-
|
480
|
-
errors = @stats[name][:error].sum
|
481
|
-
if errors > 0
|
482
|
-
puts "\e[31m%-23.23s % 8d % 8d % 8d % 8d\e[0m" %
|
483
|
-
['Read errors', @stats[name][:error].min, @stats[name][:error].max, errors, errors / @config[:runs]]
|
484
|
-
else
|
485
|
-
puts "\e[32mNo read errors"
|
486
|
-
end
|
487
|
-
end
|
488
|
-
|
489
|
-
def benchmark_store(spec)
|
490
|
-
name = spec[:name]
|
491
|
-
adapter = spec[:adapter] || spec[:name].to_sym
|
492
|
-
options = spec[:options] || {}
|
493
|
-
puts "\n\e[1m\e[34m#{separator}\n\e[34m#{name}\n\e[34m#{separator}\e[0m"
|
494
|
-
|
495
|
-
store = Moneta.new(adapter, options.dup)
|
496
|
-
|
497
|
-
@stats[name] = {
|
498
|
-
write: [],
|
499
|
-
read: [],
|
500
|
-
sum: [],
|
501
|
-
error: []
|
502
|
-
}
|
503
|
-
|
504
|
-
%w(Rehearse Measure).each do |type|
|
505
|
-
state = ''
|
506
|
-
print "%s [%#{2 * @config[:runs]}s] " % [type, state]
|
507
|
-
|
508
|
-
@config[:runs].times do |run|
|
509
|
-
store.clear(spec[:clear_options] || {})
|
510
|
-
|
511
|
-
@data.shuffle!
|
512
|
-
m1 = Benchmark.measure do
|
513
|
-
@data.each {|k,v| store[k] = v }
|
514
|
-
end
|
515
|
-
|
516
|
-
print "%s[%-#{2 * @config[:runs]}s] " % ["\b" * (2 * @config[:runs] + 3), state << 'W']
|
517
|
-
|
518
|
-
@data.shuffle!
|
519
|
-
error = 0
|
520
|
-
m2 = Benchmark.measure do
|
521
|
-
@data.each do |k, v|
|
522
|
-
error += 1 if v != store[k]
|
523
|
-
end
|
524
|
-
end
|
525
|
-
|
526
|
-
print "%s[%-#{2 * @config[:runs]}s] " % ["\b" * (2 * @config[:runs] + 3), state << 'R']
|
527
|
-
|
528
|
-
if type == 'Measure'
|
529
|
-
@stats[name][:write] << m1.real * 1000
|
530
|
-
@stats[name][:error] << error
|
531
|
-
@stats[name][:read] << m2.real * 1000
|
532
|
-
@stats[name][:sum] << (m1.real + m2.real) * 1000
|
533
|
-
end
|
534
|
-
end
|
535
|
-
end
|
536
|
-
|
537
|
-
print_store_stats(name)
|
538
|
-
rescue StandardError => ex
|
539
|
-
puts "\n\e[31mFailed to benchmark #{name} - #{ex.message}\e[0m\n"
|
540
|
-
ensure
|
541
|
-
store.close if store
|
542
|
-
end
|
543
|
-
|
544
|
-
def run_benchmarks
|
545
|
-
@stores.each do |spec|
|
546
|
-
benchmark_store(spec)
|
547
|
-
sleep 1
|
548
|
-
end
|
549
|
-
end
|
550
|
-
|
551
|
-
def print_summary
|
552
|
-
puts "\n\e[1m\e[36m#{separator}\n\e[36mSummary #{@config_name}: #{@config[:runs]} runs, #{@data.size} keys\n\e[36m#{separator}\e[0m\n#{header}\n"
|
553
|
-
@summary.sort_by(&:first).each do |entry|
|
554
|
-
puts entry.last
|
555
|
-
end
|
556
|
-
end
|
557
|
-
|
558
|
-
def initialize(args)
|
559
|
-
@config_name = args.size == 1 ? args.first.to_sym : :uniform_medium
|
560
|
-
unless @config = CONFIGS[@config_name]
|
561
|
-
puts "Configuration #{@config_name} not found"
|
562
|
-
exit
|
563
|
-
end
|
564
|
-
|
565
|
-
@size = @config_name.to_s.split('_').last.to_sym
|
566
|
-
@stores =
|
567
|
-
if ENV['MONETA_STORES']
|
568
|
-
store_names = ENV['MONETA_STORES'].split(/,\s*/)
|
569
|
-
STORES.select { |spec| store_names.any? { |name| name == spec[:name] } }
|
570
|
-
elsif ENV['MONETA_STORES_MATCHING']
|
571
|
-
r = Regexp.new(ENV['MONETA_STORES_MATCHING'])
|
572
|
-
STORES.select { |spec| spec[:name].match(r) }
|
573
|
-
else
|
574
|
-
STORES
|
575
|
-
end.select { |spec| !spec.key?(:sizes) || spec[:sizes].include?(@size) }
|
576
|
-
|
577
|
-
@name_len = (@stores.map { |spec| spec[:name] }.map(&:length) + ["Value Length".length]).max + 2
|
578
|
-
|
579
|
-
# Disable jruby stdout pollution by memcached
|
580
|
-
if defined?(JRUBY_VERSION)
|
581
|
-
require 'java'
|
582
|
-
properties = java.lang.System.getProperties();
|
583
|
-
properties.put('net.spy.log.LoggerImpl', 'net.spy.memcached.compat.log.SunLogger');
|
584
|
-
java.lang.System.setProperties(properties);
|
585
|
-
java.util.logging.Logger.getLogger('').setLevel(java.util.logging.Level::OFF)
|
586
|
-
end
|
587
|
-
|
588
|
-
@stats, @data, @summary = {}, {}, []
|
589
|
-
end
|
590
|
-
|
591
|
-
def run
|
592
|
-
FileUtils.rm_rf(DIR)
|
593
|
-
FileUtils.mkpath(DIR)
|
594
|
-
start_servers
|
595
|
-
test_stores
|
596
|
-
print_config
|
597
|
-
generate_data
|
598
|
-
run_benchmarks
|
599
|
-
print_summary
|
600
|
-
stop_servers
|
601
|
-
FileUtils.rm_rf(DIR)
|
602
|
-
end
|
603
|
-
end
|
604
|
-
|
605
|
-
MonetaBenchmarks.new(ARGV).run
|
data/script/contributors
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
contributors = `git log --format='%aN <%aE>'`
|
4
|
-
.gsub(/hiddenbek/, 'Scott Wadden')
|
5
|
-
.gsub(/Asmod4n/, 'Hendrik Beskow')
|
6
|
-
.lines
|
7
|
-
.uniq
|
8
|
-
.reject { |line| line.match? /asppsa@gmail.com|hannes.georg@xing.com|spotapov|yehuda-katzs-mac|wycats / }
|
9
|
-
.sort { |str1, str2| str1.casecmp(str2) }
|
10
|
-
|
11
|
-
file = File.open('CONTRIBUTORS', 'w')
|
12
|
-
file << contributors.join
|
data/script/memusage
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$: << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
|
5
|
-
def memusage
|
6
|
-
`pmap #{$$} | tail -1`[10..-1].strip.to_i
|
7
|
-
end
|
8
|
-
|
9
|
-
def shrink
|
10
|
-
last = memusage
|
11
|
-
loop do
|
12
|
-
GC.start
|
13
|
-
sleep 1
|
14
|
-
m = memusage
|
15
|
-
break if m == last
|
16
|
-
last = m
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
$last_memusage = 0
|
21
|
-
|
22
|
-
def stats
|
23
|
-
shrink
|
24
|
-
m = memusage
|
25
|
-
delta = m - $last_memusage
|
26
|
-
$last_memusage = m
|
27
|
-
puts "# #{m}K #{delta >= 0 ? '+' : ''}#{delta}K"
|
28
|
-
end
|
29
|
-
|
30
|
-
stats
|
31
|
-
|
32
|
-
%q{require 'moneta'
|
33
|
-
Moneta.new(:Memory)
|
34
|
-
Moneta.new(:File, dir: 'filestore')
|
35
|
-
Moneta.new(:MemcachedNative)
|
36
|
-
Moneta.new(:MemcachedDalli)}.each_line do |line|
|
37
|
-
puts line
|
38
|
-
eval(line)
|
39
|
-
stats
|
40
|
-
end
|