3

我们有一个 Clojure 应用程序,它获取一个数据集(约 3000 行)并使用 spit 将其写入本地文件。它在编写它的机器上运行良好,但在所有其他拉下 git 代码的机器上,写入步骤非常缓慢。该过程在原始机器上需要几秒钟,但在其他机器上需要十分钟以上。

有问题的两台主要机器(开发人员的机器和我的机器)都是具有可比规格和配置的 Manjaro Arch Linux 系统。我们都从同一个 Git 源中提取,并且都提取相同的数据。

我们已经确认代码仍然在我的机器上运行,因为如果我尝试只编写数据集的前十行(即使这仍然需要将近一分钟),它就会完成。

在两台机器上的处理过程中几乎没有触及 CPU 和 RAM,并且输出文件大小小于 1 MB。

如果我们使用带有 clojure.data.csv 或 dk.ative.docjure.spreadsheet 的 Java.io 库而不是 spit,我们会遇到同样的问题。

抽象的数据形状是:

[["Name" "Price"]
 ["Foo Widget" 100]
 ["Bar Widget" 200]]

(但当然是大于 3000 行)

任何帮助表示赞赏!

4

1 回答 1

0

好的,所以在我们处理要分享的代码示例时,我们收到了来自其他来源的一些建议,这些建议已经解决了这个问题。

  1. 我们将阅读器更改为使用输入流而不是读取整个文件
  2. 我们将作者包裹在doall@Reut Sharabani 也建议的

根本问题似乎是每台机器如何处理懒惰

感谢所有回复的人!

于 2020-01-31T20:25:39.677 回答