Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

285
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Assistente virtual