Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-2820

Re-introduce FastByteArrayInputStream (and Output equivalent)

    XMLWordPrintableJSON

    Details

      Description

      In https://issues.apache.org/jira/browse/CASSANDRA-37 FastByteArrayInputStream and FastByteArrayOutputStream were removed due to being code copied from the JDK and then subsequently modified. The JDK license is incompatible with Apache 2 license so the code had to go.

      I have since had a look at the performance of the JDK ByteArrayInputStream and a FastByteArrayInputStream (i.e. one with synchronized methods made un-synchronized) and seen the difference is significant.

      After a warmup-period of >10000 loops I get the following for 10000 loops through a 128000 byte array:

      bais : 3513ms
      fbais: 72ms

      This varies depending on the OS, machine and Java version, but it's always in favour of the FastByteArrayInputStream as you might expect.

      Then, at Jonathan Ellis' suggestion, I tried this using a modified Apache Harmony ByteArrayInputStream - i.e. one whose license is compatible - and the results were the same. A significant boost.

      I will attach a patch with changes for the 0.8.0 tag.

        Attachments

          Activity

            People

            • Assignee:
              keteracel Paul Loy
              Reporter:
              keteracel Paul Loy
              Authors:
              Paul Loy
              Reviewers:
              Brandon Williams
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: