2016-12-16 2 views
2

Ich bin ein kompletter Anfänger.Warum verwenden wir SpreadsheetApp.flush();?

Ich las das Google-Dokument für die Lösung. Ich suchte das Internet nach dem gleichen. Ich suchte auch nach StackOverflow für die gleiche.

Aber. Alles scheint technisch zu sein.

Was ich verstehe, ist .Flush hilft, die Funktionen wie und wann sie passieren, ohne sie in einem zu bündeln.

Bin ich richtig? Wenn nicht, was ist die Bedeutung in Laien Begriffen? Und bitte, mit einem einfachen Beispiel. Vielen Dank.

+0

teilen Sie Ihr Schnipsel. was auch immer du versucht hast. –

+0

Hier ein einfaches Beispiel: https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#flush – FTP

Antwort

5

Ein Programmierer wird flush() verwenden, wenn er sicherstellen möchte, dass die Ausgabe und/oder die Effekte des vorherigen Codes in die Tabelle geschrieben werden, bevor sie fortgesetzt werden. Wenn Sie nicht flush(), dann wird der Code möglicherweise automatisch "optimiert" mithilfe einiger integrierter Caching und Bündelung von Vorgängen. In der Regel müssen Sie flush() nicht verwenden, bis Sie speziell DO müssen ... wenn das Sinn macht.

Zuerst ye olde offizielle Dokumentation:

flush()

Gilt alle anstehenden Kalkulationstabelle ändert. Tabellenoperationen werden manchmal zusammengebündelt, um die Leistung zu verbessern, z. B. wenn mehrere Aufrufe von Range.getValue() ausgeführt werden. Manchmal möchten Sie jedoch sicherstellen, dass alle ausstehenden Änderungen sofort vorgenommen werden, z. B. um Benutzerdaten anzuzeigen, während ein Skript ausgeführt wird.

Wie wäre es mit einer explainlikeimfive Analogie: Nehmen wir an, Sie zählen Äpfel auf einem Baum mit 100 Äpfel.

Sie konnte Zahl und jeden Apfel einzeln aufzeichnen, etwa so:

1, 2, 3, 4, 5, 6 ... etc.

Das ist wie eine flush() innerhalb eines tun Schleife, da Sie buchstäblich nach jeder count Operation schreiben. Am Ende schreibst du auf dein Papier 100 mal, und nehmen wir an, dass es länger dauert, mit deiner Hand zu schreiben, als mit deinen Augen zu zählen.

Ein „optimiert“ Prozess (in diesem Fall) wäre Ihr Speicher/Cache zu verwenden und 5 Äpfel zählen, bevor eine Reihe aufzuschreiben, damit Sie

5 schreiben würde, 10, 15, 20 ..

Jetzt werden Sie am Ende schreiben 20 mal (eine 80% ige Reduktion), und obwohl Sie die gleiche Anzahl von Äpfeln zählen müssen, haben Sie die Anzahl der Schreibvorgänge reduziert Sie sehen also einen drastischen Leistungsvorteil durch reduzierte Laufzeit.

Dies entspricht ungefähr der Funktionsweise von Apps Script-Operationen. Wie bei allen Berechnungen sind die In-Memory-Operationen am schnellsten auszuführen, und die Lese-/Schreibvorgänge (auch Eingabe-/Ausgabe- oder E/A-Operationen) sind die langsamsten (überprüfen Sie Ihre Execution Transcript auf weitere Beweise). Aus diesem Grund sollten Sie flush() nur verwenden, wenn Sie Ihre Daten an einem bestimmten Punkt der Codeausführung in die Tabelle schreiben müssen.

Hoffe, das hilft.

Verwandte Themen