Hello, Igniters!

In java8 java.lang.zip.CRC32 methods become intrinsic, moreover new
"update" method, which use ByteBuffer was introduced. Since we moved to
java8, perhaps we really can get performance boost by using standard
java.lang.zip.CRC32 instead of PureJavaCrc32.

About compatibility: looks like PureJavaCrc32 implements the same algorithm
as java.lang.zip.CRC32. These two implementations uses the same polynomial
and the same initial value. The only difference is final xor mask
(0xFFFFFFFF for java.lang.zip.CRC32). So, we can easily convert from
PureJavaCrc32
to standard CRC32 and vice versa, using this expression: crc32 ^= 0xFFFFFFFF


2018-08-14 0:19 GMT+03:00 Eduard Shangareev <eduard.shangar...@gmail.com>:

> Evgeniy,
>
> Could you share benchmark code? And please share what version of JVM
> you have used.
>
> On Mon, Aug 13, 2018 at 10:44 PM Zhenya <arzamas...@mail.ru.invalid>
> wrote:
>
> > I think it would break backward compatibility, as Nikolay mentioned above
> > we would take exception here:
> >
> > [1]
> >
> > https://github.com/apache/ignite/blob/master/modules/
> core/src/main/java/org/apache/ignite/internal/processors/
> cache/persistence/file/FilePageStore.java#L372
> >
> > thats why i question for community thoughts here.
> >
> > > Hi Evgeniy,
> > >
> > > would you like to submit a patch with CRC32 implementation change?
> > >
> > > Sincerely,
> > > Dmitriy Pavlov
> > >
> > > пн, 13 авг. 2018 г. в 22:08, Евгений Станиловский
> > > <arzamas...@mail.ru.invalid>:
> > >
> > >> Hi, igniters, i wrote a simple bench, looks like PureJavaCrc32 has
> > >> performance problems in compatible with zip.CRC32.
> > >>
> > >> Benchmark Mode Cnt Score Error Units
> > >> BenchmarkCRC.Crc32 avgt 5 1088914.540 ± 368851.822 ns/op
> > >> BenchmarkCRC.pureJavaCrc32 avgt 5 6619408.049 ± 3746712.210 ns/op
> > >>
> > >> thoughts?
> >
>

Reply via email to