# Community string benchmark suite

**URL:** <https://discourse.julialang.org/t/community-string-benchmark-suite/120771>\
**Category:** General Usage\
**Created:** [October 1, 2024, 7:42am UTC](https://discourse.julialang.org/t/community-string-benchmark-suite/120771 "2024-10-01T07:42:21Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [October 1, 2024, 8:42am UTC](https://discourse.julialang.org/t/community-string-benchmark-suite/120771/2 "2024-10-01T08:42:49Z")

</div>

I often work with large tables (say in the tens of GB) with many string columns, and used to frequently run into situtations where the GC was stressed to a level that made the whole session completely unresponsive.

I posted an example of how the base `String` compares to `ShortString`s (which I was using at the time, this was before `InlineString`s were a thing) here, have a look to see if that’s useful:

> [@The state of DataFrames.jl H2O benchmark](https://discourse.julialang.org/t/the-state-of-dataframes-jl-h2o-benchmark/43081/24):
>
> It turns out it’s actually quite hard to produce the same magnitude of speed gains I’m seeing in my application, but here’s an example that roughly shows what I mean: using DataFrames, Random string1 = [randstring(4) for \_ ∈ 1:5e4] string2 = [randstring(6)\*string(rand(1:10, 3)) for \_ ∈ 1:16e6] df = DataFrame( col1 = [rand(string1) for \_ ∈ 1:20e6], col2 = shuffle!([string2; [missing for \_ ∈ 1:4e6]]), col3 = shuffle!([string2; [missing for \_ ∈ 1:4e6]]), col4 = shuffle!([string2…

---

_[View the full topic](https://discourse.julialang.org/t/community-string-benchmark-suite/120771)._
