Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于c++;高效存储、刷新到文件策略 下面是这样的情况:C++程序是不断地生成数据的规则。数据需要非常快地存储在持久性存储器中,这样就不会妨碍计算时间。事先不可能知道要存储的数据量。 在阅读和发帖之后,我最终遵循了这个天真的策略: 创建一个std::ofs流 打开一个新文件ofs.open(“路径/文件”,std::ofstream::out | std::ofstream::app) 使用操作符添加std::string_C++_Performance_C++11_Stream_Flush - Fatal编程技术网

关于c++;高效存储、刷新到文件策略 下面是这样的情况:C++程序是不断地生成数据的规则。数据需要非常快地存储在持久性存储器中,这样就不会妨碍计算时间。事先不可能知道要存储的数据量。 在阅读和发帖之后,我最终遵循了这个天真的策略: 创建一个std::ofs流 打开一个新文件ofs.open(“路径/文件”,std::ofstream::out | std::ofstream::app) 使用操作符添加std::string

关于c++;高效存储、刷新到文件策略 下面是这样的情况:C++程序是不断地生成数据的规则。数据需要非常快地存储在持久性存储器中,这样就不会妨碍计算时间。事先不可能知道要存储的数据量。 在阅读和发帖之后,我最终遵循了这个天真的策略: 创建一个std::ofs流 打开一个新文件ofs.open(“路径/文件”,std::ofstream::out | std::ofstream::app) 使用操作符添加std::string,c++,performance,c++11,stream,flush,C++,Performance,C++11,Stream,Flush,我可能没有回答您的直接问题,但是如果我退后一步,请原谅我尝试一下 如果我对这个问题的理解是正确的,那么问题在于写入磁盘的时间过长,这会延迟无休止的数据生成 也许您可以在主线程上继续处理的同时,分配一个只用于写入的线程 writer线程可以周期性地唤醒,将迄今为止生成的内容写入磁盘 两个线程之间的通信可以是: 两个缓冲区(一个在生成时处于活动状态,一个处于冻结状态,准备下一批写入磁盘) 或数据队列,由生产者插入,消费者/写入者删除 1.由于数据只能在以后读取,是否可以使用二进制(ios::bina

我可能没有回答您的直接问题,但是如果我退后一步,请原谅我尝试一下

如果我对这个问题的理解是正确的,那么问题在于写入磁盘的时间过长,这会延迟无休止的数据生成

也许您可以在主线程上继续处理的同时,分配一个只用于写入的线程

writer线程可以周期性地唤醒,将迄今为止生成的内容写入磁盘

两个线程之间的通信可以是:

  • 两个缓冲区(一个在生成时处于活动状态,一个处于冻结状态,准备下一批写入磁盘)
  • 或数据队列,由生产者插入,消费者/写入者删除
  • 1.由于数据只能在以后读取,是否可以使用二进制(ios::binary)文件存储?那会更快吗

    因为任何存储设备上的所有数据类型都是二进制的,所以编译器会保存它,所以会或多或少地优化0和1的保存。这取决于。。。很多东西,以及你以后将如何使用/阅读。其中一些已列入清单。 在HD上存储时,代码的性能总是受限于特定HD的速度(这是一个普遍的事实)


    试着给你的问题一个“确定性/框架”,它们太笼统了,不能说是“问题”

    这些问题大部分取决于你在文件中插入了什么…@Claudiordgz我不明白你的意思,为什么我要关心字符串中的字符?你问的是以二进制模式存储的好处,取决于数据和搜索方式。你应该关心尺寸吗?这取决于你如何使用这个文件,你注射的是什么,频率是多少?你还说字符串有缺点。。。数据将被存储为数据,当再次读取时,您必须解析到某个内容,再次解析到字符串取决于您需要数据的目的,可能您需要该列的两倍。结论是,你应该总是关心角色,你必须考虑那些信息确实有价值的人。我同意数据应该根据它的类型和将来的分析来正确的格式化,但是在这种情况下,我不关心格式,它们只是需要以某种方式存储的字符串。如果是这样的话:二进制文件的I/O操作更快,但是您不会看到像存储大量数字那样的巨大改进,因为您的数据是字符串。二进制文件的大小会更小,但二进制文件会使文件对人不可读。根据您的规格,这主要适用于您,二进制存储还有其他优点,但与其他类型的数据(如数字或对象)更相关。有趣的策略。如果生产者插入队列/缓冲区的速度比写入者快,这会是延迟还是内存消耗的增加?是的,这肯定会发生。当不延迟生产者工作(例如等待I/O)至关重要时,可以使用此策略。一个例子是当你是一个接受者。为了让作者能够完成自己的工作,事情应该有一定的尺度。。。或者,您应该提供一种方法,在过载时返回信号以减慢速度。我将在特定情况下执行一些测试,然后尝试改进它们,谢谢!