Мерзімді оңтайландыру - бұл барлық зұлымдықтың түбірі (немесе кем дегенде көпшілігі
бағдарламалау кезінде). Дональд Кнут.
Мен қаншалықты жылдам/parseInt() екенін білмеймін. Сіз де емессіз. Алдымен уақытты қажет етеді.
ЖАРАЙДЫ МА. Мүмкін бұл шынымен баяу, бірақ сіздің кодыңыздың ең баяу бөлігі болып табылады ма? Немен салыстырғанда баяу?
parseInt
сізге керек пе? parseInt
теріс мәндерді түрлендірмейді және ол уақытты жоғалтады (бірақ нөлге тең ... Duh!).
Егер бүкіл жолды Жол ретінде оқып, құндылықтарды талдайтын болсаңыз, уақытты жоюға қатысты ақаулықтан аулақ боласыз және деректердің дұрыс екенін тексере аласыз.
Бұл эскиз деректеріңізді өңдеу әдісін көрсетеді:
void setup() {
Serial.begin(9600);
while(!Serial);
String lines[] = {
"1,1",
"10,20",
"11,1000",
};
int channel;
int value;
for (int i=0; i < 3; i++) {
sscanf(lines[i].c_str(), "%d,%d", &channel, &value);
Serial.print("channel="); Serial.print(channel);
Serial.print(" value="); Serial.println(value);
}
}
void loop() {
}
Мен sscanf
пайдаланамын, бұл parseInt
қарағанда сенімді емес, бірақ тапсырма орындалды. Мен сенің (немесе менің) оны жақсарта алатынына күмәнданбеймін, және біздің уақытымызға пайдалы нәрсе бар.
Өңдеу:
Мен профильді
sscanf("0001,0001", "%d,%d", &channel, &value);
БҰҰ-ның Arduino UNO-мен бірге, құндылықтардың бірыңғай айналымын өзгерту үшін 147-ке тартылды.