2

我正在使用 Java 开发一个机器学习项目,该项目将涉及一个非常大的模型(支持向量机的输出,对于那些熟悉它的人来说),需要相当频繁地检索该模型以供最终用户使用。模型的主体由相当小的对象组成的大型二维数组。

不幸的是,我不知道模型到底有多大(到目前为止我一直在使用基准数据,而我实际要使用的数据还没有准备好),我也不知道它将运行的机器的规格,因为这也是悬而未决的。

我已经有一种将模型作为字符串写入文件的方法,但是写入过程需要大量时间,而读取过程需要一分钟的大部分时间。我想减少那段时间,所以我有一个聪明或疯狂的想法,将模型写入 .java 文件,这样它可以被编译然后运行以生成一个完整的模型。

我的问题是,假设模型大小约为 1 MB,在 Java 中存储和编译模型会比从文件中读取模型快得多吗?有什么原因我还没有看到,这可能是一个非常愚蠢的想法,我在任何情况下都不应该追求?

谢谢你能给我的任何想法。

编辑:显然试图自动将几千个值写入代码中,使得方法比编译器可以处理的大约大两个数量级。嗯,生活和学习。

4

4 回答 4

2

您可以考虑为数据创建紧凑的二进制格式,而不是写入字符串或 java 文件。

于 2012-06-28T13:57:19.683 回答
1

恕我直言,问题是文件的读取是否由于 IO 或计算时间(=> CPU)而需要很长时间。如果是后者,那么运气不好。如果您的 IO(例如硬盘)是原因,那么您可以压缩文件并在读取后/读取时提取它。Java 中(当然)有 ZIP 支持(即使是 Streams)。

于 2012-06-28T14:10:24.657 回答
1

在 Java 中存储和编译模型会比从文件中读取模型快得多吗?

这取决于您塑造自定义数据结构以包含模型的方式。

于 2012-06-28T14:16:30.307 回答
0

我同意上面给出的使用二进制输入格式的答案。让我们先尝试优化它。你能提供一些信息吗?...或者你用谷歌搜索过二进制数据吗?...缓冲它?ETC。?

编写一个 .java 文件并编译它会很有趣......但它一定会在某些时候给您带来问题。但是,我想您会发现它会比优化的二进制格式稍慢,但比基于文本的输入要快。

此外,要非常小心进行早期优化。通常,“高度可配置”和“快速致盲”是相互排斥的。相反,首先让一切正常工作,然后使用分析器优化应用程序中真正缓慢的部分。

于 2012-06-28T14:10:16.997 回答