(1) ситуация аналогична использованию упорядочивания массива для получения крайних вместо перебора.
Несмотря на то, что логично предположить, что получение итога по колонке выполняет ту же операцию сложения в цикле, а я предлагаю дополнительно тратить время и память на создание объекта и его заполнение, по замерам производительности в моём случае выигрывает тот вариант, что я предложил.
(6) Конкретно в моём случае в приоритете была скорость выполнения отчёта. С памятью же вроде всё очевидно: создавая новую сущность с целью копирования в неё данных можно рассчитывать, что памяти придётся выделить как минимум в два раза больше(например при передаче по значению), а при использовании списка значений и тем более таблицы значений и подавно!
Ну если изменения в процессе вызова функции исходного массива некритичны, то да.
Хотя считаю, что сумму и минимум лучше было делать "дедовскими" способами - циклом с условием и вспомогательной переменной, как в
(1)
(5) Изменения в исходный массив вносит только упорядочивание. Если важна сохранность не только данных, но и их индексов, тогда да, стоит озадачиться данным вопросом.
По умолчанию, во встроенном языке 1С:Предприятия 8 передача параметров в процедуры и функции осуществляется по ссылке. Это означает, что изменение формального параметра внутри процедуры или функции будет отражаться на значении фактического параметра, переданного при вызове процедуры или функции.
(2)
Знач Массив - породит новую переменную Массив (в текущем контексте), что не есть Массив - передаваемый в параметр
=> пришлось бы писать что-нибудь типа
Массив = Сумма(Массив);
Функция Сумма(Знач Массив)
.....
Возврат Массив;
КонецФункции
На всякий случай напоминаю о наличии в платформе объекта
Новый АнализДанных
в котором уже есть встроенные механизмы расчёта различных параметров, в том числе максимума/минимума, медианы, среднего, стандартного отклонения и др.
Надеюсь автор сравнивал свою разработку с использованием платформенных методов и выяснил, что она работает быстрее и лучше?...
(7) Признаюсь, с данным классом был не знаком, и при поиске способа получения дисперсии и ср.кв. отклонения средствами платформы он мне так же не попадался. На досуге озадачусь изучением сего.
(11) За сравнение - спасибо, думаю, если объединить повторяющиеся вызовы, то общее время чуть сократится.
За счет того что платформа получает сразу несколько параметров (напомню, для типа анализа АнализДанныхОбщаяСтатистика это Количество, Максимум,
Медиана, Минимум, Размах, Среднее, СтандартноеОтклонение), время выполнения анализа платформой больше, чем каждое из вычислений с использованием приведённых функций.
Для примера:
Анализ данных платформой: 100 мс (получены 7 параметров)
Расчет приведёнными функциями: медиана - 25 мс, среднее - 80 мс, макс/мин - по 20 мс
Таким образом, возможно, для получения единичного параметра (той же медианы) выгоднее использовать приведённую функцию. Ну это если не брать в расчёт то что она работает только с числами и не умеет, например, посчитать медиану по датам :)
Если нужно получить сразу пакет параметров -- то нужно или переделывать функции, оптимизируя получение за один проход, или всё же использовать платформенный механизм (т.к. судя по времени исполнения 100 всё же меньше чем 25+80+20+20).
В инженерных калькуляторах статистические функции сохраняют в памяти устройства количество элементов, сумму и сумму квадратов. Для расчета дисперсии этих данных достаточно. Я это к тому, что если надо считать ещё быстрее, то может каким-то образом сохранять или кешировать эти данные, вместе с минимумом и максимумом?