1 / 16

Л.Б. Соколинский

Челябинский государственный университет. Технологические аспекты разработки программного комплекса для решения нестационарных задач математического программирования большой размерности. Л.Б. Соколинский. Проблематика. Выбор языка программирования Выбор программно-аппаратной платформы

micah-ross
Download Presentation

Л.Б. Соколинский

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Челябинский государственный университет Технологические аспекты разработки программного комплекса для решения нестационарных задач математического программирования большой размерности Л.Б. Соколинский

  2. Проблематика • Выбор языка программирования • Выбор программно-аппаратной платформы • Технология программирования

  3. С++ и Сипротив Фортранав Windows NT:сравнение быстродействиякомпиляторов (в секундах)* Windows NT (Pentium III, 700 MHz) * J. M. Bull, L. A. Smith, L. Pottage, R. Freeman Benchmarking Java against C and Fortran for scientific applications // Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande, Palo Alto, California, United States. -2001. -P. 97-105.

  4. Сипротив Фортранав Linux:сравнение быстродействиякомпиляторов (в секундах) Linux (Pentium III, 700 MHz)

  5. Windows NT против Linux:сравнение быстродействиякомпиляторов Cи(в секундах) Pentium III, 700 MHz

  6. Результаты анализа • С++ проигрывает в быстродействии Си в 1.5 - 3 раза • Си и Фортран демонстрируют примерно одинаковое быстродействие • Сив Linux проигрывает в быстродействии Си в Windows NT (5 - 40%)

  7. Программно-аппаратная платформа Язык программирования: Си Платформа: a) кластер под Windows + MPIб) кластер под Linux + MPIв) МВС-1000 (Linux + MPI)

  8. Проектирование Строгая иерархия(идеал) Нестрогая иерархия(реальность)  М1 М1 Тест М11  М11 М12 М13 М11 М12 М13  М111 М112 М121 М131 М132 М111 М112 М121 М131 М132 + Технологический цикл: • проектирование «сверху-вниз» • кодирование «снизу-вверх» • тестирование «модулями-драйверами» + Допускает эффективный алгоритм локализации ошибок на основе алгоритмов обхода дерева + Хорошая управляемость коллективной разработкой

  9. Виды модулей • Динамические классы используют динамическое выделение памяти (malloc) при создании экземпляров класса. Оптимальны для больших долгоживущих объектов (стек, таблица). • Статические классы используют статическое выделение памяти (static) при создании экземпляров класса. Оптимальны для небольших короткоживущих объектов (дескриптор, запись).

  10. Состав модуля Интерфейс: md_module.h Реализация: md_module.c • Интерфейс (md_module.h) содержит: • определения экспортируемых констант #define; • определения экспортируемых типов (typedef); • экспортируемые макро-определения #define; • прототипы экспортируемых функций. • Реализация (md_module.с) содержит: • #include md_module.h • определения внутренних глобальных констант #define; • определения внутренних типов (typedef); • определения внутренних глобальных static переменных; • прототипы внутренних функций. • внутренние глобальные макро-определения #define; • определения экспортируемых функций. • определения внутренних функций. • Импорт модуля: #include md_module.h

  11. Именование модуля nick_name md_module nick – краткое имя модуля (1-2 символа) name – полное имя модуля Примеры: st_stack, tr_tree

  12. Примеры модулей • Класс stock (склад) • Интерфейс st_stock.h • Реализация st_stock.с • Объект queue (очередь) • Реализация q_queue.с

  13. Идентификаторы md – краткое имя модуля, содержащего определение объектаwrd – английское слово (допускаются сокращения) 1) Обязательно использоватьв паре с #undef2)Описывается как static

  14. Использование макросов #define MAX(x,y) (? x>y:x,y) /* Вычисление максимума двух целых чисел */ int max(int x, int y){ if(x>y) return x; else return y; }; Используется для реализации простых функций, которые вызываются многократно (в циклах или рекурсии) + эффективность - проблемы при использования отладчика

  15. Аномалии при использовании #define #define DIV(x,y) x-y a=3; b=1; c= DIV(3,1)*0; /* получим c=3 */ a=3; b=1; c= a-b*0; /* получим c=3 */ Решение проблемы: #define DIV(x,y) (x-y)

  16. Лесенка Отступ для вложенных операторов – 3 позиции [tab] Элементы одного и того же оператора начинаются с одной и той же позиции. Примеры.

More Related