Измерил длительность некоторых операций на Arduino UNO

Тема в разделе "Arduino & Shields", создана пользователем Docn, 17 май 2015.

  1. Docn

    Docn Нерд

    Было любопытно самому, поэтому провел эксперимент. Вот результаты в таблице. Конечно, точность полученных цифр не велика, но ориентироваться по ним вполне можно. Длительность операций на UNO.png
     
  2. Docn

    Docn Нерд

    Какая была методика измерений. Сделал простенький скетч, где в цикле повторял тестируемую операцию. Сначала проверил несколько синтаксических конструкций цикла и самый быстрый из них оказался
    while(k<1302000) {k++}
    Подбирая константу в условии цикла, добивался, чтоб длительность его была 1 сек. Этот коэффициент в столбце "B". В столбце "С" длительность однократного выполнения всего цикла вместе с тестируемой операцией. В столбце "D" только тестируемая операция, то есть, за вычетом пустого цикла.
    Вот фрагмент скетча для измерения оператора if:
    void loop()
    {
    unsigned long currentMillis = millis();
    int t;
    while (k < 1230000) {
    if(k<1999888) {k++;}
    }
    i++;
    k = 0;
    if(currentMillis >= timer) {
    Serial.print(i, DEC);
    Serial.print(" ");
    Serial.println(currentMillis, DEC);
    timer = currentMillis +interval;
    k = 0;
    }
    }
     
    iglooshtosser и Tomasina нравится это.