Speicherverbrauch beim Erstellen vieler TabellenBeim Erstellen und anschließenden Schließen vieler Tabellen scheint JMP die Tabellen oder einige Reste im Speicher zu behalten. Der Speicher wird manchmal nach einer Weile freigegeben. Darauf bin ich gestoßen, als ich eine Messsituation mit Lärmquellen simuliert habe. JMP stürzte nicht ab, aber nachdem der Arbeitsspeicher erschöpft war, begann Windows mit der Umstellung auf die Festplatte.
Unten ist das einfachste Beispiel, bei dem ich das Problem wiederholen konnte.
Frage: Ist das ein erwartetes Verhalten und/oder habe ich etwas Lustiges gemacht?
Hinweis für alle, denen das Gleiche widerfährt: Kommentieren Sie Wait(0); Behebt das Problem, scheint aber zumindest in dem Fall, in dem dies ein Problem war, einen kleinen Leistungseinbruch (~10 %) zu haben.
For (i = 1, i <= 100000, i++,
dt = New Table("Name of the table",
New Column("Name of the column", Set Values(1::20000)),
);
// Do stuff
Close(dt, "No Save");
//Wait(0);
);JMP 14.0.0 64-Bit, Win 10
Qualitäts- und VerfahrenstechnikBetreff: Speicherverbrauch beim Erstellen vieler TabellenIn Bezug auf die letzte Frage könnten Sie Datentabellen subskribieren:
NamesDefaultToHere(1);
// Make a starting table to update later
mat = J(10, 5, RandomNormal());
dt = AsTable(mat);
dt << setName("My Table");
// Update the last four columns of dt (using data table subscripting) with new values
Wait(3);
mat = J(10, 4, RandomNormal());
dt[1::10, 2::5] = mat;Betreff: Speicherverbrauch beim Erstellen vieler TabellenVor allem, weil ich Teile aus Skripten verwendet habe, die ich schon vorher geschrieben hatte, und sie nicht ändern wollte. In vielen Fällen ziehe ich langsame Skripte der Arbeit am Skript vor, um es schneller zu machen.
In einigen Fällen beziehen die Datentabellen ihre Daten aus Matrizen:
dt = As Table(matrixWithData, private);
Gibt es eine Möglichkeit, die Daten einfach in eine vorhandene Datentabelle einzufügen? Das würde die Änderungen relativ einfach machen.
Betreff: Speicherverbrauch beim Erstellen vieler TabellenWarum in jeder Iteration eine neue Tabelle erstellen? Sie könnten vor der Iteration eine Datentabelle erstellen und den Inhalt in jeder Iteration aktualisieren.
Betreff: Speicherverbrauch beim Erstellen vieler Tabellen@Niko_Porjo ,
Versuchen Sie, ein „unsichtbar“- oder „privat“-Flag einzubauen, wenn Sie so viele Datentabellen öffnen. Wenn Sie Datentabellen „unsichtbar“ machen, sehen Sie einige Verbesserungen, und wenn Sie sie „privat“ machen, sehen Sie deutliche Verbesserungen.