【问题标题】:Best datatype for returning bulk data from a C++ function从 C++ 函数返回大容量数据的最佳数据类型
【发布时间】:2012-08-28 17:07:19
【问题描述】:

我有一个如下所示的 C++ 方法/函数

std::string TestWrapImpl::doProcess(std::string dirPath, std::string cmdLine) {
  std::string TestWrapVar = "";

  // Businesslogic here
  // TestWrapVar = {BulkData From Business Logic} 
  // Sample Bulk Data - "<xml><node01><FNAME>KRISHNA</FNAME></node01>
  //                     <node02><FNAME>KRISHNA</FNAME></node02></xml>"

  return TestWrapVar;
}

返回这 2GB 的 XML 内容的最佳数据类型是什么? (也许字符串数据类型不能容纳 2GB 的字符串。)

【问题讨论】:

  • 什么平台?多少内存?最明显的答案是将其写入文件并返回文件的路径。
  • 目前我在 Linux 和 G++ 中工作。可用内存为 5GB。这里的问题是目前使我的功能成为不同帐户持有人的“每个响应模型的请求”。如果我写入文件,显然我需要维护 accountholder id + uniqueid 作为文件名前缀。其次,我的应用每天有 200 - 1000 次点击。所以 200*2GB = {out of my size in linux box.}
  • 调用者可以在文件写入后将其删除。该文件可以存储在内存中(例如tmpfs)或磁盘上。您可以限制一次允许的此类文件的数量。但我认为您的问题与返回数据的数据类型无关,而与如何管理和表示大型数据集有关。
  • 哦!除了文件写入之外,他们有什么办法吗?
  • 您希望将其全部保存在内存中吗?如果是这样,您可以使用固定大小块的链表,例如每个 32MB。

标签: c++ function types complex-data-types


【解决方案1】:

最好将内容写入文件并将它们映射到内存(我希望你有 64 位环境)。

虽然,XML 是保存如此大量数据的最不合适的格式之一。这是由于增加数据量的系数大,解析速度慢。

【讨论】:

    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2019-11-08
    • 2017-05-27
    • 1970-01-01
    相关资源
    最近更新 更多