You can kinda test this with two scripts
Multiplying 30,000 rows where each cell is 10 by 10
The Auto expansion takes ~ .275 s
The CopyDown ~ .678 s
https://docs.google.com/spreadsheets/d/1djHUp_kTS02gYnKf5Y3AvpHCIt_69x_X02eesOSywzw/edit?usp=sharing
function AutoExpand() {
var ss =SpreadsheetApp.getActive();
var sheet =ss.getSheetByName('AAA');
var LC = sheet.getLastColumn();
var LR = sheet.getLastRow();
var start = new Date();
//Auto-expanding Formulas to be added
//Two dim array with 1 row
var formulas = [["=ArrayFormula(A:A*10)"]];
//Add auto-expanding formulas to Cell(s)
var cell = sheet.getRange(1,LC+1,1,formulas[0].length);
cell.setFormulas(formulas);
SpreadsheetApp.flush();
//Get range and post back Display Values
//var r = sheet.getRange(1,LC+1,LR,formulas[0].length);
//var v = r.getDisplayValues();
//r.setValues(v);
var end = new Date();
var executiontime = end - start;
Logger.log(executiontime);
}
CopyDown
function CoppyDown() {
var ss =SpreadsheetApp.getActive();
var sheet =ss.getSheetByName('AAA');
var LC = sheet.getLastColumn();
var LR = sheet.getLastRow();
var start = new Date();
//NON Auto-expanding Formula(s) to be added
//Two dim array with 1 row
var formulas = [["=A:A*10"]];
//Add NON auto-expanding formula(s) to Cell(s)
var cell = sheet.getRange(1,LC+1,1,formulas[0].length);
cell.setFormulas(formulas);
SpreadsheetApp.flush();
//Get range FULL Range of Cells W/Formulas
var r = sheet.getRange(1,LC+1,LR,formulas[0].length);
//Add formulas to Row1 Cell(s)
var cells = sheet.getRange(1,LC+1,1,formulas[0].length);
cells.setFormulas(formulas);
//Copy formulas down
cells.copyTo(r);
SpreadsheetApp.flush();
//Get the Display Values of the Range W/Formulas
//var v = r.getDisplayValues();
//Clear the Formulas Before the Postback
//This Super Speeds up the Postback
//r.clear();
//Postback Formulas as Values
//r.setValues(v);
var end = new Date();
var executiontime = end - start;
Logger.log(executiontime);
}