1 回答

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