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

[luni] Improve Integer.toString(int) performance

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.0M8
    • 5.0M9
    • Classlib
    • None
    • 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.diff
          4 kB
          Jim Yu
        2. HARMONY-6068-merged-v1.diff
          5 kB
          Aleksey Shipilev
        3. HARMONY-6068-merged-v2.diff
          8 kB
          Aleksey Shipilev
        4. HARMONY-6068-final.diff
          4 kB
          Jim Yu
        5. HARMONY-6068-final-V2.diff
          4 kB
          Jim Yu
        6. HARMONY-6068-testcase.diff
          1 kB
          Jim Yu

        Issue Links

          Activity

            People

              tellison Tim Ellison
              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