У меня есть сложный объект, my_object, который я MARSHAL сMashalling в Руби 2.2.0 медленнее, чем 2.1.5
Marshal.dump (my_object)
Я протестированные производительность вызова, что линия 100 раз в обоих 2.1.5p273 и 2.2.0, и ниже приведены результаты:
2.1.5
user system total real
Marshal Dump 7.310000 0.120000 7.430000 ( 8.988470)
Marshal Dump 7.520000 0.050000 7.570000 ( 8.210356)
Marshal Dump 7.610000 0.050000 7.660000 ( 8.432685)
2.2.0
user system total real
Marshal Dump 26.480000 0.150000 26.630000 (29.591742)
Marshal Dump 24.100000 0.300000 24.400000 (28.520397)
Marshal Dump 26.210000 0.210000 26.420000 (29.993412)
(. Я побежал тест 3 раза для каждой версии, чтобы быть полным)
Как вы можете видеть, это взяв i n превышение в 3 раза в 2.2.0 против 2.1.5. Я отключил Marshal.dump, потому что, используя ruby-prof gem, он показал мне, что это была линия, которая плохо работала; но я не могу найти способ получить методы, которые сам Marshal.dump вызывает в профилировщике.
Edit: увидеть мой ответ с минимальным Repro, нашел после долгих экспериментов
Для тех, кто хочет следовать этому, я уменьшил его до минимального уровня и зарегистрировал его здесь: https://bugs.ruby-lang.org/issues/10761. Проблема, похоже, не является размером, а сложностью, поскольку мне пришлось создать объект с множеством уровней вложенных объектов внутри него, чтобы воспроизвести проблему. – davej
Как вы отредактировали то, что устранило исходный вопрос, и этот вопрос ... ну, это не вопрос, это в основном ответ. Я думаю, что все это интересно, но для стандартов SO я думаю, что он заслуживает понижения. – iain
@ian: Действительно? Мое решение заключалось в том, чтобы оставить вопрос, который никому не помог, или опубликовать то, что, я бы сказал, довольно большое дело или удалить весь вопрос. Я сделал то, что, по моему мнению, было лучше всего для сообщества. Честно говоря, это мелочность, подобная твоей, которая дает выродкам плохую репутацию. – davej