- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 STL vector 存储大量(~ 10^6)自定义对象(sizeof() 为其中一个对象提供 368 字节)。我的程序结构要求我经常备份此 vector 的拷贝,因为在特定步骤中所做的更改可能需要在特定条件下展开。大致这看起来像
std::vector<myClass> vecA( largeNumber );
std::vector<myClass> vecB;
do
{
vecB = vecA;
//do lots of stuff to vecA
if ( restoreBackup ) { vecA = vecB; }
} while (someCondition)
做一些分析,复制操作 vecB = vecA
实际上是一个相当大的瓶颈。我真的需要加快这部分的速度。你会建议哪些策略?
备注:
最佳答案
嗯,这不是一件小事,我不认为你可以避免这种复制,如果你真的只需要使用(和一个)std::vector
.
最好的解决方案是使用 Persistant Data Structure .
但是如果您需要存储多个版本的容器,这将非常有用。
如果你只需要以前的版本..
我想到的最简单的事情似乎对您有用,就是仅备份元素,您将进行更改。你可以使用 std::list
(或 std::vector
)与 std::pair< int, myClass >
.所以,first
这对将是元素的索引,您正在更改并且 second
- 备份版本。所以,最后,如果你需要恢复备份,你只需通过这个容器并“恢复”旧数据。
删除/添加元素的情况会比较复杂,但不是无解。您将需要更多的容器——一个用于删除的元素,一个用于添加的元素,一个用于更改的元素,一个用于更改的顺序。因此,这将为您提供执行“撤消”步骤的机会。
嗯,这听起来更复杂并且有点难以实现(因为所有可能的情况),但会提高性能(会减少拷贝)。
另一件事,我想到了 - 您可以先检查容器大小。如果它很小,请制作完整拷贝。如果它很大 - 执行“选择性备份”或任何所谓的备份。
请注意,这不是最好的解决方案(我猜),而只是一个想法,我现在得到了(我从来不需要这样的东西)
希望对您有所帮助,尽管这听起来很复杂且难以实现。
关于c++ - "backup"(复制)自定义对象的大型 STL vector 的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5727968/
BACKUP 无法完成命令 BACKUP DATABASE ... WITH DIFFERENTIAL。检查备份应用程序日志以获取详细消息。 我在 SQL Server 日志文件查看器中看到了这条消息
备份 VMWare 服务器 (1.0.x) 的最佳方法是什么? 有问题的虚拟机是我们的开发环境,与主网络隔离运行(因此您不能只是将数据从虚拟服务器复制到真实服务器)。 镜像文件通常在使用中,并且在服务
正如问题所述,我有一个实际 iPhone 的备份。现在我想要模拟器中内容的“副本”。原因是我的真实 iPhone 包含第三方应用程序数据,我也希望在模拟器中拥有这些数据。 这可能吗? 谢谢,诺伯特 最
我在 Debian 系统上工作,其中运行着 PostgreSQL 服务器。我修改了一个备份脚本并安装了一个 cron 作业来对我们的数据库进行每小时备份,并将其存储在一个文件夹中。与此同时,还会执行一
我正在尝试从备份 (.bak) 文件恢复数据库,该文件[保存]在 ZIP 文件内,但到目前为止尚未成功。不过,我可以在从 ZIP 文件中解压后恢复它。 这个MS page表示 SQL Server 2
我想在同一台机器内创建我的 sql server 2008 r2 数据库(名为 ERP)的副本。所以我做了以下步骤:- 我右键单击原始数据库 ERP,然后选择 Tasks>>Backup。 然后我创建
我尝试使用我的应用程序,其中包含 Android Backup Service 的用法在 Android Emulator 上使用我自己的 BackupAgent。但是备份不起作用,尽管在 And
当我尝试使用 pyodbc 和 freetds 从 Linux 主机备份 MSSQL 数据库时,我目前遇到了一些问题。版本如下: Python 2.7.6、pyodbc 3.0.7、freetds 0
我正在使用 rsync 运行备份,在此期间创建了一个日志文件。但是,我不知道缩写是什么意思。这是日志文件的示例: 2016/11/15 15:17:53 [4906] building file li
我有一个问题。 Duplicity 非常适合备份,我非常喜欢能够进行增量 diff tars,但是......当恢复 duplicity 时似乎不适用相同的概念。 基本上我只需要恢复更改的文件(显然是
问题: 客户 X 正在(考虑)将他以前“仅限 Windows”的共享软件应用程序之一移植到 Mac OS X。他关心的问题之一是如何强制执行 30 天试用期并使其不受“系统回滚”软件的影响比如时光机。
我一直试图让口是心非的备份到谷歌驱动器。但看起来它仍在使用旧的客户端 API。 我发现一些线程说应该支持新的 API,但没有太多关于如何让它工作的细节。 我编译和使用了duplicity 7.0.3,
我们正在寻求为ouchdb数据库创建常规备份,以备不时之需。获取这些内容的最不侵入方式是什么?理想情况下,不中断或不显着降低现有数据库服务器的性能? 最佳答案 您可以只复制CouchDB数据库文件。阅
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我知道--ignore-existing选项,想知道是否有些不同。 我的情况是:我有一个带有大量用户上传图片的Web服务器。现在大约2TB。通常,这些文件根本不会被修改。我使用rsync并将其备份到其
我对docker compose文件中的命名卷的功能有些困惑,特别是在备份/还原我的应用程序时。 我实际上正在测试此dockercompose文件: version: '2'
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我们使用的是 Teamcity 6.5.6 专业版,它为我提供了运行备份的选项,但我没有看到任何将其安排到特定时间的选项。 我不确定这个版本的 teamcity 是否支持计划备份。如果通过teamci
我正在阅读 Keycloak 的 export operation 的文档为了设置备份操作(例如通过 cron 作业),它所说的是在服务器启动期间发生导出: Export and import is
对于允许将单个 riak 存储桶备份[通过流式传输或快照]到文件的解决方案,您有何建议? 最佳答案 在 Riak 中仅备份单个存储桶将是一项困难的操作。 所有解决方案都归结为以下两个步骤: 列出存储桶
我是一名优秀的程序员,十分优秀!