루비의 오일러 솔루션을 테스트하는 데이 평가판 타이머 코드가 있습니다.시간의 차이가 음수를 반환합니다.
$RUNS = 12
def run(solve)
times = []
$RUNS.times do
start_t = Time.now.usec
solve.call
end_t = Time.now.usec
times << (end_t - start_t)/1000.0
end
#times = times.delete_if {|i| i < 0}
puts times.inspect
times.sort
mean = times.inject{|a,c| a+c}/$RUNS
puts("Mean:\t#{mean}");
if (times.length % 2 == 0) then
median = (times[times.length/2 - 1] + times[times.length/2])/2.0
else
median = times[times.length/2];
end
puts("Median: #{median}");
end
불행하게도,이 같은 답변 얻기 유지 :
[409.805, 418.16, -582.23, 402.223, -581.94, 413.196, 426.816, -584.732, 519.457, -569.557, 558.918, -579.176]
나는이 이상한 음수를 방지하기 위해 무엇을 할 수 있는가?
그런 다음 어떻게 루비에서 높은 세분성 타이밍을 수행합니까? –
@JBristow Answer 원하는대로하는 방법에 대한 제안으로 업데이트되었습니다. – mikej
이것은 부동 소수점 오류를 요구하는 것 같지만 msec 단위를 얻기 위해 1000을 곱합니다. –