Performance Benchmarks
GnuplotEx is designed for high performance with large datasets and parallel rendering.
Large Dataset Performance
Binary mode significantly outperforms text mode for large datasets.

Recommendation: Use binary: true for datasets larger than 50K points.
# Large dataset with binary mode
data = for i <- 1..1_000_000, do: [i, :math.sin(i / 1000)]
GnuplotEx.scatter(data, binary: true)
|> GnuplotEx.title("1M Points")
|> GnuplotEx.to_png("/tmp/large.png")Parallel Rendering
Render multiple plots concurrently with render_many/3 for significant speedups.

# Render 50 plots in parallel
plots = for i <- 1..50 do
data = for x <- 1..1000, do: [x, :math.sin(x / 100 + i)]
GnuplotEx.line(data, label: "Series #{i}")
end
# Sequential
results = Enum.map(plots, &GnuplotEx.render(&1, :svg))
# Parallel (much faster)
results = GnuplotEx.render_many(plots, :svg)
# Control concurrency
results = GnuplotEx.render_many(plots, :svg, max_concurrency: 4)Async Rendering
Use render_async/3 for non-blocking renders in concurrent applications.
# Start render without blocking
task = GnuplotEx.render_async(plot, :svg)
# Do other work...
Process.sleep(100)
# Get result when needed
{:ok, svg} = Task.await(task)Running Benchmarks
Run benchmarks on your system:
mix bench # Run all benchmarks
mix bench --large # Large dataset benchmark only
mix bench --parallel # Parallel rendering benchmark only