程序在图形 shell 中比在命令 shell 中运行更快

Programm works faster in graphic shell than in command shell

我使用的是 Raspberry Pi 型号 B,带有 raspbian 和内核 3.18。 我所做的只是通过一个执行计算的循环。

循环函数如下所示。

for(;;) {
   Timer.get_dt();
   ...some print stuff...
}

Timer.get_dt()是:

oldtime_ = time_;
clock_gettime(CLOCK_MONOTONIC, &time_);
Timer.dt = ((static_cast<int64_t>(time_.tv_sec) * 1000000000 + static_cast<int64_t>(time_.tv_nsec)) - (static_cast<int64_t>(oldtime_.tv_sec) * 1000000000 + static_cast<int64_t>(oldtime_.tv_nsec))) / 1000000000.0;

当我 运行 来自命令 shell 的代码时,我在 300-350 Hz 处得到循环 运行ning。当我转到 startx 并打开一个图形 shell,打开一个终端并从那里输入 运行 代码时,我得到了数百倍的频率,这似乎更可信。

什么会导致命令 shell 运行 程序这么慢?

这取决于您是使用命令 shell 到 ssh 还是通过将物理屏幕设备插入您的主板。

一些虚拟控制台有波特率限制;所以内核可能会尝试模仿一些慢终端(包括它的速度)。虚拟控制台(以及任何其他 tty-s)传统上很慢。

您可以使用 stty 了解和修改您的终端设置(在您的虚拟控制台中)。

顺便说一句,如果您将 stdout (and/or stderr) 输出重定向到某个文件,您的程序会运行得更快。