Daniel Lemire

Results 1863 comments of Daniel Lemire

@huihan365 One can do some profiling using the new microbenchmarks, to identify the functions worth optimizing. > ./build/microbenchmarks/bench --benchmark_filter=SuccessiveIntersectionCardinality ``` 43.72% bench libroaring.so.1.0.1 [.] intersect_skewed_uint16_cardinality 35.35% bench libroaring.so.1.0.1 [.] intersect_vector16_cardinality...

Note that you can disable AVX (and AVX-512) entirely if you want... ``` cmake -B buildnoavx -D ROARING_DISABLE_AVX=ON cmake --build buildnoavx ./buildnoavx/microbenchmarks/bench ```

I have committed a PR that vectorizes array_container_to_uint32_array.

My commit is in the main branch. The difference between a vectorized and a non-vectorized approach is rather obvious: ``` $ ./build/microbenchmarks/bench --benchmark_filter=ToArray ----------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------- ToArray...

It is not the case that the approach you take (two-by-two ORs) is necessarily inferior. More importantly, we don't currently have solid benchmarks for fastunion. That is something that we...

> our simplest traversals are twice as fast for large graphs Fantastic! > it would be great to just find a ready-made one You mean a visualizer for lldb or...

> I've written a few simple ones before but this would definitely be the most complex one. We would be happy to help.

In practice... ``` bitSet.words ``` is an array of 32-bit integers. So it is a simple matter of converting arrays of 32-bit integers to and from base64. It ought to...

> resize(), is there a reason (performance?) to avoid sparse array and fill empty places with 0? Because you want it to be backed by an array. If you want...

> I was using (index&63), do you recommend modulo ? If the index is non-negative, then the result should be the same. It is possible that `index&63` gives faster results...