【发布时间】:2015-04-24 11:23:20
【问题描述】:
我正在使用带有 raspbian 和内核 3.18 的 Raspberry Pi 模型 B。 我所做的只是通过执行计算的循环。
循环函数如下所示。
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 的频率运行循环。当我去 startx 并打开一个图形外壳,打开一个终端并从那里运行代码时,我得到了数百倍的频率,这似乎更可信。
是什么导致命令shell运行程序这么慢?
【问题讨论】:
-
输出到终端,无论是 Linux 本机终端还是 X Window 终端仿真器,传统上总是很慢。它还取决于其他因素,例如您是否通过网络连接、内部缓冲和终端模式以及许多其他因素。
-
要真正了解输出到底有多慢,我建议您尝试检查没有缓冲的打印,
stdout使用的默认行缓冲,以及完全缓冲。
标签: c++ linux bash shell raspberry-pi