summaryrefslogtreecommitdiff
path: root/data/rbot
diff options
context:
space:
mode:
authorVoker57 <voker57@gmail.com>2009-12-19 18:50:56 +0300
committerVoker57 <voker57@gmail.com>2010-01-26 00:41:08 +0300
commit06485aeb187dde5e81204b06c8e956e7e035c323 (patch)
tree4809f92cdf709b77b582c1e33f29a7d808ed64e0 /data/rbot
parent9409ec05af96d64cc05e72ea1657859237e0432e (diff)
markov: removed unnecessary mutexes
These were slowing down learning process greatly and do not make sense as far as I can see: learning is always done only by single thread anyway.
Diffstat (limited to 'data/rbot')
-rwxr-xr-xdata/rbot/plugins/markov.rb44
1 files changed, 19 insertions, 25 deletions
diff --git a/data/rbot/plugins/markov.rb b/data/rbot/plugins/markov.rb
index 0b8412f7..574dde57 100755
--- a/data/rbot/plugins/markov.rb
+++ b/data/rbot/plugins/markov.rb
@@ -226,8 +226,6 @@ class MarkovPlugin < Plugin
@chains.set_default([])
@rchains = @registry.sub_registry('v2r')
@rchains.set_default([])
- @chains_mutex = Mutex.new
- @rchains_mutex = Mutex.new
@upgrade_queue = Queue.new
@upgrade_thread = nil
@@ -610,31 +608,27 @@ class MarkovPlugin < Plugin
def learn_triplet(word1, word2, word3)
k = "#{word1} #{word2}"
rk = "#{word2} #{word3}"
- @chains_mutex.synchronize do
- total = 0
- hash = Hash.new(0)
- if @chains.key? k
- t2, h2 = @chains[k]
- total += t2
- hash.update h2
- end
- hash[word3] += 1
- total += 1
- @chains[k] = [total, hash]
+ total = 0
+ hash = Hash.new(0)
+ if @chains.key? k
+ t2, h2 = @chains[k]
+ total += t2
+ hash.update h2
end
- @rchains_mutex.synchronize do
- # Reverse
- total = 0
- hash = Hash.new(0)
- if @rchains.key? rk
- t2, h2 = @rchains[rk]
- total += t2
- hash.update h2
- end
- hash[word1] += 1
- total += 1
- @rchains[rk] = [total, hash]
+ hash[word3] += 1
+ total += 1
+ @chains[k] = [total, hash]
+ # Reverse
+ total = 0
+ hash = Hash.new(0)
+ if @rchains.key? rk
+ t2, h2 = @rchains[rk]
+ total += t2
+ hash.update h2
end
+ hash[word1] += 1
+ total += 1
+ @rchains[rk] = [total, hash]
end