Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 След.
Bootstrap Ускорение алгоритма, Ускорить алгоритм обработки больших случаных выборок
 
Спасибо за совет, я так и сделал. После 6 часов разборки, понял, что проблема была в сортировке. Проверил около 10 вариантов и самый быстрый оказался этот, скорость выросла с 215 сек до 1 сек. Мне нужно было сортировать числа.
Код
Public Sub QuickSort(vArray As Variant, inLow As Long, inHi As Long)

  Dim pivot   As Variant
  Dim tmpSwap As Variant
  Dim tmpLow  As Long
  Dim tmpHi   As Long

  tmpLow = inLow
  tmpHi = inHi

  pivot = vArray((inLow + inHi) \ 2)

  While (tmpLow <= tmpHi)

     While (vArray(tmpLow) < pivot And tmpLow < inHi)
        tmpLow = tmpLow + 1
     Wend

     While (pivot < vArray(tmpHi) And tmpHi > inLow)
        tmpHi = tmpHi - 1
     Wend

     If (tmpLow <= tmpHi) Then
        tmpSwap = vArray(tmpLow)
        vArray(tmpLow) = vArray(tmpHi)
        vArray(tmpHi) = tmpSwap
        tmpLow = tmpLow + 1
        tmpHi = tmpHi - 1
     End If

  Wend

  If (inLow < tmpHi) Then QuickSort vArray, inLow, tmpHi
  If (tmpLow < inHi) Then QuickSort vArray, tmpLow, inHi

End Sub
Работает очень быстро и хорошо сортирует по возрастанию числа (про остальное не знаю).
И еще что касается скорости: до этого (с пузырьковой сортировкой), считал для 1000 генераций 190 сек. Сейчас для 10000 генераций считает 40 сек.
Изменено: Mirai - 28.01.2017 05:01:15
Bootstrap Ускорение алгоритма, Ускорить алгоритм обработки больших случаных выборок
 
И еще у меня идет перебор по одному, может как то надо заранее создать таблицы случайных чисел, а потом по ним пройтись циклом.
____
Хотя, я так уже делал. Основной тормоз видимо в выдергивании случайных чисел из одного массива и добавление в другой массив с операцией сложения и сортирования.
Изменено: Mirai - 27.01.2017 08:12:22
Bootstrap Ускорение алгоритма, Ускорить алгоритм обработки больших случаных выборок
 
Спасибо, сделал. Тестирую для выборки в 1000 штук. Было 195 сек, стало 187.
Мне вот просто интересно у кого сколько подобные операции занимают времени. 1500 * 10000 операций.
А Randomize правильно использован?
Страницы: 1 2 3 4 5 След.
Наверх