зеркало из https://github.com/github/grit.git
130 строки
2.8 KiB
Ruby
130 строки
2.8 KiB
Ruby
require 'fileutils'
|
|
require 'benchmark'
|
|
require 'rubygems'
|
|
require 'ruby-prof'
|
|
require 'memcache'
|
|
require 'pp'
|
|
|
|
|
|
#require 'grit'
|
|
require 'lib/grit'
|
|
|
|
def main
|
|
@wbare = File.expand_path(File.join('test', 'dot_git'))
|
|
|
|
in_temp_dir do
|
|
#result = RubyProf.profile do
|
|
|
|
git = Grit::Repo.new('.')
|
|
puts Grit::VERSION
|
|
|
|
Grit::GitRuby.use_commit_db = true
|
|
#Grit::GitRuby.cache_client = MemCache.new 'localhost:11211', :namespace => 'grit'
|
|
#Grit.debug = true
|
|
|
|
#pp Grit::GitRuby.cache_client.stats
|
|
|
|
commit1 = '5e3ee1198672257164ce3fe31dea3e40848e68d5'
|
|
commit2 = 'ca8a30f5a7f0f163bbe3b6f0abf18a6c83b0687a'
|
|
|
|
Benchmark.bm(8) do |x|
|
|
|
|
run_code(x, 'packobj') do
|
|
@commit = git.commit('5e3ee1198672257164ce3fe31dea3e40848e68d5')
|
|
@tree = git.tree('cd7422af5a2e0fff3e94d6fb1a8fff03b2841881')
|
|
@blob = git.blob('4232d073306f01cf0b895864e5a5cfad7dd76fce')
|
|
@commit.parents[0].parents[0].parents[0]
|
|
end
|
|
|
|
run_code(x, 'commits 1') do
|
|
git.commits.size
|
|
end
|
|
|
|
run_code(x, 'commits 2') do
|
|
log = git.commits('master', 15)
|
|
log.size
|
|
log.size
|
|
log.first
|
|
git.commits('testing').map { |c| c.message }
|
|
end
|
|
|
|
run_code(x, 'big revlist') do
|
|
c = git.commits('master', 200)
|
|
end
|
|
|
|
run_code(x, 'log') do
|
|
log = git.log('master')
|
|
log.size
|
|
log.size
|
|
log.first
|
|
end
|
|
|
|
run_code(x, 'diff') do
|
|
c = git.diff(commit1, commit2)
|
|
end
|
|
|
|
run_code(x, 'commit-diff') do
|
|
c = git.commit_diff(commit1)
|
|
end
|
|
|
|
run_code(x, 'heads') do
|
|
c = git.heads.collect { |b| b.commit.id }
|
|
end
|
|
|
|
# run_code(x, 'config', 100) do
|
|
# c = git.config['user.name']
|
|
# c = git.config['user.email']
|
|
# end
|
|
|
|
#run_code(x, 'commit count') do
|
|
# c = git.commit_count('testing')
|
|
#end
|
|
|
|
|
|
end
|
|
#end
|
|
|
|
#printer = RubyProf::FlatPrinter.new(result)
|
|
#printer.print(STDOUT, 0)
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
def run_code(x, name, times = 30)
|
|
x.report(name.ljust(12)) do
|
|
for i in 1..times do
|
|
yield i
|
|
end
|
|
end
|
|
|
|
#end
|
|
|
|
# Print a graph profile to text
|
|
end
|
|
|
|
def new_file(name, contents)
|
|
File.open(name, 'w') do |f|
|
|
f.puts contents
|
|
end
|
|
end
|
|
|
|
|
|
def in_temp_dir(remove_after = true)
|
|
filename = 'git_test' + Time.now.to_i.to_s + rand(300).to_s.rjust(3, '0')
|
|
tmp_path = File.join("/tmp/", filename)
|
|
FileUtils.mkdir(tmp_path)
|
|
Dir.chdir tmp_path do
|
|
FileUtils.cp_r(@wbare, File.join(tmp_path, '.git'))
|
|
yield tmp_path
|
|
end
|
|
puts tmp_path
|
|
#FileUtils.rm_r(tmp_path) if remove_after
|
|
end
|
|
|
|
main()
|
|
|
|
##pp Grit::GitRuby.cache_client.stats
|