using System;
using static System.Console;
using System.Linq;
using System.Collections.Generic;
using System.Diagnostics;
public class Program {
public static void Main() {
Executa(CriarCompras1);
Executa(CriarCompras2);
Executa(CriarCompras3);
Executa(CriarCompras4);
Executa(CriarCompras5);
Executa(CriarCompras6);
}
public static void Teste() => WriteLine("Fazendo algo aqui");
private static void Executa(Func<int, List<Compra>> metodo) {
var stopwatch = new Stopwatch();
stopwatch.Start();
for (var i = 0; i < 1000; i++) metodo(50);
stopwatch.Stop();
WriteLine($"Tempo passado: {stopwatch.ElapsedTicks}");
}
private static List<Compra> CriarCompras1(int numComprasParaGerar) => new List<Compra>(Enumerable.Range(0, numComprasParaGerar).Select(i => new Compra()));
private static List<Compra> CriarCompras2(int numComprasParaGerar) => new int[numComprasParaGerar].Select(i => new Compra()).ToList();
private static List<Compra> CriarCompras3(int numComprasParaGerar) => (from i in new int[numComprasParaGerar] select new Compra()).ToList();
private static List<Compra> CriarCompras4(int numComprasParaGerar) => new List<Compra>(Enumerable.Range(0, numComprasParaGerar).Select(i => new Compra()));
private static List<Compra> CriarCompras5(int numComprasParaGerar) {
var lstCompras = new List<Compra>();
CriarCompras(lstCompras, numComprasParaGerar);
return lstCompras;
}
private static void CriarCompras(List<Compra> lstCompras, int numComprasParaGerar) {
lstCompras.Add(new Compra());
if(lstCompras.Count < numComprasParaGerar) CriarCompras(lstCompras, numComprasParaGerar);
}
private static List<Compra> CriarCompras6(int numComprasParaGerar) {
List<Compra> lstCompras = new List<Compra>(numComprasParaGerar);
for (int i = 0; i < numComprasParaGerar; i++) lstCompras.Add(new Compra());
return lstCompras;
}
}
public class Compra {
public int Item = 0;
}
//https://pt.stackoverflow.com/a/89648/101
dXNpbmcgU3lzdGVtOwp1c2luZyBzdGF0aWMgU3lzdGVtLkNvbnNvbGU7CnVzaW5nIFN5c3RlbS5MaW5xOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkRpYWdub3N0aWNzOwoKcHVibGljIGNsYXNzIFByb2dyYW0gewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKSB7CgkJRXhlY3V0YShDcmlhckNvbXByYXMxKTsKCQlFeGVjdXRhKENyaWFyQ29tcHJhczIpOwoJCUV4ZWN1dGEoQ3JpYXJDb21wcmFzMyk7CgkJRXhlY3V0YShDcmlhckNvbXByYXM0KTsKCQlFeGVjdXRhKENyaWFyQ29tcHJhczUpOwoJCUV4ZWN1dGEoQ3JpYXJDb21wcmFzNik7Cgl9CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgVGVzdGUoKSA9PiBXcml0ZUxpbmUoIkZhemVuZG8gYWxnbyBhcXVpIik7CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgRXhlY3V0YShGdW5jPGludCwgTGlzdDxDb21wcmE+PiBtZXRvZG8pIHsKICAgICAgICB2YXIgc3RvcHdhdGNoID0gbmV3IFN0b3B3YXRjaCgpOwogICAgICAgIHN0b3B3YXRjaC5TdGFydCgpOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKSBtZXRvZG8oNTApOwogICAgICAgIHN0b3B3YXRjaC5TdG9wKCk7CgkJV3JpdGVMaW5lKCQiVGVtcG8gcGFzc2Fkbzoge3N0b3B3YXRjaC5FbGFwc2VkVGlja3N9Iik7Cgl9CgkKCXByaXZhdGUgc3RhdGljIExpc3Q8Q29tcHJhPiBDcmlhckNvbXByYXMxKGludCBudW1Db21wcmFzUGFyYUdlcmFyKSA9PiBuZXcgTGlzdDxDb21wcmE+KEVudW1lcmFibGUuUmFuZ2UoMCwgbnVtQ29tcHJhc1BhcmFHZXJhcikuU2VsZWN0KGkgPT4gbmV3IENvbXByYSgpKSk7CgkKCXByaXZhdGUgc3RhdGljIExpc3Q8Q29tcHJhPiBDcmlhckNvbXByYXMyKGludCBudW1Db21wcmFzUGFyYUdlcmFyKSA9PiBuZXcgaW50W251bUNvbXByYXNQYXJhR2VyYXJdLlNlbGVjdChpID0+IG5ldyBDb21wcmEoKSkuVG9MaXN0KCk7CgoJcHJpdmF0ZSBzdGF0aWMgTGlzdDxDb21wcmE+IENyaWFyQ29tcHJhczMoaW50IG51bUNvbXByYXNQYXJhR2VyYXIpID0+IChmcm9tIGkgaW4gbmV3IGludFtudW1Db21wcmFzUGFyYUdlcmFyXSBzZWxlY3QgbmV3IENvbXByYSgpKS5Ub0xpc3QoKTsKCglwcml2YXRlIHN0YXRpYyBMaXN0PENvbXByYT4gQ3JpYXJDb21wcmFzNChpbnQgbnVtQ29tcHJhc1BhcmFHZXJhcikgPT4gbmV3IExpc3Q8Q29tcHJhPihFbnVtZXJhYmxlLlJhbmdlKDAsIG51bUNvbXByYXNQYXJhR2VyYXIpLlNlbGVjdChpID0+IG5ldyBDb21wcmEoKSkpOwoKCXByaXZhdGUgc3RhdGljIExpc3Q8Q29tcHJhPiBDcmlhckNvbXByYXM1KGludCBudW1Db21wcmFzUGFyYUdlcmFyKSB7CgkJdmFyIGxzdENvbXByYXMgPSBuZXcgTGlzdDxDb21wcmE+KCk7CgkJQ3JpYXJDb21wcmFzKGxzdENvbXByYXMsIG51bUNvbXByYXNQYXJhR2VyYXIpOwoJCXJldHVybiBsc3RDb21wcmFzOwoJfQoJCglwcml2YXRlIHN0YXRpYyB2b2lkIENyaWFyQ29tcHJhcyhMaXN0PENvbXByYT4gbHN0Q29tcHJhcywgaW50IG51bUNvbXByYXNQYXJhR2VyYXIpIHsKCSAgIGxzdENvbXByYXMuQWRkKG5ldyBDb21wcmEoKSk7CgkgICBpZihsc3RDb21wcmFzLkNvdW50IDwgbnVtQ29tcHJhc1BhcmFHZXJhcikgQ3JpYXJDb21wcmFzKGxzdENvbXByYXMsIG51bUNvbXByYXNQYXJhR2VyYXIpOwoJfQoKCXByaXZhdGUgc3RhdGljIExpc3Q8Q29tcHJhPiBDcmlhckNvbXByYXM2KGludCBudW1Db21wcmFzUGFyYUdlcmFyKQl7CgkJTGlzdDxDb21wcmE+IGxzdENvbXByYXMgPSBuZXcgTGlzdDxDb21wcmE+KG51bUNvbXByYXNQYXJhR2VyYXIpOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29tcHJhc1BhcmFHZXJhcjsgaSsrKSBsc3RDb21wcmFzLkFkZChuZXcgQ29tcHJhKCkpOwoJCXJldHVybiBsc3RDb21wcmFzOwoJfQp9CgpwdWJsaWMgY2xhc3MgQ29tcHJhIHsKCXB1YmxpYyBpbnQgSXRlbSA9IDA7Cn0KCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9hLzg5NjQ4LzEwMQ==