在 C 中将一定数量的字符打印到 stdout 的最快方法

2024-01-29

我必须将一定数量的空格打印到标准输出,但这个数量不是固定的。我正在使用 putchar(),但我不确定这是否很快。在 C 中将一定数量的字符打印到 stdout 的最快方法是什么?另外,我无法使用系统功能。

谢谢你的帮助!


我只想用fwrite。简单的。正确的。简单的。

void put_spaces(int n)
{
    static const char SPACES[32] = "                                ";
    for (; n >= 32; n -= 32)
        fwrite(SPACES, 32, 1, stdout);
    if (n)
        fwrite(SPACES, n, 1, stdout);
}

但请注意,天真的版本也相当快:

void put_spaces(int n)
{
    while (n--)
        putchar(' ');
}

为什么这么快?在大多数系统上,putchar是一个大多数时候直接写入缓冲区的宏。如果您不确定它是否快,正确的答案是介绍您的应用程序,而不是“先优化”。

保持距离malloc(这只是不必要的),puts(这增加了一个'\n'每次你调用它时),并且printf(对于如此简单的任务来说太复杂了)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C 中将一定数量的字符打印到 stdout 的最快方法 的相关文章

随机推荐

  • 如何使用 angular2 和 typescript 在我的视图中获取指定的 htmlelement

    我面临一个问题 我想在 angular2 的视图中获取 htmlelement 这是我的观点 p p
  • 自调用函数 jQuery [重复]

    这个问题在这里已经有答案了 我注意到在某些地方 jQuery 代码被包装在一个自调用函数中 如下所示 为什么要这样做 在什么情况下这是有用的 在什么情况下是不必要的样板 function jQuery 简短的回答 防止变量名冲突 它并不总是
  • TouchesMoved 与 UIButton xcode 4.4 iOS 5.1.1

    我知道这个问题似乎已经被提出和回答 但我无法解决我的问题 我想移动视图中的对象以跟随手指的水平滑动 转到上一页或下一页 为此 我使用 TouchesBegan TouchesMoved 和 TouchesEnded 方法 当触摸开始于视图背
  • 获取通过ajax上传的文件的文件名

    我的问题很简单 我正在用 php 编写一个上传器类 并决定包含对 ajax 上传的支持 使用 Firefox 我检测到发送了标头 X File Name 我正在使用第 3 方 javascript 库进行上传 它将查询字符串中的文件名发送到
  • 如何防止用户调整我网站上的字体大小?

    如何防止用户调整我网站上的字体大小 事实上 出于可访问性的原因 您应该允许调整字体大小
  • NodeJS Crypto 加密到前端 javascript 解密

    我正在寻找 AES256 CBC 解密客户端 在nodeJS中我使用这个函数来加密 exports encrypt function txt cryptkey var cipher crypto createCipher aes 256 c
  • Visual Studio 设计器 - 限制属性网格以显示语言属性的某些特定语言

    我正在 Visual Studio 2013 C 中进行开发 并正在寻找一种方法来使 Windows 窗体的语言选择更容易本地化 在设计器中 您可以在 下选择您想要的语言 Design Language如果您需要新的本地化表单 Visual
  • 指定键盘快捷键来运行程序

    当我在 VBA 编辑器中按 F5 时 我总是想运行我的 Sub Skynet 程序 有没有办法为此过程分配键盘快捷键 根据微软的文档 http office microsoft com en us excel help run a macr
  • 连续触发光线投射测试

    下列的这个答案 https stackoverflow com a 54901850 3405291 我正在进行连续的光线投射 m rayCaster new Qt3DRender QRayCaster m scene gt rootEnt
  • 在 .net MVC 中渲染列表的子列表

    我仍在学习 net MVC 也许没有正确搜索我需要找到解决方案的内容 简而言之 我在数据库中有一个表 其结构如下 ID Category Subcategory FK 所以每个类别可能会出现多次 每个子类别也是如此 这是该类别所独有的 我想
  • 想要在我的按钮单击事件上使用 ajax 多个文件上传

    这是我的 aspx 页面代码
  • 锚链接着陆位置错误

    可能是一个愚蠢的问题 但老实说我无法理解这里出了什么问题 http harrisonfjord com thinkinc http harrisonfjord com thinkinc 我目前正在建设的网站 我想在以下位置创建一个锚链接ht
  • iOS 11 上的编程式 begin Refreshing() 在使用 largeTitles 模式时存在问题

    我们发现 UIKit 中似乎有一个错误 但想在这里发帖看看其他人是否也遇到这个问题或找到解决方案 我们正在尝试使用新的 iOS11 大标题和提升的搜索栏 刷新控件 我们似乎发现了一个问题 导航堆栈的根视图控制器显示了一个小显示问题 问题 A
  • Python 初学者。这段 Python 代码是否尽可能高效?

    这个问题 解决方案让我想到了另一个相关问题here https stackoverflow com questions 4997859 calculate a running total during a for loop python 帮
  • 通过axios访问响应头

    我正在使用 Axios 对 API 进行安全的 POST 调用 这会在 位置 下的响应标头中返回一个 URL 我可以看到 Chrome 的开发工具中填充了 URL 但 Axios 的 JS 响应 如下 不包含以下信息 任何建议都非常收到 发
  • 为什么不能使用 ioremap 然后使用 remap_pfn_range?

    在我的驱动程序中 我试图映射从返回的地址ioremap到用户空间地址 返回什么样的地址ioremap 它与一个有什么不同kmalloc地址 如何映射从返回的地址ioremap 应插入哪个地址remap pfn range 你不需要iorem
  • QItemDelegate 和 QStyledItemDelegate 有什么区别?

    这两个类都为模型中的数据项提供显示和编辑功能 QStyledItemDelegate较新 Qt 文档关于QItemDelegate指出 请注意 QStyledItemDelegate 已经接管了绘制 Qt 的工作 项目视图 我们建议在创建时
  • YQL JSON 脚本未返回?

    我这里有一个脚本 几乎直接复制下来this http net tutsplus com tutorials javascript ajax quick tip cross domain ajax request with yql and j
  • 在 Matlab R2016b 中恢复旧的显示格式

    在 Matlab R2016b 中 显示某些数据类型的变量会显示有关该类型的信息 当通过键入不带最后分号的方式显示变量时会发生这种情况 使用disp功能 比较例如 Matlab R2015b 旧格式 仅显示数据 gt gt x 10 20
  • 在 C 中将一定数量的字符打印到 stdout 的最快方法

    我必须将一定数量的空格打印到标准输出 但这个数量不是固定的 我正在使用 putchar 但我不确定这是否很快 在 C 中将一定数量的字符打印到 stdout 的最快方法是什么 另外 我无法使用系统功能 谢谢你的帮助 我只想用fwrite 简