Поручиков М.А. Анализ данных. А. поручиков
Скачать 2.76 Mb.
|
БЫСТРОДЕЙСТВИЕ СИСТЕМ АНАЛИЗА ДАННЫХОбщие сведенияПри проектировании систем анализа данных важно представлять, какое время будет затрачено на решение вычислительных задач. В общем случае быстродействие систем анализа данных зависит от многих факторов: вычислительной сложности использованных алгоритмов; способа программной реализации алгоритмов; аппаратного обеспечения. Вычислительная сложностьВычислительная сложность – это зависимость трудоемкости вычислений от объема обрабатываемых данных. Например, вычислительная сложность алгоритма линейного поиска O(n) n, а алгоритма бинарного поиска – O(n) log n (рис. 52). Рис. 52. Вычислительная сложность алгоритмов поиска Очевидно, что один и тот же объем данных будет обработан быстрее алгоритмом с меньшей вычислительной сложностью. Например, вычислительная сложность алгоритма вычисления произведения матриц «по определению» O(n) n3 , а алгоритма Штрассена – O(n) n2,81 . Очевидно, что один и тот же объем данных будет обработан быстрее алгоритмом с меньшей вычислительной сложностью Предположим, что имеются два алгоритма, имеющие соответственно вычислительную сложность O1 (n) и O2 (n) . Для сравнения их вычислительной сложности необходимо найти значения предела lim O1 (n) . (24) n O2 (n) При этом если значение выражения (24): равно , то вычислительная сложность функции чем вычислительная сложность функции O2 (n) ; равно 0, то вычислительная сложность функции чем вычислительная сложность функции O1(n) ; O1 (n) O2 (n) больше, больше, равно некоторому числу, то функции одинаковую вычислительную сложность. Пример O1 (n) и O2 (n) имеют Пусть имеются два алгоритма с вычислительной сложностью соответственно O(n) en, O(n) n2 , тогда 1 2 n lim O1(n) lim e lim en lim e . 2 n O2 (n) n n n n2 n n 2n Следовательно, вычислительная сложность первого алгоритма больше вычислительной сложности второго алгоритма. Экспериментальноеопределениевычислительнойсложности Допустим, что реализован некоторый модуль системы анализа данных, предназначенный для обработки информации. Для использования этого модуля в реальных задачах необходимо четко представлять его вычислительную сложность. Для определения вычислительной сложности необходимо провести эксперимент, в ходе которого нужно измерить время обработки этим модулем некоторого объема исходных данных. В результате эксперимента будут получены точки вида «объем данных - время обработки» (рис. 53, а). Аппроксимировав экспериментальные данные какой-либо функцией, можно построить прогноз трудоемкости вычислений для любого, в том числе большего объема данных (рис. 53, б). Рис. 53. Прогнозирование вычислительной сложности Программноеобеспечениеsquare_matrix_multiply Программное обеспечение square_matrix_multiply предназначено для исследования факторов быстродействия систем анализа данных на примере операции умножения квадратных матриц. Пользователь может варьировать размеры матриц, количество вычислительных потоков (рис. 54). Дополнительно может быть задан размер серии экспериментов. Программное обеспечение выполняет ряд экспериментов, в ходе которых проводится измерение времени, затраченного на умножение матриц. Программное обеспечение square_matrix_multiply Размер матриц Число потоков Размер серии Время вычислений Рис. 54. Схема эксперимента Программное обеспечение реализовано в виде приложения для операционной системы Windows (рис. 55). Рис. 55. Интерфейс программного обеспечения square_matrix_multiply Запуск эксперимента производится нажатием кнопки «Запуск». Результатом эксперимента является набор данных, включающий как условия эксперимента, так и экспериментальные данные. Результаты эксперимента можно сохранить в текстовый файл формата csvс помощью нажатия кнопки «Сохранить». Прервать выполнение экспериментов можно с помощью кнопки «Стоп». |