fclose() 函数运行缓慢

2024-01-15

我尝试在 Linux 机器上使用 c++ fopen、fwrite 和 fflush 和 fclose 函数创建大约 4 GB 的文件,但我观察到 fclose() 函数需要很长时间才能关闭文件,大约需要(40-50 秒)。我检查了不同的论坛以找到这种缓慢的原因,按照论坛中的建议更改了代码,使用 setvbuf() 函数使无缓冲 I/O 与 write() 函数一样。但仍然无法解决问题。

        totalBytes = 4294967296 // 4GB file
        buffersize = 2000;    
        while ( size <= totalBytes )
        {
            len = fwrite(buffer, 1, bufferSize, fp);
            if ( len != bufferSize ) {
                cout<<"ERROR (Internal): in calling ACE_OS::fwrite() "<<endl;
                ret = -1;
            }
            size = size + len;
        }
        ...
        ...
        ...
        fflush(fp);
        flcose(fp);

任何解决上述问题的方法都会非常有帮助。

谢谢, 拉梅什


操作系统正在推迟对磁盘的实际写入,并且可能不会在任何写入操作中实际将数据写入磁盘,甚至在fflush().

我查看了手册页fflush()并看到以下注释:

请注意,fflush() 仅刷新由提供的用户空间缓冲区 C 库。确保数据物理存储在磁盘上 内核缓冲区也必须被刷新,例如,使用sync(2)或 同步(2)。

(有一个类似的注释fclose()同样,尽管 Linux 系统上的行为似乎有所不同)

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

fclose() 函数运行缓慢 的相关文章

随机推荐

  • 使用 R microbenchmark 和 system.time 有什么区别?

    我想了解 R 的 microbenchmark 和 system time 之间的区别 他们如何在内部测量函数执行时间 在这两种情况下 运行时间都是使用操作系统工具计算的 因此 如何计算运行时间取决于操作系统 如详细信息部分所述 syste
  • TypeORM保存嵌套对象

    我正在开发一个express 使用TypeORM ReactJS应用程序 问题是我有 3 个通过 OneToMany 关系链接的实体 如下所示 customer 产品 链接到客户 型号 与产品相关 import Product from p
  • 消息:安装 Composer 后在 php.ini 中设置 sys_temp_dir

    我尝试为我的 CodeIgniter 项目安装作曲家 安装成功 但是 当我在命令行上输入时composer version 表明 PHP temp directory C Users petik AppData Local Temp doe
  • Azure Devops 管道 ArchiveFiles 错误:无法找到可执行文件:“zip”

    我正在为 python 包构建创建 Azure DevOps 管道 但任务 ArchiveFiles 2 失败 stage Build jobs job BuildApp pool vmImage ubuntu latest task Ar
  • 如何删除 datagrid wpf 中选定的行?

    我正在使用 WPF datagrid 我需要删除选定的 Row 我的代码是 private void dataGridView1 PreviewKeyDown object sender KeyEventArgs e if e Key Ke
  • 如何在考虑到图块标高的情况下计算等距世界中鼠标下方图块的索引

    我有一个基于图块的等距世界 我可以使用以下计算来计算哪个图块位于特定 鼠标 坐标下方 function isoTo2D pt Point Point var tempPt Point new Point 0 0 tempPt x 2 pt
  • Phonegap - 首次加载时创建 .txt 文件

    我正在创建一个phonegap应用程序 需要在首次加载时创建一个新的 txt文件 之后我需要检查文件是否存在 如果存在则忽略创建 下面是我之后的一般流程 1 onDeviceReady 加载 phoengap 应用程序 2 检查 readm
  • 为什么已安装的软件包不显示我刚刚安装的软件包?

    我已经开始使用 Nuget 了 我的一些项目允许我将库包引用添加到 Nuget 包 但是当我选择 已安装的包 时 我没有看到列出任何包 为什么不 编辑 我知道答案 见下文 我本来打算作为 社区服务 自己回答这个问题 但由于我蹩脚的代表分数
  • 整个页面上的 jQuery 验证

    我有一个用 ASP NET MVC 3 开发的网页 我正在使用 jQuery 验证器来验证我的字段 validator setDefaults errorContainer validationSummary validationNotic
  • numpy 'isin' 性能改进

    我有一个包含 383milj 行的矩阵 我需要根据值列表过滤该矩阵 index to remove 该函数在 1 次迭代期间执行多次 有没有更快的替代方案 def remove from result matrix index to rem
  • Spring-Kafka 的替代方案(Kafka 库/实现)

    我想要 Spring Kafka 的替代方案的建议 我在我的应用程序中使用了集成在 Spring 中的 Kafka 我想探索任何可用的替代库 如果比较分析能在图书馆之间共享就好了 除了普通的 Java API Putsite github
  • 在 Google Cloud Run 上运行 Python gRPC 服务器

    我有一个基本的概念验证 Python gRPC 服务器 当我在本地运行 Docker 容器时 我可以向服务器发出请求并在公开的端口上接收响应 我可以成功地将服务器部署到 Cloud Run 并且我看到该服务在 Cloud Run UI 中运
  • JavaScript - window.onload - 将
    的内容放到新窗口上

    我想写一个javascript 当页面加载时 获取 a 的内容 div 标签和 将该内容放置在弹出页面上 对剧本有什么想法吗 我知道如何导航到该元素 但不知道如何复制内容 div 的内容将是这样的 div div class errorpa
  • 有基于文本的 mysql 用户界面吗?

    我不是指标准的 mysql client CLI 而是类似于午夜指挥官 http www midnight commander org 是文件系统管理 基本 cli 的简单命令历史记录还不错 但在测试更复杂的查询时确实没有什么用处 而且数据
  • 在 C++ 中动态增长数组

    我有一个 CName 对象指针数组 我有以下构造函数 它将数组初始化为大小一 然后 当我添加一个对象时 我将数组增加 1 并添加新对象 它编译得很好 但是当我尝试打印它们时 我只是收到分段错误错误 你能帮我看看我有没有做错什么吗 const
  • 部署keycloak自定义spi部署

    我尝试在我的 keycloak 项目中创建一个自定义 spi 遵循基本的 keycloack 结构 我添加自定义提供程序接口 该接口扩展提供程序 自定义提供程序工厂并为它们实现自定义 spi 如 keycloak 文档所述 并且它们在源代码
  • 使用 C# 读取附加到 HTTP 扩展的 BLOB

    所以我使用第三方服务来编辑我的XML存储在服务器路径上的文件 现在 一旦我完成编辑XML 我将文件保存到本地内存存储 该存储生成附加到 URL 的 BLOB Example blob http localhost 0e06af7a a1a9
  • C++ 中“使用命名空间 ::X”中的前导 :: 是什么意思

    有人可以解释一下以下命名空间用法之间的区别 using namespace layer module and using namespace layer module 是什么原因导致额外的 before layer 如果在以下上下文中使用它
  • 如何将 WordPress 模板与 CodeIgniter 集成

    CodeIgniter 和 WordPress 如何集成 使得外观和感觉 模板 WordPress 博客是否会转移到 CodeIgniter 创建的页面 第一步是将 CodeIgniter 和 WordPress 文件移动到它们自己的目录中
  • fclose() 函数运行缓慢

    我尝试在 Linux 机器上使用 c fopen fwrite 和 fflush 和 fclose 函数创建大约 4 GB 的文件 但我观察到 fclose 函数需要很长时间才能关闭文件 大约需要 40 50 秒 我检查了不同的论坛以找到这