问题标签 [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.
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 进行了测试,可以通过这种方式找到跟踪文件。这里的问题是一样的。跟踪文件
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
有谁知道该项目使用什么技术来创建范围列表而不是搜索它们?
.net - 使用 .Net,是否可以使用 MS 图形控件生成没有 UI 的图形?
我想使用 MS 图形控件创建一个图形,但这需要放在一个表单上才能生成可以保存在文件中的图形。
但是,由于我想从 Windows 服务生成图形并且应用程序没有 UI,因此我希望能够在“内存中”生成图形并生成图形文件。
是否可以使用 MS Chart 控件来实现,或者在某处可能有另一个免费/开源控件?
笔记
我的应用程序是从 Windows 服务调用以生成图形的命令行应用程序。
Windows 服务在没有 UI 环境的情况下运行。
python - 如何以编程方式仅从 Python 字符串创建嵌套目录和文件的 tar 存档,而不使用临时文件?
我想用 Python 的分层目录结构创建一个 tar 存档,使用字符串作为文件的内容。我读过这个问题,它显示了一种将字符串添加为文件的方法,而不是作为目录。如何在不实际制作目录的情况下将目录动态添加到 tar 存档中?
就像是:
java - 使用 javax.tool 进行级联内存编译
Eclipse 的 JDT 编译器提供了一个INameEnvironment
定义方法的接口,findType(...)
使您可以进行级联编译。奇怪的是,我想知道是否有任何方法可以使用标准 JDK 编译器工具包来做到这一点?
请注意,该场景是一个模板引擎,它在内存中编译模板文件生成的具有相互依赖关系的类,它无法预测您遇到模板文件的顺序,因此Foo
可能需要先编译,然后再编译它的父级Bar
,因此您需要一种机制来进行级联编译,这意味着在编译过程中Foo
您需要生成另一个源Bar
并首先对其进行编译才能继续Foo
编译:一些代码如下:
.net - .net 的高效 trie 实现
我正在寻找.net 的 trie 实现。
我打算将它用作我的内存对象池的索引结构。它不需要是线程安全的(因为只有一个线程会更新它),但应该能够优雅地处理至少 2000 万个项目并保持稳定的性能。
我在网上找到的似乎是示例代码或玩具项目。所以,我真的在寻找生产质量的实施。商业图书馆也可以,如果有的话。
PS:我选择了尝试,因为我看到的哈希表实现似乎使用了太多内存,并且由于它们基于数组而容易导致内存碎片。任何具有 O(1) 查找特性和大量项目的良性内存使用特性的容器也可以。
谢谢,
mongodb - 带有分片的内存中的 MongoDB 索引
流行的说法是,如果不能将正在使用的索引保存在内存中,MongoDB 就会变慢。这如何与分片一起工作?分片是否只在内存中保留自己的 BTree,还是每个分片都需要将整个集合的索引保留在内存中?
load - 将内存中的 H2 数据库保存到磁盘
如何以二进制模式将完整的嵌入式 h2 内存数据库保存/加载到某个文件或目录以加快加载速度。
我想用它来缓存数据,这样我就不必每次都运行 create table/insert 子句的所有行。
database - 将现有的 Sqlite 数据库加载到内存中以进行快速计算
有谁知道如何将现有数据库(Sqlite 3)加载到内存中以便在 Perl、MATLAB 或 Java 中进行快速计算?Perl 是首选?
我正在做一个需要密集计算的项目,我想保持真实数据库的固定。所以我想将整个 Sqlite3 数据库读入内存并在内存中执行任何操作。
我知道内存数据库连接的基础知识,但似乎 Perl 只能使用这种方式创建一个新数据库,而不是加载现有数据库(这是我想要实现的选项)。
java - 无需 I/O 将 BufferedImage 转换为 byte[]
您好我在内存中有一个 BufferedImage 实例,出于性能考虑,我想将其转换为 byte[] 以编码为 base64 字符串而无需 I/O 操作。我正在使用以下 API:
但是这个API还是会隐式的将镜像写入OS temp目录,这样会导致底层OS temp目录已满,无法创建temp文件的情况下失败。堆栈跟踪:
是否有一种有效的(如内存转换或高效的 I/O)方式来进行没有 I/O 的转换?请指教。