[ruby-core:68147] [Ruby trunk - Bug #10761] Marshal.dump 100% slower in 2.2.0 vs 2.1.5

From: s.wanabe@...
Date: 2015-02-17 13:56:55 UTC
List: ruby-core #68147
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)
[email protected] (2.21 KB)


-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next