fork download
  1. using System;
  2. using static System.Console;
  3. using System.Linq;
  4. using System.Collections.Generic;
  5. using System.Diagnostics;
  6.  
  7. public class Program {
  8. public static void Main() {
  9. Executa(CriarCompras1);
  10. Executa(CriarCompras2);
  11. Executa(CriarCompras3);
  12. Executa(CriarCompras4);
  13. Executa(CriarCompras5);
  14. Executa(CriarCompras6);
  15. }
  16. public static void Teste() => WriteLine("Fazendo algo aqui");
  17.  
  18. private static void Executa(Func<int, List<Compra>> metodo) {
  19. var stopwatch = new Stopwatch();
  20. stopwatch.Start();
  21. for (var i = 0; i < 1000; i++) metodo(50);
  22. stopwatch.Stop();
  23. WriteLine($"Tempo passado: {stopwatch.ElapsedTicks}");
  24. }
  25.  
  26. private static List<Compra> CriarCompras1(int numComprasParaGerar) => new List<Compra>(Enumerable.Range(0, numComprasParaGerar).Select(i => new Compra()));
  27.  
  28. private static List<Compra> CriarCompras2(int numComprasParaGerar) => new int[numComprasParaGerar].Select(i => new Compra()).ToList();
  29.  
  30. private static List<Compra> CriarCompras3(int numComprasParaGerar) => (from i in new int[numComprasParaGerar] select new Compra()).ToList();
  31.  
  32. private static List<Compra> CriarCompras4(int numComprasParaGerar) => new List<Compra>(Enumerable.Range(0, numComprasParaGerar).Select(i => new Compra()));
  33.  
  34. private static List<Compra> CriarCompras5(int numComprasParaGerar) {
  35. var lstCompras = new List<Compra>();
  36. CriarCompras(lstCompras, numComprasParaGerar);
  37. return lstCompras;
  38. }
  39.  
  40. private static void CriarCompras(List<Compra> lstCompras, int numComprasParaGerar) {
  41. lstCompras.Add(new Compra());
  42. if(lstCompras.Count < numComprasParaGerar) CriarCompras(lstCompras, numComprasParaGerar);
  43. }
  44.  
  45. private static List<Compra> CriarCompras6(int numComprasParaGerar) {
  46. List<Compra> lstCompras = new List<Compra>(numComprasParaGerar);
  47. for (int i = 0; i < numComprasParaGerar; i++) lstCompras.Add(new Compra());
  48. return lstCompras;
  49. }
  50. }
  51.  
  52. public class Compra {
  53. public int Item = 0;
  54. }
  55.  
  56. //https://pt.stackoverflow.com/a/89648/101
Success #stdin #stdout 0.03s 22692KB
stdin
Standard input is empty
stdout
Tempo passado: 71276
Tempo passado: 22273
Tempo passado: 10695
Tempo passado: 25859
Tempo passado: 13716
Tempo passado: 8771