gpt4 book ai didi

vb.net - 将日期转换为小时/分钟/秒非常慢

转载 作者:行者123 更新时间:2023-12-03 15:37:05 25 4
gpt4 key购买 nike

我需要将日期周期性地转换为其组成部分(小时,分钟,秒)。以下代码可以很好地做到这一点。

Dim time_hour As Integer
Dim time_minute As Integer
Dim time_second As Integer
Dim time_ms As Integer
Dim storedNow As Date

storedNow = Now
time_hour = storedNow.Hour
time_minute = storedNow.Minute
time_second = storedNow.Second
time_ms = storedNow.Millisecond

但是,我发现这是一个性能问题。我已经使用探查器检查了源代码,现在将Now转换为其组件似乎非常缓慢。有没有一种快速的方法可以将当前时间分解成各个组成部分?

最佳答案

看一看Extremoptimization.com。关于此有一些有趣的数学思想。这是一个可能的解决方案草图:

Dim ticks As Long
Dim time_hour As Integer
Dim time_minute As Integer
Dim time_second As Integer
Dim time_ms As Integer
Dim storedNow As Date

storedNow = Now
ticks = storedNow.Ticks
time_ms = CInt((ticks \ 10000) Mod 86400000)
time_hour = CInt(Math.BigMul(time_ms >> 7, 9773437) >> 38)
time_ms -= 3600000 * time_hour
time_minute = CInt(((Math.BigMul(time_ms >> 5, 2290650)) >> 32))
time_ms -= 60000 * time_minute
time_second = ((time_ms >> 3) * 67109) >> 23
time_ms -= 1000 * time_second

但小心点。您的源代码将不可维护。这使您的转换非常可靠,但是我不确定是否有人会在第一个 View 上了解您的操作。奖励是一次转换,比经典方法快约25倍。
但是,您仍然应该考虑您的方法,如果无法避免的话。

关于vb.net - 将日期转换为小时/分钟/秒非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com