各种方式输入字符串时间长短比较

Posted loafer-924

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各种方式输入字符串时间长短比较相关的知识,希望对你有一定的参考价值。

测试代码:

#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任何数据规模下都明显快于其他方式,且代码长度最短

                                                (本测试仅供参考)

以上是关于各种方式输入字符串时间长短比较的主要内容,如果未能解决你的问题,请参考以下文章

多层多输入的CNN-LSTM时间序列回归预测(卷积神经网络-长短期记忆网络)——附代码

比较 C# 中的字符串片段并从集合中删除项目

我应该如何使用 Outlook 发送代码片段?

(转)Android EditText限制输入字符的5种实现方式

一个可屏蔽长短链接的网络模块

片段(Java) | 机试题+算法思路+考点+代码解析 2023