loadJSONArray() 会破坏我的代码效率吗?

is the loadJSONArray() going to wreck my code's efficiency?

我正在使用 processing3.0.2 为一件加工设备创建 UI。当它运行时,我希望它在本地将其数据存储在 JSON 文件中。但是,我担心随着这个文件的增长,UI 会使系统陷入困境。我只希望它将另一个条目附加到 JSON 数组。没有被调用。

JSON 文件一开始会很小,但很快就会有几百 MB。所以很明显,每 15 分钟读取一次这个文件来写一行效率不是很高。我完全不知道 java 是如何工作的。所以这可能是一个非常菜鸟的问题,但是 loadJSONArray() 是内存密集型步骤吗?如果是这样,有什么方法可以在不加载文件的情况下将另一行文本附加到文件中吗?或者将使用 append 命令在数组中添加另一个条目而不实际读取任何文件。

您问了很多广泛的问题,回答这些问题的唯一方法是实际编写一些代码并进行测试。你应该在阅读我的其余答案之前这样做。

如果您担心做某事需要很长时间,您应该考虑使用 Thread 以便您的主程序可以继续执行代码。考虑这个草图:

void setup(){
  size(500, 500);
}

void mousePressed(){
 delay(5000); 
}

void draw(){ 
  background(0);
  ellipse(mouseX, mouseY, 50, 50);
}

此代码调用 delay() 函数,该函数阻塞主线程,导致您的程序停止响应。这与加载或保存大文件完全一样。

但是,您可以通过使用另一个线程来处理长任务来确保您的程序具有响应性:

void setup(){
  size(500, 500);
}

void mousePressed(){

  new Thread(){
    public void run(){
      println("Waiting.");
      delay(5000); 
      println("Done waiting.");
    }
  }.start();

}

void draw(){ 
  background(0);
  ellipse(mouseX, mouseY, 50, 50);
}

线程可能会变得非常复杂,但如果您询问如何确保您的程序具有响应能力,即使您可能必须加载大文件,那么它们无疑是一种值得研究的方法。

如果您问是否可以附加到文件,那么答案是肯定的。只需使用 FileOutputStream 并将 true 传递给其构造函数以告诉它附加到文件:

PrintWriter pw= new PrintWriter(new BufferedWriter(new FileWriter("YourFileName.txt", true)));
out.println("Your JSON goes here");
out.close();

这两种方法都是 Java-only,如果你选择它们,你将无法部署为 Processing.js。他们也比大多数 Processing 草图需要更多的动手实践,所以就像我一开始说的那样:在尝试解决问题之前确保你确实遇到了问题。