Здравствуйте.
Сортировка больших объёмов данных в скрипте требует большой затраты времени, что крайне не понравится серверу Simple-Scada. Процесс сортировки определяется алгоритмом и способом сравнения данных. Простые алгоритмы сортировки доступны в сети. Для таблицы данные представлены текстом, возможны следующие варианты сравнения данных:
- собственно сравнение текста для текстовых значений;
- для чисел - перевод текста в числовое значение с последующим сравнением;
- для чисел - выравнивание текстового представления "левыми" нулями по десятичной точке с последующим сравнением.
Во вложении пример сортировки перемешиванием (работа с индексами для сокращения количества обменов между ячейками таблицы) для тестовой таблицы из 8192 ячеек (для некоторых способов сравнения и 2000 много!), заполняемых убывающей последовательностью или случайной целочисленной или случайной вещественной.
Пример позволяет оценить время выполнения сортировки по количеству сортируемых данных и одному из трех способов сравнения. Фрагмент экрана показывает затраты времени на сортировку различными способами сравнения.
P.S. В общем случае (не зная задачи) можно предположительно облегчить жизнь серверу следующими вариантами:
- сортировка при поступлении очередного значения;
- разделение процесса сортировки на последовательное выполнение серии скриптов, сервер вздохнёт свободнее, но общее время сортировки возрастет по сравнению с односкриптовым вариантом;
- несколько таблиц (возможно неотображаемых) для разных диапазонов значений, по значению определяется нужная таблица, сортировка по каждой отдельной с последующим объединением таблиц.
P.P.S Для сравнения добавлена классическая сортировка перемешиванием с перемещением содержимого ячеек. На фрагменте экрана приведены времена сортировок по уже отсортированной таблице. Для классики первая сортировка "против шерсти" убывающей последовательности требует вдвое большего времени по сравнению с уже отсортированной последовательностью.
Впрочем в примере это видно нагляднее.