Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

249
Vistas
¿Por qué Bubble Sort en C# es más lento que JavaScript para mí?

Soy nuevo en C# y he estado jugando con él. Implementé un tipo de burbuja en C# esperando que fuera más rápido que JavaScript, ya que es un lenguaje compilado, pero obtengo velocidades mucho más lentas.

Estoy clasificando 100.000 números.

En C# obtengo una velocidad de aproximadamente: 1 minuto y 30 segundos

Código C#:

 using System.Diagnostics; public class Program { public static void Main(string[] args) { List<int> randoms = generateRandoms(0, 1000000, 100000); Console.WriteLine(randoms.Count); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); bubbleSort(randoms); stopWatch.Stop(); TimeSpan timeSpan = stopWatch.Elapsed; Console.WriteLine("Total processing time... {0:00}:{1:00}:{2:00}.{3:000}", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds); Console.Read(); } static List<int> generateRandoms(int min, int max, int amount) { Random rnd = new Random(); List<int> randoms = new List<int>(); for (int i = 0; i < amount; i++) { int r = rnd.Next(min, max+1); randoms.Add(r); } return randoms; } static List<int> bubbleSort(List<int> list) { //Bubble sort for (int i = 0; i < list.Count; i++) { for (int j = 0; j < list.Count - i - 1; j++) { if (list[j] > list[j+1]) { int temp = list[j]; list[j] = list[j+1]; list[j+1] = temp; } } } return list; } static void print(List<int> list) { for (int i = 0; i < list.Count; i++) { Console.WriteLine(list[i]); } } }

En JavaScript obtengo aproximadamente: 30 segundos

Código JavaScript:

 function bubbleSort(array) { for (let i = 0; i < array.length; i++) { for (let j = 0; j < array.length-i-1; j++) { if (array[j] > array[j+1]) { [array[j], array[j+1]] = [array[j+1], array[j]]; } } } } function generateRandoms(min, max, n) { const arr = []; for (let i = 0; i < n; i++) { arr.push(Math.floor(Math.random() * (max-min+1) + min)); } return arr; } const array = generateRandoms(0, 1000000, 100000); console.log(array.length); const start = new Date(); bubbleSort(array); const end = new Date(); console.log(`Performance: ${end - start}ms`);

Supuse que tenía que ver con la estructura de datos "Lista" en C#, pero después de mirar la documentación, parece que todas las operaciones que estoy usando en la función bubbleSort son O(1)

¿Alguien tiene una idea de por qué las velocidades son mucho peores en C# para mí? Estoy usando .Net v6.0.201. También estoy usando VSCode para ambos programas.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Supuse que tenía que ver con la estructura de datos "Lista" en C#, pero después de mirar la documentación, parece que todas las operaciones que estoy usando en la función bubbleSort son O(1)

O(1) no es necesariamente rápido , es simplemente constante. Cambiar el código C# para usar una matriz duplica aproximadamente su velocidad. No estoy seguro exactamente por qué es eso (List usa arreglos debajo del capó), pero los arreglos IIRC a veces pueden eludir las comprobaciones de límites.

Además, su intercambio de C# está haciendo un poco más de trabajo que su intercambio de JS; puedes reemplazar esto:

 int temp = list[j]; list[j] = list[j+1]; list[j+1] = temp;

con este:

 (list[j], list[j+1]) = (list[j+1], list[j]);

Los dos idiomas están más cerca después de esos cambios, pero JS aún gana; No estoy seguro de por qué.

Actualización: C# es más rápido para mí si recuerdo compilar en modo Release.

over 4 years ago · Santiago Trujillo Denunciar

0

C# es tan rápido, si no un poco más rápido, que JS cuando se construye en modo de lanzamiento . Al menos en mi computadora.

Total processing time... 00:01:00.611 : bandeja de depuración

Total processing time... 00:00:19.586 : bandeja de liberación

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda