我们如何衡量在Swift中运行函数所用的时间?我试图像这样显示经过的时间:"Elasped time is .05 seconds".看到在Java中,我们可以使用System.nanoTime(),是否有任何等效的方法可用于Swift来实现这一目的?
请看一下示例程序:
func isPrime(var number:Int) ->Bool {
var i = 0;
for i=2; i<number; i++ {
if(number % i == 0 && i != 0) {
return false;
}
}
return true;
}
var number = 5915587277;
if(isPrime(number)) {
println("Prime number");
} else {
println("NOT a prime number");
}
Run Code Online (Sandbox Code Playgroud) 使用C#,如何从System.Timers.Timer对象中获取剩余时间(在经过事件之前)?
换句话说,假设我将计时器间隔设置为6小时,但3小时后,我想知道还剩多少时间.如何让计时器对象显示此时间剩余?
我有一个SQL Server表,其中包含"时间"列.该表是一个日志表,其中包含每条消息的状态消息和时间戳.日志表通过批处理文件插入.有一个ID列可以将行组合在一起.每次批处理文件运行时,它都会初始化ID并写入记录.我需要做的是从ID集中的第一条记录到同一ID集的最后一条记录的经过时间.我从logTable中开始选择Max(Time) - Min(Time),其中id =但无法弄清楚如何正确格式化.我需要它在HH:MM:SS.
自最新的Android更新(第8版)以来,我在尝试读取传感器时意识到了一种非常奇怪的行为.更具体地说,我说的是WiFi和Cell Towers.这是两个例子:
我读取WiFi接入点信息数据,并尝试accessPoint.timestamp使用此代码转换为绝对时间戳:
long timeInMillis = System.currentTimeMillis() + ((accessPoint.timestamp * 1000L -
SystemClock.elapsedRealtimeNanos()) / 1000000L);
Run Code Online (Sandbox Code Playgroud)
但是,当我阅读Cell Towers时,相同的代码无法正常工作nearbyCellTowers = mTelephonyManager.getAllCellInfo();,我必须使用其他代码:
long timeInMillis = System.currentTimeMillis() + ((gsmRecord.getTimeStamp() -
System.nanoTime()) / 1000000L);
Run Code Online (Sandbox Code Playgroud)
如果你没有注意到差异,那就是使用SystemClock.elapsedRealtimeNanos()或者System.nanoTime().
根据Android文档,getTimeStamp()是:
getTimeStamp():自启动以来在nanos中的此单元信息的近似时间
类似于WiFi:
timestamp:上次查看此结果时的以微秒为单位的时间戳(自引导以来).
虽然描述看起来相同(启动后的时间),但值完全不同.正如您所看到的,WiFi时间戳与值相当SystemClock.elapsedRealtimeNanos(),而CellInfo时间戳则与之相当System.nanoTime().
除非我调试并查看结果,否则我永远不会说哪个可以使用哪两个函数.我在这里错过了什么吗?有人可以为我澄清一下吗?这两个函数之间的主要区别是什么以及具有相同描述的两个时间戳具有不同的值的原因是什么?
ElapsedTicks&Elapsed.Ticks是秒表的属性,我认为应该是相同的.如果它们相同,为什么它们应该提供不同的输出?
代码:
Stopwatch spwt = Stopwatch.StartNew();
spwt.Stop();
Console.WriteLine(spwt.ElapsedTicks);
Console.WriteLine(spwt.Elapsed.Ticks);
Run Code Online (Sandbox Code Playgroud)
输出:
6
16
Run Code Online (Sandbox Code Playgroud)
为什么会出现这种差异?不应该一样吗?
我试图在等待5秒后删除文本框内的文本,但是程序不会运行并且会在其他所有内容上休眠.还有一种方法让我只是让我的文本框睡眠,所以我可以在文本被冻结时运行其他代码吗?
from time import time, sleep
from Tkinter import *
def empty_textbox():
textbox.insert(END, 'This is a test')
sleep(5)
textbox.delete("1.0", END)
root = Tk()
frame = Frame(root, width=300, height=100)
textbox = Text(frame)
frame.pack_propagate(0)
frame.pack()
textbox.pack()
empty_textbox()
root.mainloop()
Run Code Online (Sandbox Code Playgroud) 我有一个包含文章的数据库表,每篇文章都有一个提交日期.我需要计算自文章发布到数据库以来的日期和时间,例如:
This article has been published 4 hours ago.
This article has been published 3 days and 4 hours ago.
Run Code Online (Sandbox Code Playgroud)
已经有一些代码可以重复使用了吗?我在谷歌搜索过,但也许我没有使用正确的单词.
任何可以帮助我的线索?
最好的祝福,
我这里有一些很大的性能问题
所以我想在gpu方面进行一些测量。
通过阅读此线程,我围绕绘制函数编写了此代码,包括 gl 错误检查和 swapBuffers()(确实禁用了自动交换)
gl4.glBeginQuery(GL4.GL_TIME_ELAPSED, queryId[0]);
{
draw(gl4);
checkGlError(gl4);
glad.swapBuffers();
}
gl4.glEndQuery(GL4.GL_TIME_ELAPSED);
gl4.glGetQueryObjectiv(queryId[0], GL4.GL_QUERY_RESULT, frameGpuTime, 0);
Run Code Online (Sandbox Code Playgroud)
并且由于 OpenGL 渲染命令应该是异步的(驱动程序可以在一批命令一起发送之前最多缓冲 X 个命令),我的问题主要是:
上面的代码是正确的
我假设在新帧开始时所有先前的 GL 命令(来自前一帧)都已在 gpu 上发送、执行和终止
假设当我获得查询结果时glGetQueryObjectiv,GL_QUERY_RESULT到目前为止所有 GL 命令都已终止,我是对的?那是 OpenGL 会等到结果可用(来自线程)吗?
我在Ubuntu上运行我的代码,我需要在程序中获取有关函数的已用时间.我需要一个非常准确的时间,如纳秒或至少微秒.
我读过chrono.h但它使用系统时间,我更喜欢使用CPU时间.
有没有办法做到这一点,并具有那种粒度(纳秒)?
我有一个非常基本的问题,如果我在谷歌上搜索错误,或者答案是否太简单以至于我没有看到,我不知道。
我正在使用hls.js作为 Javascript 库实现一个 Web 应用程序,我需要一种方法来获取直播流的绝对经过时间,例如,如果用户在 10 分钟后加入直播,我需要一种方法来检测用户的第一个直播时间第二个是流媒体的第 601 秒。
检查流片段,我发现了一些信息,例如 startPTS 和 endPTS,但所有这些信息始终与检索到的块而不是整个流块相关,例如,如果用户在 10 分钟后加入直播并且块持续时间为 2 秒,则第一个我将得到的块将具有 startPTS = 0 和 endPTS = 2,我将得到的第二个块将具有 startPTS = 2 和 endPTS = 4 等等(将值四舍五入到最接近的整数)。
有没有办法从 HLS 直播中提取我需要的绝对经过时间?