问题标签 [in-memory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3422 浏览

performance - 内存 H2 db 的单元测试变得非常慢

我们有大量针对内存数据库运行的测试。每个测试都会创建其架构。

到目前为止,我们正在针对 HSQL DB 运行这些测试,但由于 H2 应该更快,我们尝试改用 H2。

在查看执行时间时,H2 实际上明显更快(10-50%)。但是当运行大量测试时,H2 似乎在两者之间休息,导致整体性能比 HSQLDB (800-900%) 差得多。

任何想法如何保持完整测试套件的单个测试的良好性能?

这些是我们为 H2 尝试的 URL:

这是我们与 HSQL DB 一起使用的:

编辑:

我试图编写一个可重现的测试用例,但这并不容易,因为当我们只使用简单的 jdbc 时似乎没有问题。在大约 500 次全部使用休眠的测试之后,测试变得缓慢。

我在 VisualVM 中注意到的唯一一件事是,在测试开始变慢的同时,cpu 使用率下降到接近于零,并伴有一些噪音。

编辑2:

JStack 输出:

似乎测试在创建模式时正在等待一些数据库锁。

编辑3:

这似乎是多个连接的问题。当我用 jdbc:h2:mem:(未命名的私有;一个连接)替换 jdbc:h2:mem:test(一个进程中的多个连接)时,一切都很好(但比在 hsql db 中慢了 10%)。

编辑4:

好的,我对文件 db 进行了测试,可以通过这种方式找到跟踪文件。这里的问题是一样的。跟踪文件

0 投票
5 回答
5772 浏览

java - Java中IP地址过滤器内存数据结构的最佳选择

我有像这样的 CIDR 格式的文件,192.168.1.0/24它被转换成这两列结构

每个字符串 IP 地址转换都使用以下代码进行:

考虑有超过 500 万个(low high : 3232236030 3232235777).
还会有相交,因此 IP 可以来自多个范围。只是第一个就OK了。
数据是只读的。
找到ipToBefiltered所属范围的最快方法是什么?该结构将完全在内存中,因此没有数据库查找。

更新:

我找到了这个Peerblock项目(它有超过一百万的下载量,所以我认为它必须有一些快速算法): http://code.google.com/p/peerblock/source/browse/trunk/src/pbfilter/filter_wfp。 C

有谁知道该项目使用什么技术来创建范围列表而不是搜索它们?

0 投票
0 回答
165 浏览

.net - 使用 .Net,是否可以使用 MS 图形控件生成没有 UI 的图形?

我想使用 MS 图形控件创建一个图形,但这需要放在一个表单上才能生成可以保存在文件中的图形。

但是,由于我想从 Windows 服务生成图形并且应用程序没有 UI,因此我希望能够在“内存中”生成图形并生成图形文件。

是否可以使用 MS Chart 控件来实现,或者在某处可能有另一个免费/开源控件?

笔记

我的应用程序是从 Windows 服务调用以生成图形的命令行应用程序。

Windows 服务在没有 UI 环境的情况下运行。

0 投票
3 回答
3192 浏览

python - 如何以编程方式仅从 Python 字符串创建嵌套目录和文件的 tar 存档,而不使用临时文件?

我想用 Python 的分层目录结构创建一个 tar 存档,使用字符串作为文件的内容。我读过这个问题,它显示了一种将字符串添加为文件的方法,而不是作为目录。如何在不实际制作目录的情况下将目录动态添加到 tar 存档中?

就像是:

0 投票
2 回答
634 浏览

java - 使用 javax.tool 进行级联内存编译

Eclipse 的 JDT 编译器提供了一个INameEnvironment定义方法的接口,findType(...)使您可以进行级联编译。奇怪的是,我想知道是否有任何方法可以使用标准 JDK 编译器工具包来做到这一点?

请注意,该场景是一个模板引擎,它在内存中编译模板文件生成的具有相互依赖关系的类,它无法预测您遇到模板文件的顺序,因此Foo可能需要先编译,然后再编译它的父级Bar,因此您需要一种机制来进行级联编译,这意味着在编译过程中Foo您需要生成另一个源Bar并首先对其进行编译才能继续Foo编译:一些代码如下:

0 投票
2 回答
1089 浏览

.net - .net 的高效 trie 实现

我正在寻找.net 的 trie 实现。

我打算将它用作我的内存对象池的索引结构。它不需要是线程安全的(因为只有一个线程会更新它),但应该能够优雅地处理至少 2000 万个项目并保持稳定的性能。

我在网上找到的似乎是示例代码或玩具项目。所以,我真的在寻找生产质量的实施。商业图书馆也可以,如果有的话。

PS:我选择了尝试,因为我看到的哈希表实现似乎使用了太多内存,并且由于它们基于数组而容易导致内存碎片。任何具有 O(1) 查找特性和大量项目的良性内存使用特性的容器也可以。

谢谢,

0 投票
2 回答
2976 浏览

mongodb - 带有分片的内存中的 MongoDB 索引

流行的说法是,如果不能将正在使用的索引保存在内存中,MongoDB 就会变慢。这如何与分片一起工作?分片是否只在内存中保留自己的 BTree,还是每个分片都需要将整个集合的索引保留在内存中?

0 投票
2 回答
13610 浏览

load - 将内存中的 H2 数据库保存到磁盘

如何以二进制模式将完整的嵌入式 h2 内存数据库保存/加载到某个文件或目录以加快加载速度。

我想用它来缓存数据,这样我就不必每次都运行 create table/insert 子句的所有行。

0 投票
3 回答
2414 浏览

database - 将现有的 Sqlite 数据库加载到内存中以进行快速计算

有谁知道如何将现有数据库(Sqlite 3)加载到内存中以便在 Perl、MATLAB 或 Java 中进行快速计算?Perl 是首选?

我正在做一个需要密集计算的项目,我想保持真实数据库的固定。所以我想将整个 Sqlite3 数据库读入内存并在内存中执行任何操作。

我知道内存数据库连接的基础知识,但似乎 Perl 只能使用这种方式创建一个新数据库,而不是加载现有数据库(这是我想要实现的选项)。

0 投票
4 回答
4941 浏览

java - 无需 I/O 将 BufferedImage 转换为 byte[]

您好我在内存中有一个 BufferedImage 实例,出于性能考虑,我想将其转换为 byte[] 以编码为 base64 字符串而无需 I/O 操作。我正在使用以下 API:

但是这个API还是会隐式的将镜像写入OS temp目录,这样会导致底层OS temp目录已满,无法创建temp文件的情况下失败。堆栈跟踪:

是否有一种有效的(如内存转换或高效的 I/O)方式来进行没有 I/O 的转换?请指教。