Доброго всем времени суток!
Нужен коллективный разум - стрелкам осциллографа не беспокоится...
Массивы в памяти обрабатываются быстро - но вот с выводом беда
Можно ли, каким либо образом поправить положение - ускорить вывод данных?
Какие есть идеи, предложения, думы, способы и механизмы?
Код |
---|
'1)время обработки данных
T1 = Timer
T3 = T1 - t
' 2)вывод на лист
Application.ScreenUpdating = False 'Выключаем обновление экрана'
MsgBox "Обработка данных - " & T3 & "cek"
With Sheets("Sheet1")
' Set Cel = .Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Cells(6, 1).Resize(K, Col).Value = Result ' Вывод данных из массива на лист
End With
Application.ScreenUpdating = True 'Выключаем обновление экрана'
T2 = Timer - T1
' информация о времени работы.
MsgBox "Вывод на лист - " & T2 & "cek" & Chr(10) , , "Проверка на скорость"
|
Гонял на такой конфигурации - Win7 32, ОЗУ 4гб, Xeon E5450 3.40 ГГЦ, видяха GTS 250 1 Гб шина 256 bit
3 раза запускал алгоритм на 100 000 строк.
Расчетная часть отрабатывает за 3.8 сек - тут проблем нет.
Но вот с выводом данных на экран беда - лопатит больше 20 мин., ни разу не дождался...)))
Причем система загружена на 25 процентов всего, Excel в ОЗУ занимает 800 Мб...
Решил спуститься пониже - на 50 000 строк.
Расчетная часть отработала за 2.01 сек - нормально.
Вывод данных - 1094 сек
Сейчас прогнал на более мощном.
Конфигурация такая -Win10 64, OЗУ 8гб, i5-7500 3.4 ГГЦ, видяха встроенная HD Graphics 630.
на 10 000строк - обработка данных - 0,218 сек, вывод данных - 17 сек
на 50 000 строк - обработка данных - 1 сек., вывод данных на экран - 660 сек.
на 100 000 строк - обработка данных-2,01 сек, вывод данных на экран - 2435 сек.
То есть обработка на высоте, с выводом беда.
Обработка данных - зависимость просто линейная.
Вывод данных - прямо таки настоящая экспонента...)))
Вот как то вот так...)))