[测试]快速读入算法

为什么要进行这个测试呢,在各种正规比赛中,很有可能有超过100MB的数据,这样的话用scanfcin读入救很容易超时,因为这种读入的话效率不高,那么我们来测试一下各种快速读入算法的速度吧。

Test1

Test2

我们要来一组对照试验

Test3

Test4

测试试验使用的读入文件是由10^72^{64}-1组成的文件,文件大小约为200MB209999979字节

测试编号 时间
Test1 3204 MS
Test2 33234 MS
Test3 16281 MS
Test4 2390 MS

试验很清晰的证明了一切行数越多的代码约复杂的代码效率越高忽略Test1
那么我们分析一下为什差别这么大呢。
我分析了一下C++的源代码,就是cstdio的部分,找了找关于scanf的处理,他有关与类型处理的部分会占据一部分的时间。所以Test2的数据不太理想
那么,我们就想办法搞掉这些东东!
用字符串读入代替这些东西!
然后Test4的结果明显比Test3的结果好
Test4还进行了优化,每次读入一整行的数据,大大加快了速度
但是cin怎么才3000MS啊
cin为什么比scanf还快,这里留个坑,希望有人可以解释一下到底为什么,感激不尽。
但是cin用在正常比赛中肯定耗时比较高就对了。所以大家还是好好用scanf或者quickread吧。

发表评论

电子邮件地址不会被公开。 必填项已用*标注