私は、Rakeが含むシステムtouchとシステムtouchへのシェルリングを比較しようとしています。Rubyベンチマーク使用中の出力を防止する
各操作は、標準出力に出力を送信している:
require 'benchmark'
require 'rake'
n = 3
result = Benchmark.bm do |x|
x.report("sh:") do
n.times { sh "touch foo.txt" }
end
x.report("touch:") do
n.times { touch "bar.txt" }
end
end
結果:
user system total real
sh:touch foo.txt
touch foo.txt
touch foo.txt
0.000000 0.010000 0.030000 ( 0.024775)
touch:touch bar.txt
touch bar.txt
touch bar.txt
0.000000 0.000000 0.000000 ( 0.000412)
私がしたいことは次のとおりです。
user system total real
sh:touch foo.txt
0.000000 0.010000 0.030000 ( 0.024775)
touch:touch bar.txt
0.000000 0.000000 0.000000 ( 0.000412)
または結果のみを持っている何か他のもの。
私はBenchmark.measure
を使用するanother questionに読みますが、以下も動作しません:
require 'benchmark'
require 'rake'
n = 3
result = Benchmark.measure do
n.times { sh "touch foo.txt" }
end
puts result
結果:
touch foo.txt
touch foo.txt
touch foo.txt
0.000000 0.000000 0.010000 ( 0.022931)
をIベンチマークsh
とtouch
んが、stdoutに行くからの出力を防ぐ方法?
なぜdownvoteを印刷しません
この例を参照してください
$stdout
をリダイレクトすることができますか?私は答えを改善できるようにコメントしてください。 – akuhn