Есть ли разница между Time.now
и Time.new
(без параметров)? Может быть разница в управлении памятью или какие-то мелкие детали?Time.now vs. Time.new in Ruby
ответ
now
является псевдонимом для new
. Между ними нет никакой разницы. прибудете Джеффа Прайса ответить (и его ответ тоже правильно, пожалуйста, вверх голосовать свой ответ, если вам нравится это) первое, потому что я писал и работает этот тест:
рубин 2.1.2 (МРТ):
Rehearsal ----------------------------------------------------------------------------
Time.new 0.670000 0.000000 0.670000 ( 0.679709)
Time.now 0.880000 0.010000 0.890000 ( 0.881899)
------------------------------------------------------------------- total: 1.560000sec
user system total real
Time.new 0.720000 0.000000 0.720000 ( 0.719453)
Time.now 0.740000 0.010000 0.750000 ( 0.742711)
Rehearsal ----------------------------------------------------------------------------
Time.new 0.810000 0.000000 0.810000 ( 0.811874)
Time.now 0.830000 0.000000 0.830000 ( 0.831346)
------------------------------------------------------------------- total: 1.640000sec
user system total real
Time.new 0.790000 0.010000 0.800000 ( 0.800082)
Time.now 0.740000 0.000000 0.740000 ( 0.749995)
Rehearsal ----------------------------------------------------------------------------
Time.new 0.680000 0.010000 0.690000 ( 0.690337)
Time.now 0.850000 0.000000 0.850000 ( 0.856800)
------------------------------------------------------------------- total: 1.540000sec
user system total real
Time.new 0.790000 0.010000 0.800000 ( 0.792666)
Time.now 0.770000 0.000000 0.770000 ( 0.777414)
Rehearsal ----------------------------------------------------------------------------
Time.new 0.590000 0.010000 0.600000 ( 0.594650)
Time.now 0.710000 0.010000 0.720000 ( 0.717067)
------------------------------------------------------------------- total: 1.320000sec
user system total real
Time.new 0.870000 0.000000 0.870000 ( 0.872646)
Time.now 0.680000 0.010000 0.690000 ( 0.687092)
Rehearsal ----------------------------------------------------------------------------
Time.new 0.780000 0.010000 0.790000 ( 0.786419)
Time.now 0.780000 0.000000 0.780000 ( 0.789049)
------------------------------------------------------------------- total: 1.570000sec
user system total real
Time.new 0.760000 0.010000 0.770000 ( 0.768194)
Time.now 0.790000 0.010000 0.800000 ( 0.790981)
Run тест себя:
n = 1000000
5.times do
Benchmark.bmbm(40) do |x|
x.report("Time.new"){ n.times { Time.new } }
x.report("Time.now"){ n.times { Time.now } }
end
end
В тестах не будет значимой разницы между 'new' и' now', так как 'now' является псевдонимом' new'. Любые различия связаны с системными процессами или сбором мусора и представляют собой в основном случайный шум, который произошел во время теста. –
@theTinMan: На самом деле, я провел тест примерно 5 раз за рубиновую версию, прежде чем публиковать ее здесь. Если разница была вызвана системными процессами или сборкой мусора или из-за любого случайного шума, который произошел во время теста, тогда результаты за время, затрачиваемое 'Time.new', не должны были быть значительно меньшими для всех 5 запусков. – Surya
Я согласен, что эти компоненты действительно влияют на эталонный показатель, но не должны ли это влиять на него как на случаи, а не на предвзятость на «Time.new»? – Surya
Нет разницы.
Time.now - это псевдоним для :: нового. Возвращает объект Time, инициализированный до текущего системного времени.
Для меня это не совсем то же самое во всех случаях ... '2.2.4: 010> Timecop.freeze (Chronic.parse (« February First »)) => 2017-02-01 12:00: 00 -0800' '2.2.4: 011> Time.now => 2017-02-01 12:00:00 -0800' ' 2.2.4: 012> Time.new => 2016-11-01 11:10:20 -0700' – nroose
Если вы были в курсе, что 'now' был псевдоним для' new', вы должны были сказать, так в этом вопросе, так как это помогло бы нам понять, что вы после. Я ожидаю, что вы знали, что, учитывая, что документ для [Time.new] (http://www.ruby-doc.org/core-2.1.4/Time.html#method-c-now) (v 2.1.4 в любом случае) состоит из одной строки: «Alias for :: new». Возвращает объект Time, инициализированный текущим системным временем ». –