假设我每毫秒输入一次数据。 5秒后,我想输出最后5秒时间窗口的MAX和MIN值。
比较频繁的整数输入数据的最快方法是什么?我举了一个非常简单的例子。通常使用这样的东西不好吗?有没有一种更快的方法,但是不使用数组进行缓冲?
myMainFuntion() {
int static currentMIN = 30000; // Just initialize to a value that will never be output by getSensorData
int static currentMAX = 0;
int static acquisition_counter = 0;
a = getSensorData() // called each 1 ms
if (a > currentMAX) {
currentMAX = a;
}
if (a < currentMIN) {
currentMIN = a;
}
acquisition_counter++;
if (acquisition_counter == 5000) {
output(MAX);
output(MIN);
}
}
答案 0 :(得分:4)
看起来还可以,除了一些细节外,您的功能没有太多要优化的地方:
void
,而不是省略。a
未定义。currentMIN
和currentMAX
而不是MIN
和MAX
。static
关键字是比较习惯的。这是修改后的代码:
void myMainFuntion(void) {
static int currentMIN = 30000; // Just initialize to a value that will never be output by getSensorData
static int currentMAX = 0;
static int acquisition_counter = 0;
int a;
a = getSensorData() // called every 1 ms
if (a > currentMAX) {
currentMAX = a;
}
if (a < currentMIN) {
currentMIN = a;
}
acquisition_counter++;
if (acquisition_counter == 5000) {
output(currentMAX);
output(currentMIN);
currentMAX = 0;
currentMIN = 30000;
acquisition_counter = 0;
}
}