From: s.wanabe@... Date: 2015-02-17T13:56:55+00:00 Subject: [ruby-core:68147] [Ruby trunk - Bug #10761] Marshal.dump 100% slower in 2.2.0 vs 2.1.5 Issue #10761 has been updated by _ wanabe. Backport changed from 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONE to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED r49386 is not backported yet in ruby_2_2. In ruby_2_2@49627, there is '#ifdef USE_FLONUM' in st_numhash() of st.c. But in trunk, the '#ifdef' has been deleted at r49386. ---------------------------------------- Bug #10761: Marshal.dump 100% slower in 2.2.0 vs 2.1.5 https://bugs.ruby-lang.org/issues/10761#change-51528 * Author: David Jenkins * Status: Closed * Priority: High * Assignee: * ruby -v: 2.2.0 * Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED ---------------------------------------- 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) flonum-hash-fixup-r45384-v1@r49365.patch (2.21 KB) -- https://bugs.ruby-lang.org/