Details

    • Type: Bug Bug
    • Status: Resolved Resolved
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: JRuby 1.7.0.pre1
    • Fix Version/s: JRuby 1.7.0.pre1
    • Component/s: Miscellaneous
    • Labels:
      None
    • Number of attachments :
      0

      Description

      I'm not sure if this was from Tom's changes or from mine, but #pack performance has degraded almost two orders of magnitude as a result.

      Using Chuck Remes's benchmark from JRUBY-6221:

      jruby-1.6.5 (and numbers on master were similar recently):
      
                                   user     system      total        real
      fast generate:           2.028000   0.000000   2.028000 (  2.028000)
      pack:                    0.228000   0.000000   0.228000 (  0.228000)
      parse:                   3.094000   0.000000   3.094000 (  3.094000)
      unpack:                  0.208000   0.000000   0.208000 (  0.208000)
      
      jruby master (now):
      
                                   user     system      total        real
      fast generate:           0.000000   0.000000   0.000000 (  0.000000)
      pack:                   16.308000   0.000000  16.308000 ( 16.308000)
      parse:                   0.000000   0.000000   0.000000 (  0.000000)
      unpack:                  0.000000   0.000000   0.000000 (  0.000000)
      

      A sample profile (with inlining turned off, to avoid clouding the results) shows the following:

           Compiled + native   Method                        
       88.1%     0  +  8539    org.jruby.util.ByteList.grow
        7.8%   753  +     0    org.jruby.util.ByteList.append
        0.4%    39  +     0    org.jruby.util.ByteList.<init>
      

        Activity

        Hide
        Charles Oliver Nutter added a comment -

        I think it was my changes.

        I was too optimistic when I started to move COW logic down into ByteList, and only got halfway before giving up. Unfortunately, I pushed my commits to master anyway.

        I have now rolled changes back all the way to pre-COW hacking, reapplied Tom's fix, and reapplied another fix I had made. Perf is back to normal and tests all pass.

        We'll need another bytelist release.

        Show
        Charles Oliver Nutter added a comment - I think it was my changes. I was too optimistic when I started to move COW logic down into ByteList, and only got halfway before giving up. Unfortunately, I pushed my commits to master anyway. I have now rolled changes back all the way to pre-COW hacking, reapplied Tom's fix, and reapplied another fix I had made. Perf is back to normal and tests all pass. We'll need another bytelist release.
        Hide
        Thomas E Enebo added a comment -

        I pushed bytelist 1.0.10 based on reversed commits.

        Show
        Thomas E Enebo added a comment - I pushed bytelist 1.0.10 based on reversed commits.

          People

          • Assignee:
            Thomas E Enebo
            Reporter:
            Charles Oliver Nutter
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: