- n = 102时
- n = 104时
- n = 105时
#include<cstdio>
#include<ctime>
#include<cstdlib>
#define random(x) (rand()%x)
const int n = ;
int main(){
freopen("testdata.in","w",stdout);
srand((unsigned int)time());
for (int i = ;i < n;i++)
printf("%d\n",random(RAND_MAX)*random(RAND_MAX));
return ;
}
一号选手cin:
#include<iostream>
#include<cstdio>
#include<ctime>
using namespace std;
const int n = ;
int x;
int main(){
freopen("testdata.in","r",stdin);
clock_t st,ed;
st = clock();
for (int i = ;i < n;i++)
cin >> x;
ed = clock();
printf("%fseconds",(double)(ed-st)/CLOCKS_PER_SEC);
return ;
}
二号选手scanf:
#include<iostream>
#include<cstdio>
#include<ctime>
using namespace std;
const int n = ;
int x;
int main(){
freopen("testdata.in","r",stdin);
clock_t st,ed;
st = clock();
for (int i = ;i < n;i++)
scanf("%d",&x);
ed = clock();
printf("%fseconds",(double)(ed-st)/CLOCKS_PER_SEC);
return ;
}
三号选手读入优化:
#include<iostream>
#include<cstdio>
#include<ctime>
using namespace std;
const int n = ;
int x;
inline int read(){
int num = ;
char c;
bool flag = false;
while ((c = getchar()) == ' ' || c == '\n' || c == '\r');
if (c == '-') flag = true;
else
num = c - '';
while (isdigit(c = getchar()))
num = num * + c - '';
return (flag ? - : ) * num;
} int main(){
freopen("testdata.in","r",stdin);
clock_t st,ed;
st = clock();
for (int i = ;i < n;i++)
x = read();
ed = clock();
printf("%fseconds",(double)(ed-st)/CLOCKS_PER_SEC);
return ;
}
进行测试。结果如下表
在n = 100的数据量下,表现的都还不错,那么n = 10^4的时候将会如何呢?
虽然这样的时间差肉眼很难分辨,但是差距还是的确存在的。
读入优化占据上风,拿到了平均0.0128s的成绩。scanf也不甘示弱,平均读入时间有0.0374s。但cin就比较惨了,只有0.0688s。
很清楚的可以看出,三种读入方式已经开始有了差别。
那么在数据量较大的10^5,三种读入方式会有怎样的表现呢?
测试发现
至此,三种读入方式的速度差异已见分晓。
scanf平均0.384s,比读入优化的0.142s慢了一些。
cin这个时候已经gg了,0.7344s,如果是单点时限1s的题,光读入就会耗掉超过七成的时间。如果算法不够优,可能就会TLE。
即使数据量很大,读入优化也是还能保证到能在很短时间内读取大量数据,所以可以说是当之无愧的“黑科技”了。
今天比较晚了,本来还想简要提一下scanf和cin 的原理并且分析速度慢的原因的,看来只能放在以后了。
明天更新夏令营Day4知识点整理。
OI常用读入方式效率测试的更多相关文章
-
【转】Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)
Verilog HDL常用建模方式——<Verilog与数字ASIC设计基础>读书笔记(四) Verilog HDL的基本功能之一是描述可综合的硬件逻辑电路.所谓综合(Synthesis) ...
-
SoapUI 的几种常用参数化方式
今天给大家来梳理下soapui这款工具关于参数化的几种方式以及具体的应用场景 1.properties 官方文档:https://www.soapui.org/docs/functional-test ...
-
5分钟白嫖我常用的免费效率软件/工具!效率300% up!
Mac 免费效率软件/工具推荐 1. uTools(Windows/Mac) 还在为了翻译 English 而专门下载一个翻译软件吗? 还在为了格式某个 json 文本.时间戳转换而打开网址百度地址吗 ...
-
NHibernate Demo 和 效率测试
本文关于NHibernate的Demo和效率测试,希望对大家有用. 1.先去官网下载Nhibernate 2.放入到项目中并建立Helper类 private static ISession _Ses ...
-
jQuery中ajax的4种常用请求方式
jQuery中ajax的4种常用请求方式: 1.$.ajax()返回其创建的 XMLHttpRequest 对象. $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数 ...
-
iOS代码加密常用加密方式
iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...
-
DataGridView 中添加CheckBox和常用处理方式 .
DataGridView 中添加CheckBox和常用处理方式 文章1 转载:http://blog.csdn.net/pinkey1987/article/details/5267934 DataG ...
-
关于 pgsql 数据库json几个函数用法的效率测试
关于 pgsql 数据库json几个函数用法的效率测试 关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次 ...
-
python常用执行方式&;变量&;input函数
linux系统中执行py文件方式: ./a.py 需要执行权限 chmod -R 777(最大权限) 常用执行方式: 1. ./a.py2. python a.py 文件内部头加上 #!/usr/b ...
随机推荐
-
asp.net页面生命周期
Asp.Net页面生命周期 本文转载自:http://www.cnblogs.com/xhwy/archive/2012/05/20/2510178.html 一.什么是Asp.Net页面生命周期 当 ...
-
jsp无法引入外部.JS或者.CSS文件的有关问题 (转)
<!-- *************JSP代码******************--> <%@ page language="java" pageEncodin ...
-
SQL函数学习(十九):CAST()函数和CONVERT()函数
19.CAST()函数和CONVERT()函数 CAST()函数可以将某种数据类型的表达式转化为另一种数据类型 CONVERT()函数 也 可以将指定的数据类型转换为另一种数据类型 19.1 CAST ...
-
html5 drag api详解
可以夸张点说,如果你不会拖拽,你不是一个合格的前端开发. 回想下,以前我们是怎么实现拖拽的,主要有以下几步: 1.目标元素绑定mousedown事件,记录下此时鼠标位置和拖拽元素的位置差,分别是 di ...
-
localhost简介、localhost与 127.0.0.1 及 本机IP 的区别
localhost是什么意思? 相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析. 看来这个入门问题还有人不清楚,其实这两者是有区别的. localhos ...
-
转 JSON与XML转换
这两天处理模块的联调工作,在json与XML转换中出现了一些奇怪的问题,仔细究来,实为对org.json.*包知之太少.晚上baidu.google一下,找出了问题出现的原因.在模块中,使用了两个方法 ...
-
[android] 保存联系人到系统通讯录
对应着读联系人,把数据写进去,市场上的社交类应用经常会有这样的功能 向raw_contacts表中添加一个id 向data表里面添加对应的数据 获取ContentResolver对象,通过getCon ...
-
c++ string去除首尾 空格、\n、\r、\t
string s = " test "; size_t n = s.find_last_not_of(" \r\n\t"); if (n != string:: ...
-
hydra 使用总结
参考链接: http://blog.csdn.net/MarshalEagle/article/details/51896083 https://www.waitalone.cn/hydra-v8-w ...
-
Python交互图表可视化Bokeh:6. 轴线| 浮动| 多图表
绘图表达进阶操作 ① 轴线设置② 浮动设置③ 多图表设置 1. 轴线标签设置 设置字符串 import numpy as np import pandas as pd import matplotli ...