- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
任务
我正在做一些性能测试,测量开始时间 (st1) 和结束时间 (st1) 之间耗时。因为我还想显示毫秒,所以我正在使用 API 函数 GetSystemTime:
GetSystemTime st1 ' get start time as system time
GetSystemTime st2 ' get end time as system time
问题
简单的减法是不可能的
st2 - st1
,因为这会导致错误 13 消息。到目前为止,我没有找到任何解决方案,但成功创建了一个简单的解决方法 SystemTimeDiff(st1 As SYSTEMTIME, st2 As SYSTEMTIME)。
问题
我想知道是否存在更简单的方法或 SystemTimeDiff 函数 - 例如与 DateDiff 相当?
代码
Option Explicit
' API Declaration
Private Declare Sub GetSystemTime Lib "kernel32" ( _
lpSystemTime As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
' ================
' Performance Test
' ================
Sub TestSystemTimeDifference()
Dim st1 As SYSTEMTIME
Dim st2 As SYSTEMTIME
GetSystemTime st1 ' Start time
' Do something
' ............
GetSystemTime st2 ' End time
' ================
' Show System time elapsed with milliseconds as work around
' ================
MsgBox SystemTimeDiff(st1, st2), vbInformation, "Systemtime elapsed"
End Sub
' ==============
' My Work around
' ==============
Function SystemTimeDiff(st1 As SYSTEMTIME, st2 As SYSTEMTIME)
Dim msec1 As Integer: Dim msec2 As Integer
Dim timetaken As Date
msec1 = Val(Left(Split(FormatSystemTime(st1) & ".", ".")(1) & "000", 3))
msec2 = Val(Left(Split(FormatSystemTime(st2) & ".", ".")(1) & "000", 3))
If msec2 < msec1 Then msec2 = msec2 + 1000
timetaken = CDate(Split(FormatSystemTime(st2) & ".", ".")(0)) - CDate(Split(FormatSystemTime(st1), ".")(0))
SystemTimeDiff = FormatSystemTime(st1) & vbNewLine & FormatSystemTime(st2) & vbNewLine & _
(Format(Hour(timetaken), "00") & ":" & Format(Minute(timetaken), "00") & ":" & Format(Second(timetaken), "00")) & _
"." & Format(msec2 - msec1, "000")
End Function
Function FormatSystemTime(st As SYSTEMTIME) As String
' Purpose: returns formatted system time with milliseconds
' cf Site: http://www.vbarchiv.net/tipps/tipp_1493-timestamp-inkl-millisekunden.html
With st
FormatSystemTime = Format(.wHour, "00") & ":" & Format(.wMinute, "00") & ":" & _
Format(.wSecond, "00") & "." & Format(.wMilliseconds, "000")
End With
End Function
最佳答案
这个怎么样
Private Declare Function GetTickCount Lib "kernel32" () As Long
Sub timeMe()
Dim start As Long, fini As Long
Dim total As Long
Dim ms As Long, sec As Long, min As Long, hr As Integer
start = GetTickCount()
Dim i, j: For i = 0 To 1000000: j = i ^ 2: Next i
fini = GetTickCount()
total = fini - start
' total = 7545023 ' test value: 2:05:45.023
' total = 460382417 ' test value: 127:53:02.417
ms = total Mod 1000
sec = total \ 1000
min = sec \ 60
hr = min \ 60
sec = sec Mod 60
min = min Mod 60
Debug.Print "runtime "; hr & ":" & Format(min, "00") & ":" & Format(sec, "00") & "." & Format(ms, "000")
End Sub
关于excel - 在 API GetSystemTime 中使用经过的毫秒数进行性能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45513727/
我目前正在研究一种监视工具。它基本上就像任务管理器,我这样做只是因为我想接触 C++ 并学习新东西。 CPU使用部分的核心是GetSystemTimes() .该函数返回指向 3 个值的指针,CPU
我正在尝试打印出秒和毫秒分辨率计时,我正在使用 GetSystemTime()。 这是我的代码: GetSystemTime(&datetime); RETAILMSG(1,(_T("Time Aft
任务 我正在做一些性能测试,测量开始时间 (st1) 和结束时间 (st1) 之间耗时。因为我还想显示毫秒,所以我正在使用 API 函数 GetSystemTime: GetSystemTime st
我在处理段错误时遇到问题。以下健全性检查抛出一个: #include int main() { LPSYSTEMTIME startTime; GetSystemTime(start
我在我的代码中使用 GetLocalTime 来检查特定函数的处理时间。 为此,GetLocalTime 或 GetSystemTime 哪个是最佳选择? 它们是一样的吗?如果我要衡量代码的性能,应该
我正在尝试从计算机获取系统时间,但出于某种原因我无法打印出正确的值。 我的代码: SYSTEMTIME st; GetSystemTime(&st); CString mill
我使用 GetSystemTimeAdjustment 进行了一些测试在 Windows 7 上运行,并得到了一些我无法解释的有趣结果。据我所知,如果系统时间是定期同步的,则此方法应该返回,如果是,则
在 Windows 中有一个函数叫做 GetSystemTimes()返回系统空闲时间、执行内核代码所花费的时间量以及执行用户模式代码所花费的时间量。 Linux 中是否有等效的函数? 最佳答案 原回
因此,winbase.h 中的 GetSystemTimes 声明(在我的机器上,Windows 7 VS2005) #if _WIN32_WINNT >= 0x0501 BOOL WINAPI Ge
我是一名优秀的程序员,十分优秀!