Возможно ли как-то отмерять время выполнения кода, не учитывая ввод?

Мне нужно сравнить кто быстрее будет работать: cin или

void fastscan(int& number)
{
    //variable to indicate sign of input number
    bool negative = false;
    register int c;

    number = 0;

    // extract current character from buffer
    c = getchar();
 
    if (c == '-')
    {
        // number is negative
        negative = true;

        // extract the next character from the buffer
        c = getchar();
    }

    // Keep on extracting characters if they are integers
    // i.e ASCII Value lies from '0'(48) to '9' (57)
    for (; (c > 47 && c < 58); c = getchar())
        number = number * 10 + c - 48;

    // if scanned input has a negative sign, negate the
    // value of the input number
    if (negative)
        number *= -1;
   
}

Есть ли способ как это сделать правильно?


Ответы (1 шт):

Автор решения: AR Hovsepyan

По моему вы хотите это:

void fastscan(int& number)
{
    if (cin.peek() == '-')
        cin.ignore();
    cin >> number;
    //по хорошему нужна еще и  проверка
    //с последующим приведением в состояние good
    if (cin.fail()) {
       // сообщить об ошибке "это не число"
       cin.clear();
    }
}

Сравнивание и расчеты всегда требуют время. Без замеров можно уверенно сказать, что так будет быстрее и понятнее. Сравнивать время при вводе для такой тривиальной функции затруднительно, связанное с работой операционной системы.

→ Ссылка