Пример #1
0
 /// <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);
     }));
 }
Пример #2
0
 /// <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);
         }
     }));
 }
Пример #3
0
        /// <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");
        }
Пример #4
0
        /// <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");
        }
Пример #5
0
        /// <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");
        }
Пример #6
0
 /// <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)));
 }