文件有几百兆,每一行一条数据,包含多个以空格分隔的数字。
用fscanf读入的时候,速度很快,平均不到1us
尝试用read先全部读入内存,然后用sscanf读出。发现sscanf很慢,平均在30ms左右。
看到其他人也有这样的情况:
http://bbs.chinaunix.net/thread-1389512-1-1.html
不解为何。
后来尝试用read先全部读入,然后用atoi逐一去读每个数字(atoi比较好用的地方是能自动处理空白字符),发现速度竟然最快。
因此,有如下总结:
read+atoi 快于 fscanf 快于 read+sscanf