using System.Collections.Generic;
namespace ConsoleApplication2 {
public static void Main(string[] args) {
var array = CreateArray(1000);
Console.WriteLine(CountExecutions(() => array.CopyKrisStyle(100)) + " <- Funkcja Krisa");
Console.WriteLine(CountExecutions(() => array.CopyExcludingIndex(100)) + " <- Funkcja Xibuka");
Console.WriteLine(CountExecutions(() => array.CopyArrayStyle(100)) + " <- Funkcja Wrzątka");
static int[] CreateArray(int size) {
var list = new List<int>();
for (int i = 0; i < size; ++i)
var array = list.ToArray();
static int CountExecutions(Action function) {
while (DateTime.Now < time.AddSeconds(2)) {
public static class WrzątekExtenszyns {
public static T[] CopyArrayStyle<T>(this T[] array, int indexToRemove) {
var newArray = new T[array.Length - 1];
for (int i = 0, j = 0; i < newArray.Length; i++, j++) {
public static T[] CopyKrisStyle<T>(this T[] array, int indexToRemove) {
return array.Where((v, i) => i != indexToRemove).ToArray();
public static T[] CopyExcludingIndex<T>(this T[] array, int index) {
T[] newArray = new T[array.Length - 1];
Array.Copy(array, 0, newArray, 0, index);
Array.Copy(array, index+ 1, newArray, index, array.Length - index - 1);