c - 为什么这个 C/C++ 代码有助于快速输入

标签 c performance

我从这个链接 https://www.codechef.com/viewsolution/1715623 中获取了这段代码 我无法理解 scan() 函数如何帮助进行快速输入

#define g getchar_unlocked()
int scan()//fast input output
{
    int t=0;
    char c;
    c=g;
    while(c<'0' || c>'9')
        c=g;
    while(c>='0' && c<='9')
    {
        t=(t<<3)+(t<<1)+c-'0';
        c=g;
    }//end fast input output
    return(t);
}

最佳答案

用户定义函数 scan() 使用库函数 getchar_unlocked()它比 getchar() 和任何其他标准输入方法更快,因为它不是线程安全的

内部函数循环仅用于考虑数字输入(并使用移位运算符而不是乘法以获得额外的性能增益,必须在使用前进行测试)。

并且这个函数包含可能的 int 溢出。

关于c - 为什么这个 C/C++ 代码有助于快速输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56242242/

相关文章:

c - 在结构中引用结构,在函数中引用结构

c - 二维数组的 sizeof 操作

c - K&R qsort理解

performance - 如何为 GUI 进行 OpenGL 实时文本渲染?

sql - Oracle 加入时查询速度慢,拆分成两个查询时速度快

.net - 性能:XDocument 与 XmlDocument

performance - 在小于 O(n^2) 的时间内在 2D 平面中找到距离最小的给定点集中的两个点

使用三重指针创建矩阵会导致段错误

c - 尝试在 C 中将结构体指针设置为 NULL,但出现 valgrind 问题

Android 白色预览屏幕根据应用程序的启动位置花费不同的时间