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

            keteracel Paul Loy
            keteracel Paul Loy
            Paul Loy
            Brandon Williams
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: