memoist2 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (8) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -3
  3. data/LICENCE +20 -0
  4. data/README.md +35 -1
  5. data/Rakefile +2 -1
  6. data/benchmark.rb +72 -0
  7. data/memoist2.gemspec +3 -2
  8. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e212b34d8d7eed959ebc763094d38b50e7d8b00
4
- data.tar.gz: a4d5a63ac608b8ada9c146ab9ec2366a7db4b35c
3
+ metadata.gz: 829d1ae3d37827ff9822e3435752208f5d96c376
4
+ data.tar.gz: 399d3e864904a801173ac73416e9fac4f86dad09
5
5
  SHA512:
6
- metadata.gz: bc242e6f1f0901c52a8625a39e5e94ad5a586911a9316aefd6007bebf4d76cb95a9651fef0e6f8340a5b6da26f28e0ac22af18136663327f3ec90a99375e0b0a
7
- data.tar.gz: 190214b45843f9d85b32a097df62ec3ab26eebae4b69850bd4c389362dc6197b9b595bd2b03dd90dcc8e411a5399dd4a094ab955cf8e814b4d1f1e3f1b5902b6
6
+ metadata.gz: 437e09101708635c4861064ed156cd5d6a419468f4da942395deb7c90b0c19569dd04515c6ad635d6d41a1c620a72084175b4b277e0c1ca3517baf23e8614f50
7
+ data.tar.gz: e84bae0e10a00897fe7afb5eabfa81b9d2d88294664896f0c7b5df1655fa0d514f5dbb9d2b5062dcb239e72fed40e48a23e6c1c4badc9574c9f53987a3da68ae
data/Gemfile CHANGED
@@ -1,4 +1,2 @@
1
1
  source "https://rubygems.org"
2
-
3
- gem "rspec"
4
- gem "rake"
2
+ gemspec
data/LICENCE ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 Matthew Rudy Jacobs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,4 +1,38 @@
1
1
  memoist2
2
2
  ========
3
3
 
4
- Simple Memoization for Ruby 2.0
4
+ Simple Memoization for Ruby 2.0
5
+
6
+ Example
7
+ =======
8
+
9
+ Memoize an instance method
10
+
11
+ class Foo
12
+ extend Memoist2
13
+
14
+ def bar
15
+ sleep 1 && 2**10
16
+ end
17
+ memoize :bar
18
+ end
19
+
20
+ Memoize a class method
21
+
22
+ class Foo
23
+ class << self
24
+ extend Memoist2
25
+
26
+ def bar
27
+ # something expensive
28
+ end
29
+ memoize :bar
30
+ end
31
+ end
32
+
33
+ Licence
34
+ =======
35
+
36
+ Licensed under the MIT licence.
37
+
38
+ See the file LICENCE.
data/Rakefile CHANGED
@@ -15,11 +15,12 @@ spec = Gem::Specification.new do |s|
15
15
 
16
16
  # Basic details
17
17
  s.name = "memoist2"
18
- s.version = "0.1.1"
18
+ s.version = "0.1.2"
19
19
  s.summary = "Really simple memoization for ruby 2.0"
20
20
  s.author = "Matthew Rudy Jacobs"
21
21
  s.email = "MatthewRudyJacobs@gmail.com"
22
22
  s.homepage = "https://github.com/matthewrudy/memoist2"
23
+ s.license = "MIT"
23
24
 
24
25
  s.has_rdoc = true
25
26
  s.extra_rdoc_files = %w(README.md)
data/benchmark.rb ADDED
@@ -0,0 +1,72 @@
1
+ <<-INTRO
2
+
3
+ Question:
4
+ Is Memoist2 performant?
5
+
6
+ Answer:
7
+
8
+ Raw is a little bit slower
9
+ user system total real
10
+ raw method 2.220000 0.000000 2.220000 ( 2.216027)
11
+ memoist2 method 1.670000 0.000000 1.670000 ( 1.670678)
12
+ manual memoized (||=) 1.280000 0.000000 1.280000 ( 1.286099)
13
+ manual memoized (defined?) 1.380000 0.000000 1.380000 ( 1.372037)
14
+
15
+ INTRO
16
+
17
+ require 'benchmark'
18
+ require 'memoist2'
19
+
20
+ TIMES = 10_000_000
21
+
22
+ class MyClass
23
+ extend Memoist2
24
+
25
+ def raw
26
+ (2**10)**2 # something mildly difficult
27
+ end
28
+
29
+ def memoized
30
+ 1
31
+ end
32
+ memoize :memoized
33
+
34
+ def variable_cache
35
+ @variable_cache ||= 1
36
+ end
37
+
38
+ def defined_cache
39
+ unless defined?(@defined_cache)
40
+ @defined_cache = 1
41
+ end
42
+ @defined_cache
43
+ end
44
+ end
45
+
46
+ INSTANCE = MyClass.new
47
+
48
+ Benchmark.bm(30) do |x|
49
+ x.report("raw method") do
50
+ TIMES.times do
51
+ INSTANCE.raw
52
+ end
53
+ end
54
+
55
+ x.report("memoist2 method") do
56
+ TIMES.times do
57
+ INSTANCE.memoized
58
+ end
59
+ end
60
+
61
+ x.report("manual memoized (||=)") do
62
+ TIMES.times do
63
+ INSTANCE.variable_cache
64
+ end
65
+ end
66
+
67
+ x.report("manual memoized (defined?)") do
68
+ TIMES.times do
69
+ INSTANCE.defined_cache
70
+ end
71
+ end
72
+ end
data/memoist2.gemspec CHANGED
@@ -2,17 +2,18 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "memoist2"
5
- s.version = "0.1.0"
5
+ s.version = "0.1.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Matthew Rudy Jacobs"]
9
9
  s.date = "2013-07-19"
10
10
  s.email = "MatthewRudyJacobs@gmail.com"
11
11
  s.extra_rdoc_files = ["README.md"]
12
- s.files = [".gitignore", ".rspec", ".ruby-version", ".travis.yml", "Gemfile", "README.md", "Rakefile", "example/foo.rb", "lib/memoist2.rb", "spec/memoist2_spec.rb", "spec/spec_helper.rb"]
12
+ s.files = [".gitignore", ".rspec", ".ruby-version", ".travis.yml", "Gemfile", "README.md", "Rakefile", "example/foo.rb", "lib/memoist2.rb", "memoist2.gemspec", "spec/memoist2_spec.rb", "spec/spec_helper.rb"]
13
13
  s.homepage = "https://github.com/matthewrudy/memoist2"
14
14
  s.rdoc_options = ["--main", "README.md"]
15
15
  s.require_paths = ["lib"]
16
+ s.required_ruby_version = Gem::Requirement.new(">= 2.0.0")
16
17
  s.rubygems_version = "2.0.3"
17
18
  s.summary = "Really simple memoization for ruby 2.0"
18
19
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memoist2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Rudy Jacobs
@@ -50,15 +50,18 @@ files:
50
50
  - .ruby-version
51
51
  - .travis.yml
52
52
  - Gemfile
53
+ - LICENCE
53
54
  - README.md
54
55
  - Rakefile
56
+ - benchmark.rb
55
57
  - example/foo.rb
56
58
  - lib/memoist2.rb
57
59
  - memoist2.gemspec
58
60
  - spec/memoist2_spec.rb
59
61
  - spec/spec_helper.rb
60
62
  homepage: https://github.com/matthewrudy/memoist2
61
- licenses: []
63
+ licenses:
64
+ - MIT
62
65
  metadata: {}
63
66
  post_install_message:
64
67
  rdoc_options: