/// <summary> /// TBD /// </summary> /// <param name="len">TBD</param> /// <param name="byteOrder">TBD</param> /// <param name="fill">TBD</param> /// <returns>TBD</returns> protected ByteStringBuilder FillByteBuffer(int len, ByteOrder byteOrder, Action <ByteBuffer> fill) { return(FillArray(len)((array, start) => { var buffer = ByteBuffer.Wrap(array, start, len); buffer.Order(byteOrder); fill(buffer); })); }
/// <summary> /// TBD /// </summary> /// <param name="x">TBD</param> /// <param name="byteOrder">TBD</param> /// <returns>TBD</returns> public ByteStringBuilder PutInt(int x, ByteOrder byteOrder) { return(FillArray(4)((target, offset) => { if (byteOrder == ByteOrder.BigEndian) { target[offset + 0] = (byte)(x >> 24); target[offset + 1] = (byte)(x >> 16); target[offset + 2] = (byte)(x >> 8); target[offset + 3] = (byte)(x >> 0); } else { target[offset + 0] = (byte)(x >> 0); target[offset + 1] = (byte)(x >> 8); target[offset + 2] = (byte)(x >> 16); target[offset + 3] = (byte)(x >> 24); } })); }
/// <summary> /// Метод, сравнивающий обычное заполнение массива и параллельное заполнение /// </summary> static void FillArrayExperiment() { int[] arr = new int[100000000]; Console.WriteLine($"Размер массива: {arr.Length}\n\n"); Stopwatch sw = new(); sw.Start(); arr = FillArray.StandartFill(arr); sw.Stop(); Console.WriteLine("\nПримитивное заполнение массива рандомными элементами: " + sw.ElapsedMilliseconds + " мс.\n\n\n"); sw.Reset(); arr = new int[100000000]; sw.Start(); arr = FillArray.ThreadFill(arr); sw.Stop(); Console.WriteLine("\nЗаполнение массива рандомными элементами с помощью класса задач: " + sw.ElapsedMilliseconds + " мс.\n\n\n"); }
/// <summary> /// Метод, сравнивающий обычную и параллельную быструю сортировку /// </summary> static void QuickSortExperiment() { int[] arr = new int[1000000]; Console.WriteLine($"Размер массива: {arr.Length}\n\n"); Stopwatch sw = new(); arr = FillArray.StandartFill(arr); sw.Start(); arr = SortArray.StandartQuickSort(arr); sw.Stop(); Console.WriteLine("\nОбычная быстрая сортировка: " + sw.ElapsedMilliseconds + " мс.\n\n\n"); sw.Reset(); arr = new int[1000000]; arr = FillArray.StandartFill(arr); sw.Start(); arr = SortArray.ThreadQuickSort(arr); sw.Stop(); Console.WriteLine("\nБыстрая сортировка с использованием параллельности: " + sw.ElapsedMilliseconds + " мс.\n\n\n"); }
/// <summary> /// Метод, сравнивающий обычную и параллельную сортировку массива пузырьком /// </summary> static void BubbleSortExperiment() { int[] arr = new int[100000]; Console.WriteLine($"Размер массива: {arr.Length}\n\n"); Stopwatch sw = new(); arr = FillArray.ThreadFill(arr); sw.Start(); arr = SortArray.StandartBubbleSort(arr); sw.Stop(); Console.WriteLine("\nОбычная сортировка пузырьком: " + sw.ElapsedMilliseconds + " мс.\n\n\n"); sw.Reset(); arr = new int[100000]; arr = FillArray.StandartFill(arr); sw.Start(); arr = SortArray.ThreadBubbleSort(arr); sw.Stop(); Console.WriteLine("\nСортировка пузырьком с использованием класса задач: " + sw.ElapsedMilliseconds + " мс.\n\n\n"); }
/// <summary> /// TBD /// </summary> /// <param name="array">TBD</param> /// <param name="start">TBD</param> /// <param name="len">TBD</param> /// <returns>TBD</returns> public ByteStringBuilder PutBytes(byte[] array, int start, int len) { return(FillArray(len)((target, targetOffset) => Array.Copy(array, start, target, targetOffset, len))); }