Skip to content

Instantly share code, notes, and snippets.

@williamzujkowski
Created November 17, 2025 05:07
Show Gist options
  • Select an option

  • Save williamzujkowski/1d827beed3727ae6992e65c782c56776 to your computer and use it in GitHub Desktop.

Select an option

Save williamzujkowski/1d827beed3727ae6992e65c782c56776 to your computer and use it in GitHub Desktop.
PromSketch query performance benchmarking script
#!/bin/bash
# PromSketch benchmark script - compare query performance
PROMETHEUS_URL="http://localhost:9090"
PROMSKETCH_URL="http://localhost:8080"
QUERY='histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))'
echo "=== PromSketch Benchmark ==="
echo "Query: ${QUERY}"
echo ""
# Benchmark direct Prometheus query
echo "Testing Prometheus (baseline)..."
prom_start=$(date +%s%N)
curl -s -G "${PROMETHEUS_URL}/api/v1/query" \
--data-urlencode "query=${QUERY}" > /dev/null
prom_end=$(date +%s%N)
prom_time=$(( (prom_end - prom_start) / 1000000 ))
# Benchmark PromSketch proxy query
echo "Testing PromSketch..."
sketch_start=$(date +%s%N)
curl -s -G "${PROMSKETCH_URL}/api/v1/query" \
--data-urlencode "query=${QUERY}" > /dev/null
sketch_end=$(date +%s%N)
sketch_time=$(( (sketch_end - sketch_start) / 1000000 ))
# Calculate speedup
speedup=$(echo "scale=2; $prom_time / $sketch_time" | bc)
echo ""
echo "=== Results ==="
echo "Prometheus: ${prom_time}ms"
echo "PromSketch: ${sketch_time}ms"
echo "Speedup: ${speedup}x"
echo ""
# Test high-cardinality queries
echo "Testing high-cardinality queries..."
HC_QUERY='sum(rate(container_cpu_usage_seconds_total{namespace="default"}[1h])) by (pod_name)'
prom_hc_start=$(date +%s%N)
curl -s -G "${PROMETHEUS_URL}/api/v1/query" \
--data-urlencode "query=${HC_QUERY}" > /dev/null
prom_hc_end=$(date +%s%N)
prom_hc_time=$(( (prom_hc_end - prom_hc_start) / 1000000 ))
sketch_hc_start=$(date +%s%N)
curl -s -G "${PROMSKETCH_URL}/api/v1/query" \
--data-urlencode "query=${HC_QUERY}" > /dev/null
sketch_hc_end=$(date +%s%N)
sketch_hc_time=$(( (sketch_hc_end - sketch_hc_start) / 1000000 ))
hc_speedup=$(echo "scale=2; $prom_hc_time / $sketch_hc_time" | bc)
echo "High-cardinality Prometheus: ${prom_hc_time}ms"
echo "High-cardinality PromSketch: ${sketch_hc_time}ms"
echo "High-cardinality speedup: ${hc_speedup}x"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment