问题:一个显然额外的代码行加速程序几乎两次.
这很难形成原始问题,它来自边界检查消除算法.所以,只是一些我无法理解的简单测试.
一个显然额外的代码行导致程序加速几乎两次.
有以下来源:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
long i = 0, a = 0, x = 0;
int up = 200000000;
int *values = malloc(sizeof(int)*up);
for (i = 0; i < up ; ++i)
{
values[i]=i % 2;
}
for (i = 0; i < up ; ++i)
{
x = (a & i);
#ifdef FAST
x = 0;
#endif
a += values[x];
}
printf ("a=%ld\n", a);
return 0;
}/*main*/
Run Code Online (Sandbox Code Playgroud)
在此示例中,'a'的值始终为0.行x = 0; 是额外的.
但是,(看 - …
我需要在格林威治标准时间 21:02 运行一个 cronjob。我的 crontab 是:
CRON_TZ=GMT
02 21 * * * thecommand
Run Code Online (Sandbox Code Playgroud)
这在 SuSE 上运行良好,但在 Ubuntu 上不起作用。相反,它在 20:02 运行命令,即时区选择为 GMT+1。为什么?
服务器时区是 MSK(现在是 GMT+3)。
来自 man 8 cron :“守护进程将使用 /etc/timezone 中的时区定义(如果存在)”
$cat /etc/timezone
Europe/Moscow
Run Code Online (Sandbox Code Playgroud)
命令 lsb_release -a 说:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
Run Code Online (Sandbox Code Playgroud)