程序在图形 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) 输出重定向到某个文件,您的程序会运行得更快。
我使用的是 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) 输出重定向到某个文件,您的程序会运行得更快。