>
> I don't think we should couple this discussion with the implementation of
> large list, etc since I think those two concepts are independent.

I'm still trying to balance in my mind which is a worse experience for
consumers of the libraries for these types.  Claiming that Java supports
these types but throwing an exception when the Vectors exceed 32-bits or
just say they aren't supported until we have 64-bit support in Java.


> I've asked some others on my team their opinions on the risk here. I think
> we should probably review some our more complex vector interactions and see
> how the jvm's assembly changes with this kind of change. Using
> microbenchmarking is good but I think we also need to see whether we're
> constantly inserting additional instructions or if in most cases, this
> actually doesn't impact instruction count.


Is this something that your team will take on?  Do you need a rebased
version of the PR or is the existing one sufficient?

Thanks,
Micah

On Thu, Aug 22, 2019 at 8:56 PM Jacques Nadeau <jacq...@apache.org> wrote:

> I don't think we should couple this discussion with the implementation of
> large list, etc since I think those two concepts are independent.
>
> I've asked some others on my team their opinions on the risk here. I think
> we should probably review some our more complex vector interactions and see
> how the jvm's assembly changes with this kind of change. Using
> microbenchmarking is good but I think we also need to see whether we're
> constantly inserting additional instructions or if in most cases, this
> actually doesn't impact instruction count.
>
>
>
> On Wed, Aug 21, 2019 at 12:18 PM Micah Kornfield <emkornfi...@gmail.com>
> wrote:
>
>>
>>> With regards to the reference implementation point. It is a good point.
>>> I'm on vacation this week. Unless you're pushing hard on this, can we pick
>>> this up and discuss more next week?
>>
>>
>> Hi Jacques, I hope you had a good rest.  Any more thoughts on the
>> reference implementation aspect of this?
>>
>>
>>> To copy the sentiments from the 0.15.0 release thread, I think it
>>> would be best to decouple this discussion from the release timeline
>>> given how many people we have relying on regular releases coming out.
>>> We can keep continue making major 0.x releases until we're ready to
>>> release 1.0.0.
>>
>>
>> I'm OK with it as long as other stakeholders are. Timed releases are the
>> way to go.  As stated on the release thread [1] we need a better mechanism
>> to avoid this type of issue arising again.  The release thread also had
>> some more discussion on compatibility.
>>
>> Thanks,
>> Micah
>>
>> [1]
>> https://lists.apache.org/thread.html/d70feeceaf2570906ade117030b29887af7c77ca5c4a976e6d555920@%3Cdev.arrow.apache.org%3E
>>
>>
>> On Wed, Aug 14, 2019 at 3:23 PM Wes McKinney <wesmck...@gmail.com> wrote:
>>
>>> On Sun, Aug 11, 2019 at 9:40 PM Micah Kornfield <emkornfi...@gmail.com>
>>> wrote:
>>> >
>>> > Hi Wes and Jacques,
>>> > See responses below.
>>> >
>>> > With regards to the reference implementation point. It is a good
>>> point. I'm
>>> > > on vacation this week. Unless you're pushing hard on this, can we
>>> pick this
>>> > > up and discuss more next week?
>>> >
>>> >
>>> > Sure thing, enjoy your vacation.  I think the only practical
>>> implications
>>> > are it delays choices around implementing LargeList, LargeBinary,
>>> > LargeString in Java, which in turn might push out the 0.15.0 release.
>>> >
>>>
>>> To copy the sentiments from the 0.15.0 release thread, I think it
>>> would be best to decouple this discussion from the release timeline
>>> given how many people we have relying on regular releases coming out.
>>> We can keep continue making major 0.x releases until we're ready to
>>> release 1.0.0.
>>>
>>> > My stance on this is that I don't know how important it is for Java to
>>> > > support vectors over INT32_MAX elements. The use cases enabled by
>>> > > having very large arrays seem to be concentrated in the native code
>>> > > world (e.g. C/C++/Rust) -- that could just be implementation-centrism
>>> > > on my part, though.
>>> >
>>> >
>>> > A data point against this view is Spark has done work to eliminate 2GB
>>> > memory limits on its block sizes [1].  I don't claim to understand the
>>> > implications of this. Bryan might you have any thoughts here?  I'm OK
>>> with
>>> > INT32_MAX, as well, I think we should think about what this means for
>>> > adding Large types to Java and implications for reference
>>> implementations.
>>> >
>>> > Thanks,
>>> > Micah
>>> >
>>> > [1] https://issues.apache.org/jira/browse/SPARK-6235
>>> >
>>> > On Sun, Aug 11, 2019 at 6:31 PM Jacques Nadeau <jacq...@apache.org>
>>> wrote:
>>> >
>>> > > Hey Micah,
>>> > >
>>> > > Appreciate the offer on the compiling. The reality is I'm more
>>> concerned
>>> > > about the unknowns than the compiling issue itself. Any time you've
>>> been
>>> > > tuning for a while, changing something like this could be totally
>>> fine or
>>> > > cause a couple of major issues. For example, we've done a very large
>>> amount
>>> > > of work reducing heap memory footprint of the vectors. Are target is
>>> to
>>> > > actually get it down to 24 bytes per ArrowBuf and 24 bytes heap per
>>> vector
>>> > > (not including arrow bufs).
>>> > >
>>> > > With regards to the reference implementation point. It is a good
>>> point.
>>> > > I'm on vacation this week. Unless you're pushing hard on this, can
>>> we pick
>>> > > this up and discuss more next week?
>>> > >
>>> > > thanks,
>>> > > Jacques
>>> > >
>>> > > On Sat, Aug 10, 2019 at 7:39 PM Micah Kornfield <
>>> emkornfi...@gmail.com>
>>> > > wrote:
>>> > >
>>> > >> Hi Jacques,
>>> > >> I definitely understand these concerns and this change is risky
>>> because it
>>> > >> is so large.  Perhaps, creating a new hierarchy, might be the
>>> cleanest way
>>> > >> of dealing with this.  This could have other benefits like cleaning
>>> up
>>> > >> some
>>> > >> cruft around dictionary encode and "orphaned" method.   Per past
>>> e-mail
>>> > >> threads I agree it is beneficial to have 2 separate reference
>>> > >> implementations that can communicate fully, and my intent here was
>>> to
>>> > >> close
>>> > >> that gap.
>>> > >>
>>> > >> Trying to
>>> > >> > determine the ramifications of these changes would be challenging
>>> and
>>> > >> time
>>> > >> > consuming against all the different ways we interact with the
>>> Arrow Java
>>> > >> > library.
>>> > >>
>>> > >>
>>> > >> Understood.  I took a quick look at Dremio-OSS it seems like it has
>>> a
>>> > >> simple java build system?  If it is helpful, I can try to get a fork
>>> > >> running that at least compiles against this PR.  My plan would be
>>> to cast
>>> > >> any place that was changed to return a long back to an int, so in
>>> essence
>>> > >> the Dremio algorithms would reman 32-bit implementations.
>>> > >>
>>> > >> I don't  have the infrastructure to test this change properly from a
>>> > >> distributed systems perspective, so it would still take some time
>>> from
>>> > >> Dremio to validate for regressions.
>>> > >>
>>> > >> I'm not saying I'm against this but want to make sure we've
>>> > >> > explored all less disruptive options before considering changing
>>> > >> something
>>> > >> > this fundamental (especially when I generally hold the view that
>>> large
>>> > >> cell
>>> > >> > counts against massive contiguous memory is an anti pattern to
>>> scalable
>>> > >> > analytical processing--purely subjective of course).
>>> > >>
>>> > >>
>>> > >> I'm open to other ideas here, as well. I don't think it is out of
>>> the
>>> > >> question to leave the Java implementation as 32-bit, but if we do,
>>> then I
>>> > >> think we should consider a different strategy for reference
>>> > >> implementations.
>>> > >>
>>> > >> Thanks,
>>> > >> Micah
>>> > >>
>>> > >> On Sat, Aug 10, 2019 at 5:09 PM Jacques Nadeau <jacq...@apache.org>
>>> > >> wrote:
>>> > >>
>>> > >> > Hey Micah, I didn't have a particular path in mind. Was thinking
>>> more
>>> > >> along
>>> > >> > the lines of extra methods as opposed to separate classes.
>>> > >> >
>>> > >> > Arrow hasn't historically been a place where we're writing
>>> algorithms in
>>> > >> > Java so the fact that they aren't there doesn't mean they don't
>>> exist.
>>> > >> We
>>> > >> > have a large amount of code that depends on the current behavior
>>> that is
>>> > >> > deployed in hundreds of customer clusters (you can peruse our
>>> dremio
>>> > >> repo
>>> > >> > to see how extensively we leverage Arrow if interested). Trying to
>>> > >> > determine the ramifications of these changes would be challenging
>>> and
>>> > >> time
>>> > >> > consuming against all the different ways we interact with the
>>> Arrow Java
>>> > >> > library. I'm not saying I'm against this but want to make sure
>>> we've
>>> > >> > explored all less disruptive options before considering changing
>>> > >> something
>>> > >> > this fundamental (especially when I generally hold the view that
>>> large
>>> > >> cell
>>> > >> > counts against massive contiguous memory is an anti pattern to
>>> scalable
>>> > >> > analytical processing--purely subjective of course).
>>> > >> >
>>> > >> > On Sat, Aug 10, 2019, 4:17 PM Micah Kornfield <
>>> emkornfi...@gmail.com>
>>> > >> > wrote:
>>> > >> >
>>> > >> > > Hi Jacques,
>>> > >> > > What avenue were you thinking for supporting both paths?   I
>>> didn't
>>> > >> want
>>> > >> > > to pursue a different class hierarchy, because I felt like that
>>> would
>>> > >> > > effectively fork the code base, but that is potentially an
>>> option that
>>> > >> > > would allow us to have a complete reference implementation in
>>> Java
>>> > >> that
>>> > >> > can
>>> > >> > > fully interact with C++, without major changes to this code.
>>> > >> > >
>>> > >> > > For supporting both APIs on the same classes/interfaces, I
>>> think they
>>> > >> > > roughly fall into three categories, changes to input parameters,
>>> > >> changes
>>> > >> > to
>>> > >> > > output parameters and algorithm changes.
>>> > >> > >
>>> > >> > > For inputs, changing from int to long is essentially a no-op
>>> from the
>>> > >> > > compiler perspective.  From the limited micro-benchmarking this
>>> also
>>> > >> > > doesn't seem to have a performance impact.  So we could keep two
>>> > >> versions
>>> > >> > > of the methods that only differ on inputs, but it is not clear
>>> what
>>> > >> the
>>> > >> > > value of that would be.
>>> > >> > >
>>> > >> > > For outputs, we can't support methods "long getLength()" and
>>> "int
>>> > >> > > getLength()" in the same class, so we would be forced into
>>> something
>>> > >> like
>>> > >> > > "long getLength(boolean dummy)" which I think is a less
>>> desirable.
>>> > >> > >
>>> > >> > > For algorithm changes, there did not appear to be too many
>>> places
>>> > >> where
>>> > >> > we
>>> > >> > > actually loop over all elements (it is quite possible I missed
>>> > >> something
>>> > >> > > here), the ones that I did find I was able to mitigate
>>> performance
>>> > >> > > penalties as noted above.  Some of the current implementation
>>> will
>>> > >> get a
>>> > >> > > lot slower for "large arrays", but we can likely fix those
>>> later or in
>>> > >> > this
>>> > >> > > PR with a nested while loop instead of 2 for loops.
>>> > >> > >
>>> > >> > > Thanks,
>>> > >> > > Micah
>>> > >> > >
>>> > >> > >
>>> > >> > > On Saturday, August 10, 2019, Jacques Nadeau <
>>> jacq...@apache.org>
>>> > >> wrote:
>>> > >> > >
>>> > >> > >> This is a pretty massive change to the apis. I wonder how
>>> nasty it
>>> > >> would
>>> > >> > >> be to just support both paths. Have you evaluated how complex
>>> that
>>> > >> > would be?
>>> > >> > >>
>>> > >> > >> On Wed, Aug 7, 2019 at 11:08 PM Micah Kornfield <
>>> > >> emkornfi...@gmail.com>
>>> > >> > >> wrote:
>>> > >> > >>
>>> > >> > >>> After more investigation, it looks like Float8Benchmarks at
>>> least
>>> > >> on my
>>> > >> > >>> machine are within the range of noise.
>>> > >> > >>>
>>> > >> > >>> For BitVectorHelper I pushed a new commit [1], seems to bring
>>> the
>>> > >> > >>> BitVectorHelper benchmarks back inline (and even with some
>>> > >> improvement
>>> > >> > >>> for
>>> > >> > >>> getNullCountBenchmark).
>>> > >> > >>>
>>> > >> > >>> Benchmark                                        Mode  Cnt
>>>  Score
>>> > >> > >>>  Error
>>> > >> > >>>  Units
>>> > >> > >>> BitVectorHelperBenchmarks.allBitsNullBenchmark   avgt    5
>>>  3.821 ±
>>> > >> > >>> 0.031
>>> > >> > >>>  ns/op
>>> > >> > >>> BitVectorHelperBenchmarks.getNullCountBenchmark  avgt    5
>>> 14.884 ±
>>> > >> > >>> 0.141
>>> > >> > >>>  ns/op
>>> > >> > >>>
>>> > >> > >>> I applied the same pattern to other loops that I could find,
>>> and for
>>> > >> > any
>>> > >> > >>> "for (long" loop on the critical path, I broke it up into two
>>> loops.
>>> > >> > the
>>> > >> > >>> first loop does iteration by integer, the second finishes off
>>> for
>>> > >> any
>>> > >> > >>> long
>>> > >> > >>> values.  As a side note it seems like optimization for loops
>>> using
>>> > >> long
>>> > >> > >>> counters at least have a semi-recent open bug for the JVM [2]
>>> > >> > >>>
>>> > >> > >>> Thanks,
>>> > >> > >>> Micah
>>> > >> > >>>
>>> > >> > >>> [1]
>>> > >> > >>>
>>> > >> > >>>
>>> > >> >
>>> > >>
>>> https://github.com/apache/arrow/pull/5020/commits/2ea2c1ae83e3baa7b9a99a6d06276d968df41797
>>> > >> > >>> [2] https://bugs.openjdk.java.net/browse/JDK-8223051
>>> > >> > >>>
>>> > >> > >>> On Wed, Aug 7, 2019 at 8:11 PM Micah Kornfield <
>>> > >> emkornfi...@gmail.com>
>>> > >> > >>> wrote:
>>> > >> > >>>
>>> > >> > >>> > Indeed, the BoundChecking and CheckNullForGet variables can
>>> make a
>>> > >> > big
>>> > >> > >>> > difference.  I didn't initially run the benchmarks with
>>> these
>>> > >> turned
>>> > >> > on
>>> > >> > >>> > (you can see the result from above with Float8Benchmarks).
>>> Here
>>> > >> are
>>> > >> > >>> new
>>> > >> > >>> > numbers including with the flags enabled.  It looks like
>>> using
>>> > >> longs
>>> > >> > >>> might
>>> > >> > >>> > be a little bit slower, I'll see what I can do to mitigate
>>> this.
>>> > >> > >>> >
>>> > >> > >>> > Ravindra also volunteered to try to benchmark the changes
>>> with
>>> > >> > Dremio's
>>> > >> > >>> > code on today's sync call.
>>> > >> > >>> >
>>> > >> > >>> > New
>>> > >> > >>> >
>>> > >> > >>> > Benchmark                                        Mode  Cnt
>>>  Score
>>> > >> > >>>  Error
>>> > >> > >>> > Units
>>> > >> > >>> >
>>> > >> > >>> > BitVectorHelperBenchmarks.allBitsNullBenchmark   avgt    5
>>> > >>  4.176 ±
>>> > >> > >>> 1.292
>>> > >> > >>> > ns/op
>>> > >> > >>> >
>>> > >> > >>> > BitVectorHelperBenchmarks.getNullCountBenchmark  avgt    5
>>> > >> 26.102 ±
>>> > >> > >>> 0.700
>>> > >> > >>> > ns/op
>>> > >> > >>> >
>>> > >> > >>> > Float8Benchmarks.copyFromBenchmark   avgt    5  7.398 ±
>>> 0.084
>>> > >> us/op
>>> > >> > >>> >
>>> > >> > >>> > Float8Benchmarks.readWriteBenchmark  avgt    5  2.711 ±
>>> 0.057
>>> > >> us/op
>>> > >> > >>> >
>>> > >> > >>> >
>>> > >> > >>> >
>>> > >> > >>> > old
>>> > >> > >>> >
>>> > >> > >>> > BitVectorHelperBenchmarks.allBitsNullBenchmark   avgt    5
>>> > >>  3.828 ±
>>> > >> > >>> 0.030
>>> > >> > >>> > ns/op
>>> > >> > >>> >
>>> > >> > >>> > BitVectorHelperBenchmarks.getNullCountBenchmark  avgt    5
>>> > >> 20.611 ±
>>> > >> > >>> 0.188
>>> > >> > >>> > ns/op
>>> > >> > >>> >
>>> > >> > >>> > Float8Benchmarks.copyFromBenchmark   avgt    5  6.597 ±
>>> 0.462
>>> > >> us/op
>>> > >> > >>> >
>>> > >> > >>> > Float8Benchmarks.readWriteBenchmark  avgt    5  2.615 ±
>>> 0.027
>>> > >> us/op
>>> > >> > >>> >
>>> > >> > >>> > On Wed, Aug 7, 2019 at 7:13 PM Fan Liya <
>>> liya.fa...@gmail.com>
>>> > >> > wrote:
>>> > >> > >>> >
>>> > >> > >>> >> Hi Gonzalo,
>>> > >> > >>> >>
>>> > >> > >>> >> Thanks for sharing the performance results.
>>> > >> > >>> >> I am wondering if you have turned off the flag
>>> > >> > >>> >> BoundsChecking#BOUNDS_CHECKING_ENABLED.
>>> > >> > >>> >> If not, the lower throughput should be expected.
>>> > >> > >>> >>
>>> > >> > >>> >> Best,
>>> > >> > >>> >> Liya Fan
>>> > >> > >>> >>
>>> > >> > >>> >> On Wed, Aug 7, 2019 at 10:23 PM Micah Kornfield <
>>> > >> > >>> emkornfi...@gmail.com>
>>> > >> > >>> >> wrote:
>>> > >> > >>> >>
>>> > >> > >>> >>> Hi Gonzalo,
>>> > >> > >>> >>> Thank you for the feedback.  I wasn't aware of the JIT
>>> > >> > >>> implications.   At
>>> > >> > >>> >>> least on the benchmark run they don't seem to have an
>>> impact.
>>> > >> > >>> >>>
>>> > >> > >>> >>> If there are other benchmarks that people have that can
>>> > >> validate if
>>> > >> > >>> this
>>> > >> > >>> >>> change will be problematic I would appreciate trying to
>>> run them
>>> > >> > >>> with the
>>> > >> > >>> >>> PR.  I will try to run the ones for zeroing/popcnt
>>> tonight to
>>> > >> see
>>> > >> > if
>>> > >> > >>> >>> there
>>> > >> > >>> >>> is a change in those.
>>> > >> > >>> >>>
>>> > >> > >>> >>> -Micah
>>> > >> > >>> >>>
>>> > >> > >>> >>>
>>> > >> > >>> >>>
>>> > >> > >>> >>> On Wednesday, August 7, 2019, Gonzalo Ortiz Jaureguizar <
>>> > >> > >>> >>> golthir...@gmail.com> wrote:
>>> > >> > >>> >>>
>>> > >> > >>> >>> > I would recommend to take care with this kind of
>>> changes.
>>> > >> > >>> >>> >
>>> > >> > >>> >>> > I didn't try Arrow in more than one year, but by then
>>> the
>>> > >> > >>> performance
>>> > >> > >>> >>> was
>>> > >> > >>> >>> > quite bad in comparison with plain byte buffer access
>>> > >> > >>> >>> > (see
>>> http://git.net/apache-arrow-development/msg02353.html *)
>>> > >> > and
>>> > >> > >>> >>> > there are several optimizations that the JVM
>>> (specifically,
>>> > >> C2)
>>> > >> > >>> does
>>> > >> > >>> >>> not
>>> > >> > >>> >>> > apply when dealing with int instead of longs. One of the
>>> > >> > >>> >>> > most commons is the loop unrolling and vectorization.
>>> > >> > >>> >>> >
>>> > >> > >>> >>> > * It doesn't seem the best way to reference an old
>>> email on
>>> > >> the
>>> > >> > >>> list,
>>> > >> > >>> >>> but
>>> > >> > >>> >>> > it is the only result shown by Google
>>> > >> > >>> >>> >
>>> > >> > >>> >>> > El mié., 7 ago. 2019 a las 11:42, Fan Liya (<
>>> > >> > liya.fa...@gmail.com
>>> > >> > >>> >)
>>> > >> > >>> >>> > escribió:
>>> > >> > >>> >>> >
>>> > >> > >>> >>> >> Hi Micah,
>>> > >> > >>> >>> >>
>>> > >> > >>> >>> >> Thanks for your effort. The performance result looks
>>> good.
>>> > >> > >>> >>> >>
>>> > >> > >>> >>> >> As you indicated, ArrowBuf will take additional 12
>>> bytes (4
>>> > >> > bytes
>>> > >> > >>> for
>>> > >> > >>> >>> each
>>> > >> > >>> >>> >> of length, write index, and read index).
>>> > >> > >>> >>> >> Similar overheads also exist for vectors like
>>> > >> > >>> BaseFixedWidthVector,
>>> > >> > >>> >>> >> BaseVariableWidthVector, etc.
>>> > >> > >>> >>> >>
>>> > >> > >>> >>> >> IMO, such overheads are small enough to justify the
>>> change.
>>> > >> > >>> >>> >> Let's check if there are other overheads.
>>> > >> > >>> >>> >>
>>> > >> > >>> >>> >> Best,
>>> > >> > >>> >>> >> Liya Fan
>>> > >> > >>> >>> >>
>>> > >> > >>> >>> >> On Wed, Aug 7, 2019 at 3:30 PM Micah Kornfield <
>>> > >> > >>> emkornfi...@gmail.com
>>> > >> > >>> >>> >
>>> > >> > >>> >>> >> wrote:
>>> > >> > >>> >>> >>
>>> > >> > >>> >>> >> > Hi Liya Fan,
>>> > >> > >>> >>> >> > Based on the Float8Benchmark there does not seem to
>>> be any
>>> > >> > >>> >>> meaningful
>>> > >> > >>> >>> >> > performance difference on my machine.  At least for
>>> me, the
>>> > >> > >>> >>> benchmarks
>>> > >> > >>> >>> >> are
>>> > >> > >>> >>> >> > not stable enough to say one is faster than the
>>> other (I've
>>> > >> > >>> pasted
>>> > >> > >>> >>> >> results
>>> > >> > >>> >>> >> > below).  That being said my machine isn't
>>> necessarily the
>>> > >> most
>>> > >> > >>> >>> reliable
>>> > >> > >>> >>> >> for
>>> > >> > >>> >>> >> > benchmarking.
>>> > >> > >>> >>> >> >
>>> > >> > >>> >>> >> > On an intuitive level, this makes sense to me,  for
>>> the
>>> > >> most
>>> > >> > >>> part it
>>> > >> > >>> >>> >> seems
>>> > >> > >>> >>> >> > like the change just moves casting from "int" to
>>> "long"
>>> > >> > further
>>> > >> > >>> up
>>> > >> > >>> >>> the
>>> > >> > >>> >>> >> > stack  for  "PlatformDepdendent" operations.  If
>>> there are
>>> > >> > other
>>> > >> > >>> >>> >> benchmarks
>>> > >> > >>> >>> >> > that you think are worth running let me know.
>>> > >> > >>> >>> >> >
>>> > >> > >>> >>> >> > One downside performance wise I think for his change
>>> is it
>>> > >> > >>> >>> increases the
>>> > >> > >>> >>> >> > size of ArrowBuf objects, which I suppose could
>>> influence
>>> > >> > cache
>>> > >> > >>> >>> misses
>>> > >> > >>> >>> >> at
>>> > >> > >>> >>> >> > some level or increase the size of call-stacks, but
>>> this
>>> > >> > doesn't
>>> > >> > >>> >>> seem to
>>> > >> > >>> >>> >> > show up in the benchmark..
>>> > >> > >>> >>> >> >
>>> > >> > >>> >>> >> > Thanks,
>>> > >> > >>> >>> >> > Micah
>>> > >> > >>> >>> >> >
>>> > >> > >>> >>> >> > Sample benchmark numbers:
>>> > >> > >>> >>> >> >
>>> > >> > >>> >>> >> > [New Code]
>>> > >> > >>> >>> >> > Benchmark                            Mode  Cnt
>>>  Score
>>> > >>  Error
>>> > >> > >>> >>> Units
>>> > >> > >>> >>> >> > Float8Benchmarks.copyFromBenchmark   avgt    5
>>> 15.441 ±
>>> > >> 0.469
>>> > >> > >>> >>> us/op
>>> > >> > >>> >>> >> > Float8Benchmarks.readWriteBenchmark  avgt    5
>>> 14.057 ±
>>> > >> 0.115
>>> > >> > >>> >>> us/op
>>> > >> > >>> >>> >> >
>>> > >> > >>> >>> >> >
>>> > >> > >>> >>> >> > [Old code]
>>> > >> > >>> >>> >> > Benchmark                            Mode  Cnt
>>>  Score
>>> > >>  Error
>>> > >> > >>> >>> Units
>>> > >> > >>> >>> >> > Float8Benchmarks.copyFromBenchmark   avgt    5
>>> 16.248 ±
>>> > >> 1.409
>>> > >> > >>> >>> us/op
>>> > >> > >>> >>> >> > Float8Benchmarks.readWriteBenchmark  avgt    5
>>> 14.150 ±
>>> > >> 0.084
>>> > >> > >>> >>> us/op
>>> > >> > >>> >>> >> >
>>> > >> > >>> >>> >> > On Tue, Aug 6, 2019 at 1:18 AM Fan Liya <
>>> > >> liya.fa...@gmail.com
>>> > >> > >
>>> > >> > >>> >>> wrote:
>>> > >> > >>> >>> >> >
>>> > >> > >>> >>> >> >> Hi Micah,
>>> > >> > >>> >>> >> >>
>>> > >> > >>> >>> >> >> Thanks a lot for doing this.
>>> > >> > >>> >>> >> >>
>>> > >> > >>> >>> >> >> I am a little concerned about if there is any
>>> negative
>>> > >> > >>> performance
>>> > >> > >>> >>> >> impact
>>> > >> > >>> >>> >> >> on the current 32-bit-length based applications.
>>> > >> > >>> >>> >> >> Can we do some performance comparison on our
>>> existing
>>> > >> > >>> benchmarks?
>>> > >> > >>> >>> >> >>
>>> > >> > >>> >>> >> >> Best,
>>> > >> > >>> >>> >> >> Liya Fan
>>> > >> > >>> >>> >> >>
>>> > >> > >>> >>> >> >>
>>> > >> > >>> >>> >> >> On Tue, Aug 6, 2019 at 3:35 PM Micah Kornfield <
>>> > >> > >>> >>> emkornfi...@gmail.com>
>>> > >> > >>> >>> >> >> wrote:
>>> > >> > >>> >>> >> >>
>>> > >> > >>> >>> >> >>> There have been some previous discussions on the
>>> mailing
>>> > >> > about
>>> > >> > >>> >>> >> supporting
>>> > >> > >>> >>> >> >>> 64-bit lengths for  Java ValueVectors (this is
>>> what the
>>> > >> IPC
>>> > >> > >>> >>> >> specification
>>> > >> > >>> >>> >> >>> and C++ support).  I created a PR [1] that changes
>>> all
>>> > >> APIs
>>> > >> > >>> that I
>>> > >> > >>> >>> >> could
>>> > >> > >>> >>> >> >>> find that take an index to take an "long" instead
>>> of an
>>> > >> > "int"
>>> > >> > >>> (and
>>> > >> > >>> >>> >> >>> similarly change "size/rowcount" APIs).
>>> > >> > >>> >>> >> >>>
>>> > >> > >>> >>> >> >>> It is a big change, so I think it is worth
>>> discussing if
>>> > >> it
>>> > >> > is
>>> > >> > >>> >>> >> something
>>> > >> > >>> >>> >> >>> we
>>> > >> > >>> >>> >> >>> still want to move forward with.  It would be nice
>>> to
>>> > >> come
>>> > >> > to
>>> > >> > >>> a
>>> > >> > >>> >>> >> >>> conclusion
>>> > >> > >>> >>> >> >>> quickly, ideally in the next few days, to avoid a
>>> lot of
>>> > >> > merge
>>> > >> > >>> >>> >> conflicts.
>>> > >> > >>> >>> >> >>>
>>> > >> > >>> >>> >> >>> The reason I did this work now is the C++
>>> implementation
>>> > >> has
>>> > >> > >>> added
>>> > >> > >>> >>> >> >>> support
>>> > >> > >>> >>> >> >>> for LargeList, LargeBinary and LargeString arrays
>>> and
>>> > >> based
>>> > >> > on
>>> > >> > >>> >>> prior
>>> > >> > >>> >>> >> >>> discussions we need to have similar support in Java
>>> > >> before
>>> > >> > our
>>> > >> > >>> >>> next
>>> > >> > >>> >>> >> >>> release. Support 64-bit indexes means we can have
>>> full
>>> > >> > >>> >>> compatibility
>>> > >> > >>> >>> >> and
>>> > >> > >>> >>> >> >>> make the most use of the types in Java.
>>> > >> > >>> >>> >> >>>
>>> > >> > >>> >>> >> >>> Look forward to hearing feedback.
>>> > >> > >>> >>> >> >>>
>>> > >> > >>> >>> >> >>> Thanks,
>>> > >> > >>> >>> >> >>> Micah
>>> > >> > >>> >>> >> >>>
>>> > >> > >>> >>> >> >>> [1] https://github.com/apache/arrow/pull/5020
>>> > >> > >>> >>> >> >>>
>>> > >> > >>> >>> >> >>
>>> > >> > >>> >>> >>
>>> > >> > >>> >>> >
>>> > >> > >>> >>>
>>> > >> > >>> >>
>>> > >> > >>>
>>> > >> > >>
>>> > >> >
>>> > >>
>>> > >
>>>
>>

Reply via email to