Uploaded image for project: 'HttpComponents HttpCore'
  1. HttpComponents HttpCore
  2. HTTPCORE-408

Get rid of CharArrayBuffer

    XMLWordPrintableJSON

Details

    • Wish
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 5.0-alpha2
    • HttpCore
    • None

    Description

      Recently I profiled WEB-oriented application that uses http core and http async client as libraries. At some point I find some very strange code behavior. URLEncodedUtils creates new CharArrayBuffer and copies whole string into it every time URI parameters parsing is required. I find no reason for CharArrayBuffer to be used here except "no other type is allowed"

      After some checking I find out that a lot of code uses the same copy-before-parse technique. Why? Because currently there is no way to work with wrapped values, to pass string as argument, etc.

      So, my proposals are:

      • replace CharArrayBuffer with CharSequence at places where only length() and charAt() methods are used. Almost all parsing code does not need anything else. Thus allow to pass StringBuffer / String / CharBuffer as argument.
      • Seriously consider replacing CharArrayBuffer with CharBuffer in all places where data is read from string. Thus reducing GC and make possible for all methods to use direct memory access (via DirectCharBuffer*).
      • Consider replacing CharArrayBuffer with StringBuilder or even CharBuffer in places where data is written into it.

      Let me know if this can be included in 5.0 so I can prepare the patch.

      Attachments

        Activity

          People

            Unassigned Unassigned
            bsp Sergey Vladimirov
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: