# Why is BitArray so slow?

**URL:** <https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383>\
**Category:** Performance\
**Created:** [August 31, 2018, 7:25pm UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383 "2018-08-31T19:25:05Z")\
**Posts on this page:** 9\
**Page:** 2

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [January 13, 2022, 9:39am UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383/22 "2022-01-13T09:39:44Z")

</div>

That may be, but the claim that BitArrays are generally slow and only to be used when one is memory constrained is inaccurate. BitArrays are very fast for some use cases, and less so for others.

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [January 13, 2022, 2:34pm UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383/23 "2022-01-13T14:34:38Z")

</div>

This would be a fun project — I’d bet you could get a really efficient BitArray\*Array matmul implementation.

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [January 13, 2022, 2:44pm UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383/24 "2022-01-13T14:44:16Z")

</div>

Especially for `BitMatrix` this seems like it should be extremely convenient. since you can pack 8x more data into registers.

---

<div class="post-metadata">

**Author:** ![e3c6](https://avatars.discourse-cdn.com/v4/letter/e/e79b87/32.png) [@e3c6](https://discourse.julialang.org/u/e3c6)\
**Post date:** [January 13, 2022, 11:38pm UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383/25 "2022-01-13T23:38:22Z")

</div>

It is also practically useful. E.g. for one-hot encoding categorical data.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [January 14, 2022, 12:11am UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383/26 "2022-01-14T00:11:15Z")

</div>

[![](https://global.discourse-cdn.com/julialang/original/3X/c/5/c5a2f02c81c376da005f8610ce9cdd4ad47cfdf4.jpeg "JuliaCon 2019 | The Unreasonable Effectiveness of Multiple Dispatch | Stefan Karpinski") ](https://www.youtube.com/watch?v=kc9HwsxE1OY&t=874)

but we have better one-hot…

---

<div class="post-metadata">

**Author:** ![e3c6](https://avatars.discourse-cdn.com/v4/letter/e/e79b87/32.png) [@e3c6](https://discourse.julialang.org/u/e3c6)\
**Post date:** [January 14, 2022, 8:07pm UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383/27 "2022-01-14T20:07:27Z")

</div>

such as?

In any case `BitArray` is nice for purely binary data.

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [January 14, 2022, 8:41pm UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383/28 "2022-01-14T20:41:24Z")

</div>

[https://fluxml.ai/Flux.jl/stable/data/onehot/](https://fluxml.ai/Flux.jl/stable/data/onehot/)

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [January 14, 2022, 10:06pm UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383/29 "2022-01-14T22:06:03Z")

</div>

> [@e3c6](#):
>
> such as?

It is described in the video, if I remember correctly.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [January 14, 2022, 10:43pm UTC](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383/30 "2022-01-14T22:43:46Z")

</div>

it is described in the video at the time stamp I linked to

[Previous page](https://discourse.julialang.org/t/why-is-bitarray-so-slow/14383.md?page=1)
