Сравнение компиляторов для трудных задач

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    3,01 Мб
  • Опубликовано:
    2012-09-30
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Сравнение компиляторов для трудных задач














Сравнение компиляторов для трудных задач

ВВЕДЕНИЕ

компилятор задача инструмент

Для решения вычислительных задач немаловажной является проблема выбора инструмента. При вычислениях с использованием бинарного кода важно, чтобы код был оптимальный по затратам вычислительных ресурсов и ресурсов памяти. Помимо этого обнаружилась серьезная проблема времени компиляции исходного кода. Так, в некоторых комбинаторных задачах, где используются тысячи многократно вложенных циклов, некоторые компиляторы отказываются компилировать. В связи с этим актуальной является проблема выбора «правильного» компилятора. Практическая значимость нашей работы заключается в проведении тестов, изучении компиляторов и выборе наиболее подходящего. В рамках работы мы ограничились наиболее известными компиляторами языка С++. Для исследования мы выбрали несколько компиляторов, такие как: MinGW, Borland Builder, Intel C++ Professional Edition, Watcom и Visual Studio. Для начала рассмотрим их описание на сайтах-производителях.

1. Обзор компиляторов

.1 MinGW

Информация взята с сайта [1]. MinGW, сокращенно «минималистский GNU для Windows», является минималистической средой разработки для родных приложений Microsoft Windows.предоставляет полный программный пакет с открытым исходным кодом, который подходит для развития собственных приложений MS-Windows, и которые не зависят от любых третьих сторон C-Runtime DLL (только Microsoft C библиотеки, MSVCRT).компиляторы обеспечивают доступ к функциональности среды Microsoft C Runtime и некоторым специализированным-языковым библиотекам.

Мы использовали версию 3.4.5, команда компилирования g++.

.2 Borland Builder

Информация взята с сайта [2]. Embarcadero® C++ Builder® XE является единственным настоящим RAD C++ инструментом и компонентом программного обеспечения, предназначенного для ультрабыстрой разработки высоко-сопровождаемых Windows приложений с графическим интерфейсом для Windows и основных платформ.

Мы использовали версию 6.10, команда компилирования bcc32.exe

.3 Watcom

Информация взята с сайта [4]. Open Watcom является проектом с открытым исходным кодом для поддержания и укрепления Watcom C, C++, Fortran кросс-компиляторов и инструментов. Лицензии Open Source от Sybase позволяет свободное коммерческое и некоммерческое использование Open Watcom. Watcom компилятор имеет ряд преимуществ перед другими свободными компиляторами, такие как полная поддержка 16-битных DOS, Windows.. Open Watcom C/C++ компилятор в свободном доступе, компилятор для 16-битных Windows и OS / 2 устройств. Наконец, Open Watcom это комплексный пакет, легкий в установке и использовании, с полным набором инструментов и документации.

Мы использовали версию 1.9, команда компилирования wcl386.

.4 Intel C++

Информация взята с сайта [3]. Intel® C++ Compiler Professional Edition раскрывает огромный потенциал следующего поколения многоядерных процессоров Intel. Professional Edition не только поставляется с широкими возможностями передовых оптимизаций компилятора, многопоточностью, и поддержкой процессора, в том числе автоматического процессора отправки, векторизации и предварительной выборки данных, он также имеет оптимизированные C++ шаблоны для параллелизма, математической обработки и мультимедийных библиотек.

Мы использовали версию 11, команда компилирования icl. При запуске компилятора через командную строку столкнулись с проблемой, поэтому запуск компиляции производился через Visual Studio.

.5 Visual C++

компилятор задача инструмент

Информация взята с сайта [5]. Visual C++ - это продукт корпорации Microsoft, предоставляющий интегрированную среду разработки для языков программирования C, C++ и C++/CLI. Visual C++ 2008 предоставляет многофункциональную и гибкую среду разработки для создания приложений на базе Microsoft Windows и Microsoft .NET. Компилятор поддерживает управляемое последовательное построение. Компилятор поддерживает микроархитектуру ядра Intel. Встроенные компоненты поддерживают новейшие процессоры AMD и Intel.

Мы использовали версию 2008, команда компилирования cl.

На данном этапе работы мы сравниваем характеристики выполнения программ на примере простого кода:

#include <stdio.h>main(){i, k;s = 0;( "file.in", "r", stdin );( "file.out", "w", stdout );("%d",&k);(i = 0; i <= k; i++){= s + i;

};(stdout,"sum is %d\n", s); 0;

}

Представим результаты в следующих таблицах.

Таблица 1 - время выполнения программы для различного k (с)

K

1

1 000

100 000

10 000 000

1 000 000 000

MinGW

0,00

0,01

0,03

0,03

3,67

Builder

0,08

0,09

0,09

0,11

0,92

Watcom

0,09

0,09

0,09

0,09

0,81

Visual C++

0,01

0,03

0,03

0,03

0,78

Intel C++

0,00

0,01

0,03

0,03

0,22

Таблица 2 - затраченная память на выполнение программы (Кб)

K

1

1 000

100 000

10 000 000

1 000 000 000

1228

1324

1324

1292

1296

Builder

3388

3368

3384

3376

3372

Watcom

3428

3252

3240

3256

3244

Visual C++

1416

1408

1408

1432

1436

Intel C++

1416

1416

1416

1412

1388


Таблица 3 - размер полученного *exe файла (Кб)

MinGW

18

Builder

165

Watcom

36

Visual C++

8

Intel C++

128


Далее использовались более сложные программы и компилировались с различными ключами оптимизации.

