Быстрее, чем scanf?

Я выполнял массовый анализ положительных целых чисел с помощью scanf ("% d", & someint ) . Поскольку я хотел проверить, не является ли scanf узким местом, я реализовал наивную целочисленную функцию синтаксического анализа, используя fread , например:

int result;
char c;

while (fread(&c, sizeof c, 1, stdin), c == ' ' || c == '\n')
    ;

result = c - '0';
while (fread(&c, sizeof c, 1, stdin), c >= '0' || c <= '9') {
     result *= 10;
     result += c - '0';
}

return result;

Но, к моему удивлению, производительность этой функции (даже с встраиванием) примерно На 50% хуже.Разве не должна быть возможность улучшить scanf для специализированных случаев? Разве fread не должен быть быстрым (дополнительная подсказка: целые числа ( edit: в основном ) 1 или 2 цифры)?

6
задан Suraj Jain 5 February 2017 в 06:23
поделиться