Возможно ли как-то отмерять время выполнения кода, не учитывая ввод?
Мне нужно сравнить кто быстрее будет работать: 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();
}
}
Сравнивание и расчеты всегда требуют время. Без замеров можно уверенно сказать, что так будет быстрее и понятнее. Сравнивать время при вводе для такой тривиальной функции затруднительно, связанное с работой операционной системы.