Issue #10761 has been updated by David Jenkins.
File dataset_dump.txt added
File better_slow_marshal.rb added
I have an even better repro (attached) which yielded the following results:
2.1.5
user system total real
Marshal Dump 4.250000 0.080000 4.330000 ( 4.682933)
Marshal Dump 4.440000 0.040000 4.480000 ( 4.613776)
Marshal Dump 4.500000 0.050000 4.550000 ( 4.717084)
2.2.0
user system total real
Marshal Dump 13.390000 0.070000 13.460000 ( 13.742177)
Marshal Dump 14.540000 0.090000 14.630000 ( 14.884479)
Marshal Dump 13.580000 0.060000 13.640000 ( 13.968422)
----------------------------------------
Bug #10761: Marshal.dump 100% slower in 2.2.0 vs 2.1.5
https://bugs.ruby-lang.org/issues/10761#change-51151
* Author: David Jenkins
* Status: Open
* Priority: High
* Assignee:
* ruby -v: 2.2.0
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Calling Marshal.dump on a complex (nested) object 100 times shows the following:
2.1.5
user system total real
Marshal Dump 24.350000 0.250000 24.600000 ( 29.330294)
2.2.0
user system total real
Marshal Dump 50.450000 0.140000 50.590000 ( 52.268773)
To reproduce, put marshal_slow.rb and nested_ds.txt in same directory and run marshal_slow.rb.
I found that Marshal.dump only shows this kind of discrepancy on deeply nested objects. The nested_ds.txt file is a dump of an object that contained a collection of sub objects of the same type.
---Files--------------------------------
nested_ds.txt (2.1 MB)
marshal_slow.rb (212 Bytes)
dataset_dump.txt (362 KB)
better_slow_marshal.rb (239 Bytes)
--
https://bugs.ruby-lang.org/