Volver al blog
Artículo destacado

SWE-Perf: Benchmark para Optimización de Rendimiento en Código a Nivel Repositorio

Escrito por

MIIA

Publicado

21 de julio de 2025

Lectura

4 min

SWE-Perf: Benchmark para Optimización de Rendimiento en Código a Nivel Repositorio
A medida que los grandes modelos de lenguaje (LLM) avanzan en tareas relacionadas con la ingeniería de software, como la generación de código o la corrección de errores, la optimización del rendimiento sigue siendo un desafío, especialmente cuando se trabaja a nivel de repositorios completos. Para abordar esta necesidad, un grupo de investigadores de TikTok y otras instituciones ha presentado SWE-Perf, el primer benchmark diseñado específicamente para evaluar la capacidad de los LLM en optimizar el rendimiento del código en repositorios reales. A diferencia de benchmarks previos que se enfocaban en la corrección o en la eficiencia a nivel de funciones individuales, como SWE-Bench o EFFIBench, SWE-Perf captura la complejidad y el contexto profundo que requiere la optimización en proyectos a gran escala. Esto permite estudiar y mejorar de manera cuantitativa cómo los modelos pueden optimizar el rendimiento en situaciones reales y complejas. Los códigos en entornos de producción suelen ser grandes, modulares y con dependencias complejas. Optimizar su rendimiento implica entender la interacción entre múltiples archivos, rutas de ejecución y cuellos de botella computacionales, algo que flaquea en los conjuntos de datos centrados solo en funciones aisladas. Actualmente, los LLM se evalúan principalmente en corrección sintáctica o modificaciones en funciones pequeñas, pero en la práctica, la optimización a nivel de repositorios completos puede generar beneficios mucho más significativos en el sistema. SWE-Perf está pensado exactamente para medir la capacidad de los modelos en este tipo de escenarios. Este benchmark se construyó a partir de más de 100,000 pull requests de repositorios destacados en GitHub, seleccionando finalmente 140 casos representativos en 9 repositorios. Cada ejemplo demuestra mejoras de rendimiento medibles y estables, e incluye tanto el código antes como después de la optimización. Las funciones objetivo se dividen en dos categorías: "oracle", que consideran el nivel de archivo, y "realista", que abordan todo el repositorio. Además, el benchmark incluye pruebas unitarias y entornos Docker para reproducir la ejecución y medir el rendimiento, usando parches realizados por expertos como referencia de calidad. Para garantizar que las mejoras fueran válidas, cada prueba debe pasar antes y después de la optimización y mostrar una mejora estadísticamente significativa en tiempo de ejecución tras 20 repeticiones, usando la prueba Mann-Whitney U con una p < 0.1. Se mide la mejora mínima en rendimiento (δ), lo que ayuda a aislar cambios notables y descartar fluctuaciones aleatorias. El benchmark se evalúa en dos configuraciones principales: en la modalidad "oracle", el modelo recibe solo las funciones objetivo y los archivos correspondientes, enfocándose en optimizaciones localizadas; mientras que en la modalidad "realista", el modelo dispone del repositorio completo y debe identificar por sí mismo las áreas críticas para mejorar el rendimiento, simulando la labor de un ingeniero humano. SWE-Perf usa una evaluación estructurada en tres niveles, que se reportan por separado: si el parche generado puede aplicarse correctamente, si preserva la funcionalidad pasando todas las pruebas, y si logra una mejora medible en el rendimiento. Estos indicadores no se combinan en una sola puntuación para permitir un análisis más detallado sobre el equilibrio entre corrección y optimización. Al probar varios LLMs destacados, tanto en modo oracle como realista, se observó que los modelos están lejos de igualar el desempeño humano. Por ejemplo, el método basado en agentes OpenHands, construido sobre Claude-3.7, obtiene mejores resultados en la modalidad realista, pero aún queda lejos de las optimizaciones desarrolladas por expertos humanos. Entre los aprendizajes clave, las metodologías basadas en agentes demostraron ser más efectivas para optimizaciones complejas y en múltiples pasos, superando enfoques de prompts directos o procesos en pipeline. Sin embargo, a medida que aumenta la cantidad de funciones objetivo, el rendimiento de los LLMs disminuye, mostrando dificultades cuando la escala de optimización crece. También se notó que estos modelos tienen limitada capacidad para mejoras en escenarios con tiempos de ejecución largos, donde los expertos siguen logrando avances. Analizando los parches generados, los LLM tienden a centrarse en modificaciones a bajo nivel, como importar librerías o configurar entornos, mientras que los expertos actúan sobre abstracciones y aspectos semánticos más elevados para potenciar el rendimiento. En resumen, SWE-Perf marca un avance importante para medir y potenciar las habilidades de los grandes modelos de lenguaje en la optimización de código a nivel realista y a gran escala. Revela la brecha significativa que aún existe respecto al trabajo de ingenieros especializados, pero también pone a disposición una base sólida para futuras investigaciones y mejoras en este campo. A medida que estos modelos evolucionen, SWE-Perf podrá orientar el desarrollo hacia herramientas prácticas y efectivas para optimizar software en entornos reales y productivos.