zoukankan      html  css  js  c++  java
  • 各种方式输入字符串时间长短比较

    测试代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e8+50;
    char a[N];
    
    inline void solve1()
    {
    	gets(a);
    }
    
    inline void solve2()
    {
    	scanf("%s",&a);
    }
    
    inline void solve3()
    {
    	char ch;
    	while(ch!='
    ')
    		ch=getchar();
    }
    
    inline void solve4()
    {
    	int i=0;
    	while(~scanf(" %c",&a[i]))
    		i++;
    }
    
    int main()
    {
    	freopen("judge.txt","r",stdin);
    	clock_t s,t;
    	s=clock();
    	//solve1();
    	//solve2();
    	//solve3();
    	solve4();
    	t=clock();
    	cout<<t-s<<endl;
    	return 0;
    }
    

    (大部分测试内容于评测鸭上进行)


    因为cin过于鸡肋,所以并未进行测试

    以下为测试内容:(单位:ms)

    • 数据大小:10000

      (gets字符串):0.040394

      (scanf字符串):0.051836

      (getchar单字符):0.057788

      (scanf单字符):0.533744

    • 数据大小:100000

      (gets字符串):0.149481

      (scanf字符串):0.229154

      (getchar单字符):0.315258

      (scanf单字符):5.139085

    以下数据因常数过大,精度降低至1

    • 数据大小:1000000

      (gets字符串):5

      (scanf字符串):56

      (getchar单字符):48

      (scanf单字符):324

    • 数据大小:100000000

      (gets字符串):661

      (scanf字符串):5215

      (getchar单字符):4426

      (scanf单字符):31578

    总结:

    1.数据规模较小时,循环getchar输入快于scanf直接输入字符串,数据规模较大时,则反之

    2.数据规模较小时,各种方式的时间相差不大

    3.gets任何数据规模下都明显快于其他方式,且代码长度最短

                                                    (本测试仅供参考)
  • 相关阅读:
    Cat- Linux必学的60个命令
    Cmp- Linux必学的60个命令
    Diff- Linux必学的60个命令
    ls- Linux必学的60个命令
    mv- Linux必学的60个命令
    Find- Linux必学的60个命令
    libvirt
    PHP 设计模式 笔记与总结(2)开发 PSR-0 的基础框架
    Java实现 LeetCode 147 对链表进行插入排序
    Java实现 LeetCode 146 LRU缓存机制
  • 原文地址:https://www.cnblogs.com/loafer-924/p/11888283.html
Copyright © 2011-2022 走看看