jruby-bloomfilter 1.0.0

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.
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ .DS_Store
2
+ .rspec
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm --create use jruby-1.6.2@bloomfilter
data/README ADDED
File without changes
@@ -0,0 +1,28 @@
1
+ $:<< 'lib'
2
+
3
+ require 'benchmark'
4
+ require 'bloomfilter'
5
+
6
+ n = 100_000
7
+
8
+ Benchmark.bm do |b|
9
+ filter = Bloomfilter.new(100_000, 0.01)
10
+
11
+ b.report('insert') do
12
+ n.times do |i|
13
+ filter << 'a'
14
+ end
15
+ end
16
+
17
+ b.report('lookup present') do
18
+ n.times do
19
+ filter.include?('a')
20
+ end
21
+ end
22
+
23
+ b.report('lookup missing') do
24
+ n.times do
25
+ filter.include?('b')
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+
3
+ require 'java'
4
+ require 'ext/java-bloomfilter-0.9.3'
5
+
6
+ require 'serializer'
7
+
8
+ module Jar
9
+ import com.skjegstad.utils.BloomFilter
10
+ end
11
+
12
+ class Bloomfilter
13
+ include Serialization
14
+
15
+ def initialize(options = {})
16
+ if options[:size] && options[:false_positive_percentage]
17
+ @filter = Jar::BloomFilter.new(options[:false_positive_percentage], options[:size])
18
+ elsif options[:filter]
19
+ @filter = options[:filter]
20
+ end
21
+ end
22
+
23
+ def << (k)
24
+ @filter.add(k)
25
+ end
26
+
27
+ def include?(k)
28
+ @filter.contains(k)
29
+ end
30
+
31
+ def count
32
+ @filter.count
33
+ end
34
+
35
+ # def store(path)
36
+ # raise 'Cannot call store without specifying :serializer in initlialize options' unless @serializer
37
+ # @serializer.store(path, @filter)
38
+ # end
39
+ #
40
+ # def self.load(type, path)
41
+ # serializer = Serialization.serializer(type)
42
+ # filter = serializer.load(path)
43
+ # Bloomfilter.new(:filter => filter)
44
+ # end
45
+
46
+ end
Binary file
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative 'spec_helper'
4
+
5
+ require 'tempfile'
6
+
7
+ describe Bloomfilter do
8
+ before :all do
9
+ @filter = Bloomfilter.new(:size => 1_000, :false_positive_percentage => 0.01)
10
+ @path = Tempfile.new('bloomfilter').path
11
+ end
12
+
13
+ it 'should not have any elements from start' do
14
+ @filter.count.should == 0
15
+ end
16
+
17
+ describe '#<<' do
18
+ it 'should be possible to add elements which updates the count' do
19
+ @filter << 'hello'
20
+ @filter.count.should == 1
21
+ end
22
+ end
23
+
24
+ describe '#include?' do
25
+ it 'should return false if an element does not exist' do
26
+ @filter.include?('world').should be_false
27
+ end
28
+
29
+ it 'should return true if an element exists' do
30
+ @filter.include?('hello').should be_true
31
+
32
+ @filter << 'world'
33
+ @filter.include?('world').should be_true
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+
3
+ $: << File.expand_path('../lib', __FILE__)
4
+
5
+ require 'bundler/setup'
6
+ require 'bloomfilter'
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jruby-bloomfilter
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
6
+ platform: ruby
7
+ authors:
8
+ - Daniel Gaiottino
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-07-11 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: jets3t-rb
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 1.0.0
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ description: JRuby wrapper (+ some extra functionality) to http://code.google.com/p/java-bloomfilter
27
+ email:
28
+ - daniel@burtcorp.com
29
+ executables: []
30
+
31
+ extensions: []
32
+
33
+ extra_rdoc_files: []
34
+
35
+ files:
36
+ - .gitignore
37
+ - .rvmrc
38
+ - README
39
+ - benchmark/memory.rb
40
+ - lib/bloomfilter.rb
41
+ - lib/ext/java-bloomfilter-0.9.3.jar
42
+ - spec/bloomfilter_spec.rb
43
+ - spec/spec_helper.rb
44
+ homepage: http://github.com/gaiottino/bloomfilter
45
+ licenses: []
46
+
47
+ post_install_message:
48
+ rdoc_options: []
49
+
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ requirements: []
65
+
66
+ rubyforge_project: jruby-bloomfilter
67
+ rubygems_version: 1.8.5
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: JRuby wrapper for java-bloomfilter
71
+ test_files:
72
+ - spec/bloomfilter_spec.rb
73
+ - spec/spec_helper.rb