questdb/questdb

Optimise performance of var-args functions by adding loop-unrolled variants

Open

#5.680 aberto em 15 de mai. de 2025

Ver no GitHub
 (13 comments) (0 reactions) (0 assignees)Java (972 forks)batch import
Good first issueHelp wantedNew featureSQLhacktoberfestinternal

Métricas do repositório

Stars
 (13.403 stars)
Métricas de merge de PR
 (Mesclagem média 5d 13h) (108 fundiu PRs em 30d)

Description

Is your feature request related to a problem?

There are a variety of MultiArgFunction functions, with variable argument lists. Often, these lists will be short (<5 arguments), but there is no guarantee that the JVM will unroll their loops automatically.

Functions that perform relatively simple operations may benefit from manually unrolled variants that skip loop and conditional checks, and instead have a straight bytecode path for the calculations.

Describe the solution you'd like.

Review var-args functions, particularly those with numeric arguments and basic calculations. If they are a candidate for loop unrolling, implement and benchmark to prove it is faster.

Examples of var-args functions:

  • greatest/least
  • IN
  • CASE
  • coalesce
  • l2price
  • concat

Describe alternatives you've considered.

No response

Full Name:

Nick Woolmer

Affiliation:

QuestDB

Additional context

No response

Guia do colaborador