Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-6068

[luni] Improve Integer.toString(int) performance

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.0M8
    • Fix Version/s: 5.0M9
    • Component/s: Classlib
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      I very agree with Aleksey Shipilev' comment [1] for JIRA HARMONY-6056 as following, so I implement an optimized algorithm for Integer.toString(int) method. Thanks to Aleksey Shipilev's benchmark, here are the test results[2] on my windows platform.
      [1] "Ok, we can implement the in-place Integer.toString() and specialize
      the radix-10 conversion in Integer. Then Classlib performance guys
      might use the inplace conversion to optimize StringBuilder performance
      or even catch the concatenation like J9 does.
      My idea is to share whatever optimization between all VMs that use the Classlib."
      [2]
      Result for Harmony java6 branch:
      (String)base + (int)add:
      -------------------------------------------
      base length (vars with rows): 0..2..10
      add length (vars with cols): 0..2..10

      loop duration = 100 msecs
      target variance = 0.05

      ops/msec, the more the better:
      6721, 6096, *4650, *3846, *3178,
      *8080, *5833, *4447, 3731, 3048,
      *7985, *5848, 4788, 3727, *3114,
      *7891, 5592, *4389, *3560, 3048,
      8388, 5607, *4522, 3727, 3051,

      After applied my patch:
      (String)base + (int)add:
      -------------------------------------------
      base length (vars with rows): 0..2..10
      add length (vars with cols): 0..2..10

      loop duration = 100 msecs
      target variance = 0.05

      ops/msec, the more the better:
      8322, 6721, 4791, 4788, 4788,
      8388, 6721, 5156, *5012, 4797,
      8388, 6707, 5161, *4963, 4795,
      8388, 6707, *5126, 4802, 4788,
      *8048, 6700, *5021, 4802, *4687,

        Attachments

        1. HARMONY-6068-testcase.diff
          1 kB
          Jim Yu
        2. HARMONY-6068-merged-v2.diff
          8 kB
          Aleksey Shipilev
        3. HARMONY-6068-merged-v1.diff
          5 kB
          Aleksey Shipilev
        4. HARMONY-6068-final-V2.diff
          4 kB
          Jim Yu
        5. HARMONY-6068-final.diff
          4 kB
          Jim Yu
        6. HARMONY-6068.diff
          4 kB
          Jim Yu

          Issue Links

            Activity

              People

              • Assignee:
                tellison Tim Ellison
                Reporter:
                junjie0122 Jim Yu
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - 24h
                  24h
                  Remaining:
                  Remaining Estimate - 24h
                  24h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified