start-sm |
Дата: Понедельник, 04.06.2012, 02:11 | Сообщение # 1 |
Admin
Administrator
Posts: 574
Reputation: 3
Status: Offline |
* Как посчитать время, которое, например, тратит компьютер на выполение программы: Time + АЛГОРИТМ
Пример:
Sub Timer()
Dim starttime As Double '''''''''' Dim endtime As Double '''''''''' Dim xtime As Double '''''''''' Dim x As Long
Application.ScreenUpdating = True ''''''''''''
Range("A1").Value = Time
starttime = Time ''''''''''''
Do Until x > 5000 Cells(2, 1).Select Cells(2, 1).Value = x x = x + 1 Loop
endtime = Time '''''''''''''' xtime = (endtime - starttime) * 86400 ''''''''''''''''
'Application.ScreenUpdating = True
MsgBox ("This operation ran for " & xtime & " seconds") ''''''''''''''
End Sub Пояснение:
1. Открываем подпрограмму с условным названием Timer без параметров (). 2 - 5. Определяем необходимые переменные. 6. С помощью свойства Application.ScreenUpdating = True мы можем выбрать, отображать каждое изменение, происходящее по мере выполнения программы на экране (True) или не отображать, а лишь в конце выполненияпрограммы показать конечный результат (False). См.п.16. Не отображении каждого изменения на экране программа будет работать гораздо (в 5-10 раз) медленнее. 7. Установим для разнообразия значение текущего времени начала выполнения программы Time и запишем это значение в клетку "А1" 8. Запишем это же время в переменную starttime. 9 - 13. В этом месте кода мы должны поместить основную часть программы, ту, скорость выполнения которой мы будем измерять. Например, цикл увеличения переменной "х" от 0 до 5000 и записи каждого этого значения в клетку 2-й строки 1-го столбца. 14. Запишем текущее время завершения вышеописанного цикла в переменную endtime 15. А теперь вычисляем разницу во времени между началом и концом выполнения основной части программы. Зачем умножать на 86400? Для того, чтобы полученное значения было в секундах. Иначе мы получим значение доли суток (0.5 - это 12 часов; 0.1 - это 2,4 часа и т.д.), т.к. наш таймер именно в таком формате считает время. А в сутках как раз именно 86400 секунд. 16. Если в п.6 значение Application.ScreenUpdating = True, чтогда строку №16 можно вообще не писать. Если в п.6. Application.ScreenUpdating = False, тогда необходимо обязательно в строке, идущей за основной частью программы, написать Application.ScreenUpdating = True, иначе результат выполнения программы на экране не отобразится. 17. Теперь создаем выпадающую табличку сообщения такого формата: "This operation ran for " ПЛЮС переменная из п.15 ПЛЮС "seconds" 18. Закрываем подпрограмму. |
|
| |