¿Cómo hacer que PostgreSQL sea ridículamente lento?

2025-07-28
¿Cómo hacer que PostgreSQL sea ridículamente lento?

Este artículo desafía al lector a hacer que PostgreSQL sea lo más lento posible ajustando parámetros en el archivo `postgresql.conf`, sin recurrir a la limitación de la CPU o a la eliminación de índices. Mediante una serie de ajustes cuidadosamente seleccionados, que incluyen la reducción drástica del tamaño de la caché de búfer (`shared_buffers`), la activación agresiva de autovacuum y análisis (`autovacuum_*` parameters), y la configuración de WAL (`wal_*` parameters) para una frecuencia máxima de escritura y contención de E/S, el autor logra reducir el TPS de PostgreSQL en más de 7000 veces, de 7000+ a menos de un dígito, incluso por debajo de 0,1 TPS. El autor detalla la justificación y el impacto de cada cambio de parámetro y proporciona una configuración reproducible. Este es un experimento fascinante que muestra el profundo impacto del ajuste de parámetros de la base de datos.

Leer más

Benchmarks en JavaScript: Un lío de compiladores JIT, diferencias de motor y imprecisiones de tiempo

2024-12-24
Benchmarks en JavaScript: Un lío de compiladores JIT, diferencias de motor y imprecisiones de tiempo

Realizar benchmarks de rendimiento en JavaScript es notoriamente difícil. Este artículo destaca los desafíos: las optimizaciones dinámicas del compilador JIT conducen a resultados ampliamente variables entre ejecuciones; diferentes motores JavaScript (como V8 y JavaScriptCore) presentan diferencias significativas de rendimiento, con el mismo código funcionando dramáticamente diferente; y los navegadores reducen intencionalmente la precisión del tiempo para mitigar los ataques de tiempo, lo que dificulta las mediciones precisas. El autor sugiere el uso de herramientas como d8 en el lado del servidor para un mayor control sobre los niveles de optimización y la recolección de basura, mientras que las pruebas del lado del cliente dependen en gran medida de la información limitada proporcionada por las herramientas de desarrollador. En resumen, los benchmarks en JavaScript requieren una consideración cuidadosa de la compilación JIT, las variaciones del motor y la precisión del tiempo, lo que lo hace significativamente más complejo que en otros lenguagens.

Leer más