2. Обзор задач

Задача 1.Посчитать количество способов расстановки k ферзей на шахматном поле размером N на N так, чтобы они не били друг друга

Задача 2. Найти количество циклов длинной 5 в графе

Задача 3. Найти количество циклов длинной 10 в графе

Задача 4. Расставить максимальное количество 144 короля на поле 24 на 24 так, чтоб они не били друг друга

Тестирование

Задача 1.

Время работы в секундах приведено в следующих таблицах

MinGW

Ключ оптимизации

K


2 (n=700)

3 (n=80)

4 (n=35)

5 (n=20)

6 (n=16)

-O0

720.58

408.05

853.90

411.62

506.21

-O1

391.03

221.16

531.15

249.59

321.78

-O2

234.75

494.38

236.28

305.54

-O3

423.37

195.31

414.96

237.88

303.38


Ключ оптимизации

K


2

3

4

5

6

-od

1066.56

714.39

1873.54

874.96

1046.33

-oneatx -zp4

488.66

320.94

685.28

319.85

370.83

-ol

889.21

534.38

1676.56

767.29

916.58

-on

867.38

560.14

1607.11

768.80

924.48

-ot

873.90

530.20

1624.84

725.37

924.59


Borland Builder

Ключ оптимизации

K


2

3

4

5

6

-Od

721.27

469.14

1046.30

484.88

589.84

-O2

716.01

484.15

1080.57

480.76

601.49

-Ox

717.57

510.92

481.01

638.89

-Ot

712.83

480.25

1123.11

492.89

616.73

C++

Ключ оптимизации

K


2

3

4

5

6

/Od

365.20

168.71

1263.90

547.84

687.01

/O1

361.03

164.96

510.15

235.25

314.06

/O2

366.13

170.73

425.77

207.15

289.86

/O3

382.97

175.89

414.92

203.85

263.35

/Ox

364.18

174.63

426.76

204.75

287.57

C++

Ключ оптимизации

K


2

3

4

5

6

/Od

678.32

316.57

875.63

263.41

507.35

/O1

411.98

310.50

666.37

281.16

356.17

/O2

353.30

325.03

590.09

343.01

/Ox

367.26

320.43

600.28

262.81

344.34


Далее мы заменили встроенный типа на собственный и переопределили для него операцию инкремента в данных программах и провели тесты еще раз. Результаты изменились, но незначительно. Данные можно представить в виде диаграмм.

Диаграммы с разными ключами оптимизации:

Диаграмма для двух ферзей на поле размером 500 на 500


Диаграмма для трех ферзей на поле размером 70 на 70

Диаграмма для четырех ферзей на поле размером 30 на 30


Диаграмма для 5 ферзей на поле размером 18 на 18

Диаграмма для шести ферзей на поле размером 15 на 15


Далее мы сравнили значения скорости выполнения программ для k ферзей, после того как они компилировались различными компиляторами с отключенной оптимизацией.


Так же мы проверили скорости выполнения программ для k ферзей, после компилирования с наиболее быстрой опцией компилятора


Исходя только из последней диаграммы, мы видим, что самым быстрым компилятором является Intel C++ в тех случаях, когда k > 2, для k = 2 быстрее всех работает программа, скомпилированная компилятором MinGW. В остальных случаях так же видно, что для k > 2 Intel C++ оказывается более оптимальным.

Задача 2

.

Задача 3

Следующая диаграмма отражает время компилирования программы с различными опциями


В свою очередь время выполнения программы отражено в следующей диаграмме

Задача 4


Также проводились тестирования для подсчета количества циклов длинной 12 в графе, но они не компилировались 32-битовыми компиляторами Intel C++ и Visual C++, MinGW выдал сообщение о нехватке памяти, Watcom выдал сообщение о том, что используются слишком сложные конструкции. Borland Builder скомпилировал, программа после компилирования запускалась более 2 часов для графа с 30 вершинами.

ЗАКЛЮЧЕНИЕ

Таким образом, мы провели несколько различных тестов для наших компиляторов, сравнивая скорость выполнения и скорость компилирования. Рассмотрели подробно опции компилирования у каждого из компиляторов, выбрали самые подходящие. Изучив внимательно данные таблиц и диаграмм, можно сделать вывод, что наиболее быстрым является компилятор Intel C++, особенно это заметно на более сложных тестах. Вторым после него идет Visual C++, чего и следовало ожидать, так как между ними есть некоторая схожесть. Далее компиляторы определились неоднозначно и по разному вели себя в каждой из программ. Но все же третьим по скорости является Watcom, а точнее с опцией оптимизации -oneatx -zp4, которая является самой быстрой из всех его опции. MinGW и Borland Builder находятся наравне друг с другом.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.     MinGW. Minimalist GNU for Windows [Электронный ресурс]. MinGW.org, 2009.URL: http://www.mingw.org Загл. с экрана. Яз. англ

.       Embracadero [Электронный ресурс]. Embarcadero Technologies, Inc., 2010 URL: http://www.embarcadero.com/ru/ Загл. с экрана. Яз. англ

.       Intel [Электронный ресурс]. Intel Corporation, URL:http://intel.com Загл. с экрана.

.       Open Watcom [Электронный ресурс].Some rights recerved Creative Commons URL: http://www.openwatcom.org Яз.англ

.       Microsoft Visual Studio [Электронный ресурс].Microsoft Corp., 2010 URL: http://msdn.microsoft.com/ru-ru/vstudio/ Загл. с экрана. Яз. англ


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!