diff options
author | Voker57 <voker57@gmail.com> | 2009-12-19 18:50:56 +0300 |
---|---|---|
committer | Voker57 <voker57@gmail.com> | 2010-01-26 00:41:08 +0300 |
commit | 06485aeb187dde5e81204b06c8e956e7e035c323 (patch) | |
tree | 4809f92cdf709b77b582c1e33f29a7d808ed64e0 /data/rbot | |
parent | 9409ec05af96d64cc05e72ea1657859237e0432e (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-x | data/rbot/plugins/markov.rb | 44 |
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 |