我刚刚编写了这个简短的C++程序来估算每秒钟的实际时钟周期数.
#include <iostream>
#include <time.h>
using namespace std;
int main () {
for(int i = 0; i < 10 ; i++) {
int first_clock = clock();
int first_time = time(NULL);
while(time(NULL) <= first_time) {}
int second_time = time(NULL);
int second_clock = clock();
cout << "Actual clocks per second = " << (second_clock - first_clock)/(second_time - first_time) << "\n";
cout << "CLOCKS_PER_SEC = " << CLOCKS_PER_SEC << "\n";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,我得到的输出看起来像这样.
Actual clocks per second = 199139
CLOCKS_PER_SEC = …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个Android应用程序并通过确定系统首次启动时间来解决问题.我的意思是我需要测量设备首次启动时已经过了多少时间.
我知道有关侦听ACTION_BOOT_COMPLETED的解决方案并在SharedPreferences中保存任何内容,但我需要另一个解决方案,因为这个解决方案在某些情况下不起作用.也许有任何系统属性?
用例(摘自讨论)
System.currentMillis()
解决这个问题的银弹将是一个时间戳,它计算自首次启动(出厂重置后)后的秒数.就像SystemClock.elapsedRealtime()
每次启动后没有重置一样.不幸的是,到目前为止的答案告诉我们,这个银弹不存在.
但是,许多答案显示了如何解决这个问题的各种选择.OneWorld123评论了每个答案,如何满足他的需求.
我注意到如果我setTimeout
将来设置为1分钟,然后将系统时间更改为过去的5分钟,则该setTimeout
功能将在6分钟内触发.
我这样做是因为我想看看在夏令时改变系统时钟时会发生什么.
我的JavaScript网页使用一个setTimeout
功能每5秒自动刷新页面,如果发生夏令时,页面信息将冻结一小时.有解决方法吗?
编辑:我正在使用Ajax更新页面,我不想刷新整个页面.
我正在使用AWS并且我在EC2服务器上......
[dalvarado@mymachine ~]$ uname -a
Linux mydomain.org 3.14.33-26.47.amzn1.x86_64 #1 SMP Wed Feb 11 22:39:25 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
尽管我已经安装并运行了NTPD,但我的时钟已经关闭了一分钟
[dalvarado@mymachine ~]$ sudo service ntpd status
ntpd (pid 22963) is running...
Run Code Online (Sandbox Code Playgroud)
它会出现ntp数据包被阻止或存在其他问题,因为我收到此错误...
[dalvarado@mymachine ~]$ sudo ntpdate pool.ntp.org
2 Apr 16:43:50 ntpdate[23748]: no server suitable for synchronization found
Run Code Online (Sandbox Code Playgroud)
有没有人知道AWS是否有另一台服务器我应该联系NTP信息,或者我还需要其他其他配置吗?
谢谢, - 戴夫
编辑:包括评论的输出...
[dalvarado@mymachine ~]$ sudo ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
173.44.32.10 .INIT. 16 u - 1024 0 0.000 0.000 0.000 …
Run Code Online (Sandbox Code Playgroud) 我需要以编程方式从Android设置日期/时间,但我没有成功!我有以上这三个来源:
源代码1
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm.setTime(1330082817000);
Run Code Online (Sandbox Code Playgroud)
AndroidManifest:
<uses-permission android:name="android.permission.SET_TIME" />
<uses-permission android:name="android.permission.SET_TIME_ZONE" />
Run Code Online (Sandbox Code Playgroud)
例外:
Service fatal error : Unable to start activity ComponentInfo{br.com.tdta.service/br.com.tdta.service.Service}: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME.
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.tdta.service/br.com.tdta.service.Service}: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.SecurityException: …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在C++ 11中实现一些跨平台代码.此代码的一部分使用std :: condition_variable实现信号量对象.当我需要在信号量上进行定时等待时,我使用wait_until或wait_for.
我遇到的问题是,似乎基于POSIX的系统上的 condition_variable的标准实现依赖于系统时钟,而不是单调时钟(另请参阅:针对POSIX规范的此问题)
这意味着如果系统时钟在过去的某个时间发生变化,我的条件变量将阻塞的时间比我预期的要长得多.例如,如果我希望我的condition_variable在1秒后超时,如果有人在等待期间将时钟调整回10分钟,则condition_variable会阻塞10分钟+ 1秒.我已经确认这是Ubuntu 14.04 LTS系统上的行为.
我需要依赖这个超时至少有些准确(即,在某些误差范围内它可能是不准确的,但如果系统时钟发生变化仍然需要执行).看起来我需要做的就是编写我自己的condition_variable版本,该版本使用POSIX函数并使用单调时钟实现相同的接口.
这听起来像很多工作 - 而且有点混乱.还有其他解决此问题的方法吗?
我的理解是,部分排序和全排序是两组规则。
偏序具有三个规则:
(1) 如果 a 和 b 是同一进程中的两个事件,并且 a 在 b 之前,则 a->b。
(2) ...
(3) ...
那么什么是全序呢?
为何如此命名?
algorithm synchronization distributed-computing system-clock
我有一些代码试图确定代码块的执行时间.
#include <time.h>
#include <stdio.h>
int main()
{
clock_t start_t, end_t, total_t;
int i;
start_t = clock(); //clock start
printf("Starting of the program, start_t = %ld\n", start_t);
printf("Going to scan a big loop, start_t = %ld\n", start_t);
for(i=0; i< 10000000; i++) //trying to determine execution time of this block
{
}
end_t = clock(); //clock stopped
printf("End of the big loop, end_t = %ld\n", end_t);
total_t = (long int)(end_t - start_t);
printf("Total time taken by CPU: %lu\n", total_t );
return(0); …
Run Code Online (Sandbox Code Playgroud) 这个问题已经回答为Javascript 这里,但window.performance.now()
显然是不提供Node.js的
某些应用需要一个稳定的时钟,即一个随时间单调增加的时钟,不受系统时钟漂移的影响.例如,Java有System.nanoTime()
和C++有std::chrono::steady_clock
.Node.js中有这样的时钟吗?
你如何转换SystemClock.elapsedRealTime()
为可以在textview中显示的人类可读的CharSeq?
system-clock ×10
time ×4
android ×3
clock ×3
c++ ×2
java ×2
javascript ×2
algorithm ×1
amazon-ec2 ×1
c ×1
c++11 ×1
node.js ×1
ntp ×1
settimeout ×1