我正在使用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
应该很快(附加提示:整数是(编辑:大部分)1或2位数字)?