- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在开发一个使用 STXXL 的项目,据我所知,它是 C++ STL 库的非核心版本。目前,我的程序运行良好,但我现在面临的问题是,当程序运行时,它使用接近 2GB 的内存(具有中小型数据集)。
在我的程序中,我使用了 25 个 STXXL vector ,存储在磁盘上的单独文件中。至于我的 .stxxl 文件,我目前将其设置为动态分配磁盘文件(通过将磁盘大小设置为 0)。
所以,我的问题是:有没有办法明确让 STXXL 使用硬盘而不是 RAM?还是在使用该库时会出现这种内存使用量?
提前感谢任何人可以提供的任何建议。
最佳答案
bobb_the_builder 关于 stxxl:vector 的 RAM 使用情况的说法是正确的。
请看下面的代码:
#include <stxxl/vector>
int main()
{
// create vector
//stxxl::VECTOR_GENERATOR<int>::result vector[25];
stxxl::VECTOR_GENERATOR<int, 1, 1, 1*1024*1024>::result vector[25];
// fill vectors with integers
for (size_t i = 0; i < 100 * 1024 * 1024 * 1024llu; ++i) {
vector[i % 25].push_back(i);
}
return 0;
}
在 Linux 上,程序的常驻内存大小增长到使用和时为 27528 KiB使用时大约为 1.6 GiB。
Windows 管理器显示相同吗?这可能是 Windows 上的 STXXL 错误,还是任务管理器显示不同的内存大小?
关于c++ - STXXL 的高内存使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20475351/
下面的程序,崩溃了 libc++abi.dylib: terminating with uncaught exception of type stxxl::io_error: Error in vir
我想创建一个外部存储器二进制搜索树数据结构,其数据位于使用 stxxl 作为库的外部存储器中。 为此,STXXL 中的哪种数据类型适合用作树中的节点。如果我们使用 stxxl:Vector 作为树的节
我正在开发一个使用 STXXL 的项目,据我所知,它是 C++ STL 库的非核心版本。目前,我的程序运行良好,但我现在面临的问题是,当程序运行时,它使用接近 2GB 的内存(具有中小型数据集)。 在
我正在尝试对包含大约十亿条记录(每条记录包含四个整数)的大文件进行排序。文件的大小将超过 50GB。 我正在用 4 亿条记录(大约 6 GB 文件)测试我的代码。我的磁盘配置如下所示: disk=/v
我有一个需要内置排序的应用程序,我希望用 STXXL 提供的排序替换现有的排序机制。我已经使用 STXXL 成功地测试了它,但我的问题是,虽然特定的排序运行需要对固定长度的字符串进行操作,但长度是在运
我正在尝试使用 STXXL 构建一个大型矩阵,并能够对该矩阵执行多种不同的操作。目前,我正在使用 stxxl::vector 作为存储大矩阵子矩阵的一种方式。我想要做的是规范化矩阵的每一列。所以我唯一
STXXL支持数据处理的流模型。 STXXL 数据可以通过迭代处理(例如使用 stxxl::for_each),或转换为流模式(例如使用 streamify(),其中此类流转换可以组合以进行高效处理。
我需要将大量元素附加到 stxxl vector 中。向 stxxl vector 添加元素的最有效方法是什么?现在,我正在使用 stxxl vector 的 push_back,但它似乎效率不高。它
在stxxl常见问题解答,我发现了这个: Parameterizing STXXL Containers STXXL container types like stxxl::vector can be
以下最小示例说明了在并行初始化容器(使用 openMP)时 stxxl 的行为: #include #include #include typedef stxxl::VECTOR_GENERAT
我似乎无法使用 CMake 2.8.12.1 为 STXXL 构建解决方案。我查看了所有文章并按照他们的说明进行操作,但没有运气。我有带有 SP1 和 Windows 7 的 VS2010 Profe
此处提供类似问题:How do I sort a vector of pairs based on the second element of the pair?但我对外部存储器排序很感兴趣。 我尝试
我正在搜索一个为 Java 中的大型数据集设计的集合框架,它的行为是透明的,比如 STXXL为 C++ 做。 它应该透明地交换到磁盘,但比普通的基于操作系统的 VM 交换更有效。 StringBuff
如何让 qmake 将 stxxl.mk 文件包含到生成的 makefile 中? 我有一个 Qt 项目,它处理大文件 (>RAM),因此想使用 STXXL。 STXXL documentation说
我试图将 STXXL 库安装到 this 之后的自定义路径中以这种方式回答向 cmake 提供前缀: cmake -DCMAKE_INSTALL_PREFIX=/usr 。 && 全部安装 当我运行测
我需要优化 stxxl vector 的 block 大小 BlkSize_ 参数,以便使用简单的网格搜索进行部分和查找。由于为 stxxl vector 指定它的唯一方法似乎是将它用作 vector
我有以下代码,这是一个非常简单的测试,但 VS 拒绝运行它: stxxl::syscall_file OutputFile("Data/test.bin", stxxl::file::RDWR | s
我正在使用 STXXL,有人可以帮我找到编号吗?由我的程序(或算法或进程)完成的 I/O(或 block 传输)?我知道如何限制任何特定进程的内存使用,但不知道如何限制 STXXL 中的 block
这是 Vector of pairs with generic vector and pair type, template of template 的后续. 我希望能够调用带有 std::vecto
我的代码似乎可以工作(由于上述错误,我还没有在大型数据集上尝试过)。 代码: #include #include #include int main() { //queue q; //th
我是一名优秀的程序员,十分优秀!