diff options
Diffstat (limited to 'vendor/ruby-ole/Rakefile')
-rw-r--r-- | vendor/ruby-ole/Rakefile | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/vendor/ruby-ole/Rakefile b/vendor/ruby-ole/Rakefile deleted file mode 100644 index 1153bb39a..000000000 --- a/vendor/ruby-ole/Rakefile +++ /dev/null @@ -1,209 +0,0 @@ -require 'rake/rdoctask' -require 'rake/testtask' -require 'rake/packagetask' -require 'rake/gempackagetask' - -require 'rbconfig' -require 'fileutils' - -$:.unshift 'lib' - -require 'ole/storage' - -PKG_NAME = 'ruby-ole' -PKG_VERSION = Ole::Storage::VERSION - -task :default => [:test] - -Rake::TestTask.new do |t| - t.test_files = FileList["test/test_*.rb"] - t.warning = true - t.verbose = true -end - -begin - require 'rcov/rcovtask' - # NOTE: this will not do anything until you add some tests - desc "Create a cross-referenced code coverage report" - Rcov::RcovTask.new do |t| - t.test_files = FileList['test/test*.rb'] - t.ruby_opts << "-Ilib" # in order to use this rcov - t.rcov_opts << "--xrefs" # comment to disable cross-references - t.verbose = true - end -rescue LoadError - # Rcov not available -end - -Rake::RDocTask.new do |t| - t.rdoc_dir = 'doc' - t.rdoc_files.include 'lib/**/*.rb' - t.rdoc_files.include 'README', 'ChangeLog' - t.title = "#{PKG_NAME} documentation" - t.options += %w[--line-numbers --inline-source --tab-width 2] - t.main = 'README' -end - -spec = Gem::Specification.new do |s| - s.name = PKG_NAME - s.version = PKG_VERSION - s.summary = %q{Ruby OLE library.} - s.description = %q{A library for easy read/write access to OLE compound documents for Ruby.} - s.authors = ['Charles Lowe'] - s.email = %q{aquasync@gmail.com} - s.homepage = %q{http://code.google.com/p/ruby-ole} - s.rubyforge_project = %q{ruby-ole} - - s.executables = ['oletool'] - s.files = ['README', 'Rakefile', 'ChangeLog', 'data/propids.yaml'] - s.files += FileList['lib/**/*.rb'] - s.files += FileList['test/test_*.rb', 'test/*.doc'] - s.files += FileList['test/oleWithDirs.ole', 'test/test_SummaryInformation'] - s.files += FileList['bin/*'] - s.test_files = FileList['test/test_*.rb'] - - s.has_rdoc = true - s.extra_rdoc_files = ['README', 'ChangeLog'] - s.rdoc_options += [ - '--main', 'README', - '--title', "#{PKG_NAME} documentation", - '--tab-width', '2' - ] -end - -Rake::GemPackageTask.new(spec) do |t| - t.gem_spec = spec - t.need_tar = true - t.need_zip = false - t.package_dir = 'build' -end - -desc 'Run various benchmarks' -task :benchmark do - require 'benchmark' - require 'tempfile' - require 'ole/file_system' - - # should probably add some read benchmarks too - def write_benchmark opts={} - files, size = opts[:files], opts[:size] - block_size = opts[:block_size] || 100_000 - block = 0.chr * block_size - blocks, remaining = size.divmod block_size - remaining = 0.chr * remaining - Tempfile.open 'ole_storage_benchmark' do |temp| - Ole::Storage.open temp do |ole| - files.times do |i| - ole.file.open "file_#{i}", 'w' do |f| - blocks.times { f.write block } - f.write remaining - end - end - end - end - end - - Benchmark.bm do |bm| - bm.report 'write_1mb_1x5' do - 5.times { write_benchmark :files => 1, :size => 1_000_000 } - end - - bm.report 'write_1mb_2x5' do - 5.times { write_benchmark :files => 1_000, :size => 1_000 } - end - end -end - -=begin - -1.2.1: - - user system total real -write_1mb_1x5 73.920000 8.400000 82.320000 ( 91.893138) - -revision 17 (speed up AllocationTable#free_block by using -@sparse attribute, and using Array#index otherwise): - - user system total real -write_1mb_1x5 57.910000 6.190000 64.100000 ( 66.207993) -write_1mb_2x5266.310000 31.750000 298.060000 (305.877203) - -add in extra resize_chain fix (return blocks to avoid calling -AllocationTable#chain twice): - - user system total real -write_1mb_1x5 43.140000 5.480000 48.620000 ( 51.835942) - -add in RangesIOResizeable fix (cache @blocks, to avoid calling -AllocationTable#chain at all when resizing now, just pass it -to AllocationTable#resize_chain): - - user system total real -write_1mb_1x5 29.770000 5.180000 34.950000 ( 39.916747) - -40 seconds is still a really long time to write out 5 megs. -of course, this is all with a 1_000 byte block size, which is -a very small wite. upping this to 100_000 bytes: - - user system total real -write_1mb_1x5 0.540000 0.130000 0.670000 ( 1.051862) - -so it seems that that makes a massive difference. so i really -need buffering in RangesIO if I don't want it to really hurt -for small writes, as all the resize code is kind of expensive. - -one of the costly things at the moment, is RangesIO#offset_and_size, -which is called for each write, and re-finds which range we are in. -that should obviously be changed, to a fixed one that is invalidated -on seeks. buffering would hide that problem to some extent, but i -should fix it anyway. - -re-running the original 1.2.1 with 100_000 byte block size: - - user system total real -write_1mb_1x5 15.590000 2.230000 17.820000 ( 18.704910) - -so there the really badly non-linear AllocationTable#resize_chain is -being felt. - -back to current working copy, running full benchmark: - - user system total real -write_1mb_1x5 0.530000 0.150000 0.680000 ( 0.708919) -write_1mb_2x5227.940000 31.260000 259.200000 (270.200960) - -not surprisingly, the second case hasn't been helped much by the fixes -so far, as they only really help multiple resizes and writes for a file. -this could be pain in the new file system code - potentially searching -through Dirent#children at creation time. - -to test, i'll profile creating 1_000 files, without writing anything: - - user system total real -write_1mb_2x5 16.990000 1.830000 18.820000 ( 19.900568) - -hmmm, so thats not all of it. maybe its the initial chain calls, etc? -writing 1 byte: - - user system total real -write_1mb_1x5 0.520000 0.120000 0.640000 ( 0.660638) -write_1mb_2x5 19.810000 2.280000 22.090000 ( 22.696214) - -weird. - -100 bytes: - - user system total real -write_1mb_1x5 0.560000 0.140000 0.700000 ( 1.424974) -write_1mb_2x5 22.940000 2.840000 25.780000 ( 26.556346) - -500 bytes: - - user system total real -write_1mb_1x5 0.530000 0.150000 0.680000 ( 1.139738) -write_1mb_2x5 77.260000 10.130000 87.390000 ( 91.671086) - -what happens there? very strange. - -=end - |