fwrite 对于大量小写入的效率

2023-12-19

我有一个程序可以使用以下命令保存许多>1GB的大文件fwrite它工作得很好,但不幸的是由于每次调用的数据的性质fwrite只写1-4字节。结果,写入可能需要一个多小时,其中大部分时间似乎是由于系统调用开销(或至少在 fwrite 的库函数中)。我有类似的问题fread.

有谁知道任何现有的/库函数将使用内联函数缓冲这些写入和读取,或者这是您自己的另一个卷?


首先,fwrite()是一个库而不是系统调用。其次,它已经缓冲了数据。

您可能想尝试增加缓冲区的大小。这是通过使用完成的setvbuf() http://pubs.opengroup.org/onlinepubs/009695399/functions/setvbuf.html。在我的系统上,这只会有一点点帮助,但是 YMMV。

If setvbuf()没有帮助,你可以做你自己的缓冲,只调用fwrite()一旦你积累了足够的数据。这涉及更多的工作,但几乎肯定会加快写入速度,因为您自己的缓冲可以变得更加轻量级fwrite()'s.

edit:如果有人告诉你这只是数量fwrite()呼吁这就是问题所在,要求查看证据。更好的是,进行自己的性能测试。在我的计算机上,使用 500,000,000 次两字节写入fwrite()需要11秒。这相当于大约 90MB/s 的吞吐量。

最后但并非最不重要的一点是,我的测试中的 11 秒与您问题中提到的 1 小时之间的巨大差异暗示了您的代码中可能存在其他问题导致性能非常差。

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

fwrite 对于大量小写入的效率 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • AttributeError:“模型”对象没有属性“predict_classes”

    我正在尝试使用预先训练和微调的深度学习模型来预测验证数据 该代码遵循 Keras 博客中 使用很少的数据构建图像分类模型 中提供的示例 这是代码 import numpy as np from keras preprocessing ima
  • 这是因为互斥量没有释放吗?

    我读过这个将我们的单线程服务器变成多线程服务器 https doc rust lang org book ch20 02 multithreaded html 并试图去实施它 我写了这个 use std sync mpsc channel
  • 如何 git tag 所有子模块?

    我想标记我的项目的所有子模块 我尝试这样做 git submodule foreach git tag tagName 但它似乎只是返回而没有错误 什么也没做 编辑 这是我尝试的结果 有人可以告诉我如何正确标记所有子模块吗 注意 这是一个非
  • 以小于帧大小的增量分页 UIScrollView

    我有一个滚动视图 其宽度与屏幕相同 但高度只有约 70 像素 它包含许多 50 x 50 的图标 周围有空间 我希望用户能够从中进行选择 但我总是希望滚动视图以分页方式运行 始终以图标停止在正中心 如果图标是屏幕的宽度 这不会成为问题 因为
  • Python 2 与 3 中的 Eval 范围

    我在 Python 3 中遇到了奇怪的 eval 行为 当在列表理解中调用 eval 时 不会拾取局部变量 def apply op x y z 0 5 0 25 0 75 op x y z return eval o for o in o
  • T-SQL DateDiff - 按“整小时前”分区,而不是“自 00 点后的分钟数”分区

    我有一个带有时间戳的表 我想将该表划分为一个小时的间隔 从现在开始向后几个小时 我无法使用 T SQL 获得所需的结果DATEDIFF http msdn microsoft com en us library ms189794 aspx函
  • 当文本设置为“归因”时,具有自定义字体的 UITextView 不起作用

    我有一个UITextView一些来自 rtf 的文本 直接粘贴到 Xcode 上 上下文仅包含一种自定义字体 Futura Book BT 11 0 如果我将 text attributed 属性设置为 plain 自定义字体从故事板和应用
  • 如何使用 gridview 内的 LinkBut​​ton 删除代码隐藏文件中选定的用户名?

    我的 JobPost mdf 中有一个 UserDetail 表 我有一个 Gridview1 显示 UserDetail 表中的列 该表具有主键 UserName 这个 UserName 最初是使用Membership类函数保存的 现在我
  • 是否有一种独立于平台的方式(Java?)来读取音频 CD 的目录?

    如果可能的话 我想避免使用本机库 当然 对于 Linux Windows 和 Mac OS X 来说 有更好的方法来解决这个问题 抱歉 你运气不好 您将需要 JNI 并且对于不同的平台它会有令人讨厌的不同 基础 Java 库涵盖了几乎通用的
  • Apache POI - 获取整数数字

    Apache POI 单元格值中的数字均以 Double 形式返回 当我做getCell toString 在 Excel 中显示为 123 的数字将转换为 123 0 我如何知道该数字应该显示为整数 我是否需要在 Java 中应用一些魔法
  • 在 folium 地图上绘制数据帧中的纬度经度点 - iPython

    我有一个带有纬度 经度坐标的数据框 latlon 51 249443914705175 0 13878830247011467 51 249443914705175 0 13878830247011467 51 24976823997686
  • 避免在继承的 java 类中进行强制转换

    我有一堂课 class MyClass public MyClass getParent public MyClass getChildren 和一个子类 MySubClass extends MyClass public String g
  • android 动态改变样式

    我已经在 styles xml 中描述了对象的属性 不管对象是什么 我想在 styles xml 中动态更改这些属性 有人知道我该怎么做吗 你可以这样做 活动中 this setTheme R style ThemeRed 在 styles
  • 如何在由knitr制作的HTML5幻灯片中使用“R生成”图作为半透明背景?

    我想在 HTML5 幻灯片的第一页添加一个绘图 我可以以动态的方式实现这一点吗 也就是说 背景图像将由 R 代码生成 而不是插入半透明的 PNG 图像 谢谢 Update 我想要的是 您可以使用块选项dev args为了达成这个 您需要正确
  • 什么是语句的不可达端点(unreachable endpoint)?

    受到这个问题的回答的启发 C 中 switch 的空情况是否与下一个非空情况合并 https stackoverflow com questions 15164318 is empty case of switch in c sharp c
  • 使用 wincertstore 的 Python 请求

    我试图通过 requests 包连接到我公司的内部网页 但由于 python 不使用 Windows 默认的受信任证书 因此连接被拒绝 我发现 wincertstore 可用于获取 Windows 默认证书 但我仍然不确定如何将其与我的请求
  • .NET / WPF 中的通用 JSON 解析器?

    我读过很多关于如何使用 DataContractJsonSerializer 将 JSON 对象反序列化为特定对象的教程 但是 我想将我的对象反序列化为由字符串 数组或字典组成的字典 例如当我说 JsonObject Parse myJSO
  • 在Python中分割字符串

    我有一个像这样的字符串 这是 括号测试 和引号测试 我正在尝试用 Python 编写一些内容 将其按空格分开 同时忽略方括号和引号内的空格 我正在寻找的结果是 this is 括号测试 和引号测试 这是一个适用于您的测试输入的简单解决方案
  • 如何在数据库中存储自定义用户字段

    我正在尝试找到一个教程来指导我基于用户的自定义字段如何工作 就像在调查网站中一样 它们允许用户创建自定义字段并存储它们 更重要的是存储通过这些字段输入的数据 我正在寻找一些描述如何在数据库上完成此操作的内容 我在寻找一种方法时遇到了一些麻烦
  • fwrite 对于大量小写入的效率

    我有一个程序可以使用以下命令保存许多 gt 1GB的大文件fwrite它工作得很好 但不幸的是由于每次调用的数据的性质fwrite只写1 4字节 结果 写入可能需要一个多小时 其中大部分时间似乎是由于系统调用开销 或至少在 fwrite 的