2016-12-16 12 views
2

Я полный новичок.Почему мы используем SpreadsheetApp.flush() ;?

Я прочитал документ Google для решения. Я искал в Интернете то же самое. Я также искал StackOverflow для этого же.

Но. Все кажется техническим.

Я понимаю, что .Flush помогает выполнять функции как и когда они происходят, не связывая их в одном.

Я прав? Если нет, то в чем смысл прокламанов? И, пожалуйста, с простым примером. Благодарю.

+0

поделитесь своим фрагментом. все, что вы пробовали. –

+0

Вот простой пример: https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#flush – FTP

ответ

5

Программист будет использовать flush(), когда они захотят убедиться, что предыдущий код и/или эффекты были записаны в электронную таблицу перед продолжением. Если вы не flush(), тогда код может быть автоматически «оптимизирован» с помощью встроенного кэширования и группировки операций. В общем, вам не нужно использовать flush(), пока вам не понадобится DO ... если это имеет смысл.

Во-первых, Ye Olde официальная документация:

заподлицо()

Применяет все отложенные изменения электронных таблиц. Операции с электронными таблицами иногда объединяются вместе для повышения производительности, например, при выполнении нескольких вызовов Range.getValue(). Однако иногда вы можете захотеть, чтобы все ожидающие изменения были сделаны сразу, например, чтобы показать данные пользователей по мере выполнения сценария.

Как насчет аналогии explainlikeimfive: Предположим, вы считаете, что яблоки на дереве со 100 яблоками.

Вы могли подсчет и запись каждого яблока по отдельности, так как:

1, 2, 3, 4, 5, 6 ... и т.д.

Это как делает flush() в пределах поскольку вы буквально записываете после каждой операции count. Вы в конечном итоге напишите на свою бумагу 100 раз, и давайте считать, что для написания вашей руки требуется больше времени, чем для подсчета с вашими глазами.

«оптимизированные» процесс (в данном случае) будет использовать память/кэш и сосчитать 5 яблок, прежде чем писать несколько вниз, так что вы хотите написать

5, 10, 15, 20 .. и т. д.

Теперь вы в конце концов напишите на свою бумагу 20 раз (скидка 80%), и, несмотря на то, что вам приходится подсчитывать столько же яблок, вы сократили количество записей, которые вам нужно сделать , так что вы увидите резкое повышение производительности за счет сокращения времени выполнения.

Речь идет о том, как работают приложения Script Script. Как и во всех вычислениях, операции с оперативной памятью выполняются быстрее всего, а операции чтения/записи (например, ввода/вывода или ввода-вывода) являются самыми медленными (проверьте свои Execution Transcript для дальнейшего доказательства). Вот почему вы должны использовать только flush(), когда вам нужно писать свои данные в электронную таблицу в определенный момент исполнения кода.

Надеюсь, что это поможет.

Смежные вопросы