1 回答

TA貢獻1825條經驗 獲得超4個贊
程序員flush()
在希望確保在繼續之前將先前代碼的輸出和/或效果寫入電子表格時會使用。如果您不這樣做flush()
,則可以通過使用一些內置的緩存和操作綁定來自動“優化”代碼。一般情況下,你不需要使用flush()
,直到您特別DO需要......如果是有道理的。
首先,您以前的官方文檔:
flush()
應用所有待處理的電子表格更改。電子表格操作有時會捆綁在一起以提高性能,例如在多次調用Range.getValue()時。但是,有時您可能需要確保立即進行所有待處理的更改,例如在執行腳本時向用戶顯示數據。
怎么樣解釋類似的類比:假設您是在一個有100個蘋果的樹上數蘋果。
您可以分別計算和記錄每個蘋果,如下所示:
1
,2
,3
,4
,5
,6
...等等。
這就像flush()
在循環中進行,因為您實際上是在每次count
操作之后進行編寫。您最終將在紙上書寫100次,并且假設用手指書寫的時間要比用眼睛數的時間更長。
一個“優化的”過程(在這種情況下)是在記下數字之前使用您的內存/緩存并計數5個蘋果,因此您應該
5
,10
,15
,20
...等等。
現在,您將最終在紙上書寫20次(減少了80%),盡管必須計算相同數量的蘋果,但您卻減少了必須執行的寫操作次數,因此您將獲得驚人的性能通過減少運行時間而受益。
這大致可轉換為Apps腳本操作的工作方式。與所有計算一樣,內存中操作執行最快,而讀/寫(aka輸入/輸出或I / O)操作最慢(請檢查執行記錄以獲取進一步證明)。這就是為什么只flush()
在特別需要在代碼執行的特定點將數據寫入電子表格時才使用它的原因。
希望這可以幫助。
添加回答
舉報