Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631

Сравнение скорости вычислений с# с Fortran

07.06.2016, 10:19. Показов 4759. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сделал сравнение скорости расчетов при умножении матриц в с# и в Фортране.
В с# производились вычисления последовательно и параллельно.
В Фортране - последовательно.
Получил драматическую разницу в результатах:
- последовательный расчет с# - 776 мс;
- параллельный расчет с# - 245 мс;
- последовательный расчет Фортран - 64 мс.
Для интересующихся приложил проект, может я где то ошибся.
Меня этот вопрос очень интересует, раздумывал, может целиком перебраться в c#.
Для компиляции Фортрана использовался Интел Фортран
Вложения
Тип файла: rar Samples.rar (197.2 Кб, 24 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.06.2016, 10:19
Ответы с готовыми решениями:

Сравнение скорости вычислений с# и С++
Сделал тестовые расчеты для сравнения скорости расчетов с# и С++ на примере умножения квадратных матриц. Сравнил расчеты без ускорения...

Что лучше использовать для научных математических вычислений: С++ или Fortran?
Что лучше использовать для научных математических вычислений, С++ или Fortran. Чуть конкретнее, интересует больше, какой язык лучше...

Сравнение времен вычислений
определить время, необходимое для вычисления функции/(л:) в 1000 точек, используя первоначальное интегральное определение, и сравнить его с...

52
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
07.06.2016, 10:24
У меня такой результат..
Миниатюры
Сравнение скорости вычислений с# с Fortran  
0
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
07.06.2016, 10:30
А из-под отладки те еще тормоза..

Добавлено через 3 минуты

PS: Возможно тот результат - случайность. Сейчас получаю результаты 76 для "параллельного C#" и 58 для Фортрана. По моему, достойный результат
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
07.06.2016, 10:32  [ТС]
результаты 76 для "параллельного C#" и 58 для Фортрана
да, результат вполне себе ничего, но почему то у меня c# притормаживает
0
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
07.06.2016, 10:33
А по железу как?
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
07.06.2016, 10:38  [ТС]
железо у меня старое: ОЗУ - 8 гб, проц - i7-3770 СПУ 3.4 GHz, система 64 разрядная
0
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
07.06.2016, 10:40
ну... у меня i7-4790 (3,6 GHz на ядро). Винда 8.1. Может тут какие особенности
0
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
07.06.2016, 10:51
Замерять Stopwatchem производительность это очень некорректно. Попробуйте так
0
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
07.06.2016, 10:53
А почему некорректно, если не секрет?
0
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
07.06.2016, 10:57
halk0812, потому что это управляемая среда и jit компиляция. Даже грубо говоря второй запуск метода будет быстрее первого по причине того, что в первый раз метод перед вызовом сначала будет скомпилирован jit'ом и только потом управление перейдёт в целевой метод. И таких тонкостей много
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
07.06.2016, 11:55  [ТС]
кстати, если для компиляции фортрана поставить опцию /Qparallel - компилер сам распараллеливает задачу, время выполнения фортрана становится равным 26 мс
0
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
07.06.2016, 11:56
мдя... не в пользу c#... хотя его никто и не позиционировал как средство для быстрых вычислений
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
07.06.2016, 12:11  [ТС]
я как то не ожидал что настолько не быстрые, вернее будет сказать - очень медленные
0
Эксперт .NET
 Аватар для Usaga
14316 / 9402 / 1355
Регистрация: 21.01.2016
Сообщений: 35,461
07.06.2016, 12:38
afront, ты, конечно же, в курсе, что фортран двухмерные массивы в памяти располагает по столбцам, а C# по строкам?

Добавлено через 1 минуту
Вот такой код на шарпе будет на каждой итерации создавать кеш-промах:

C#
1
2
3
4
5
6
7
8
9
10
    static void CopyArray(int Row, int Column, double[,] matrix1, double[] matrix2)
    {
        int ij = 0;
        for (int j = 0; j < Column; j++)
           for (int i = 0; i < Row; i++)
             {
                matrix2[ij] = matrix1[i, j];
                ij+=1;
             }
    }
Зато фортран всё чётко отработает.
1
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
07.06.2016, 12:44
Usaga, какой знакомый пример))Видел его у Гольдштейна и Акиньшина)) И правда, очень верно подмечено. Как говорится инструмент не виноват, что его неправильно используют
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
07.06.2016, 12:45  [ТС]
вроде как в курсе, собственно для этого и создал копии массивов, чтобы их передать в фортран,
а в шарпе используются другие массивы
0
Эксперт .NET
 Аватар для Usaga
14316 / 9402 / 1355
Регистрация: 21.01.2016
Сообщений: 35,461
07.06.2016, 13:01
afront, в любом случае, нужно сначала сделать "холодный" прогон, чтобы JIT успел подготовить код. И уже потом делать "реальные" замеры, а то как-то не очень честно получается
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
07.06.2016, 14:40  [ТС]
Usaga, можно зациклить тесты, скажем прогнать их 10 раз, результат сильно не изменится

Добавлено через 1 час 22 минуты
"Зацикленный" тест(10 циклов для разогрева JIT) выдал следующие результаты:
- последовательный расчет с# - 892 мс;
- параллельный расчет с# - 205 мс;
- последовательный расчет Фортран(с опцией /Qparallel)- 23 мс.
Разница в скорости "последовательного" расчета с# и Фортран ~ 40.
Разница в скорости "параллельного" расчета с# и "последовательного" расчета Фортран ~ 9.
0
Эксперт .NET
 Аватар для Usaga
14316 / 9402 / 1355
Регистрация: 21.01.2016
Сообщений: 35,461
07.06.2016, 15:24
Да, тут уж ничего не поделать)) C# не про скоростные вычисления
0
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
07.06.2016, 15:25
C# не про скоростные вычисления
Может, когда-нибудь это и случится... но не сейчас) Да и надо ли?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2016, 15:25
Помогаю со студенческими работами здесь

Сравнение результата вычислений 8-, 12-, 16-битной вычислительных систем в Mathcad
Добрый день, есть простая программа в mathcade которая находит решения системы из трех уравнений методом Крамера. Теперь нужно...

Сравнение скорости
вечер добрый. смотрел задачи на codeforces, и заметил, что 90% решений на с++ написано в таком стиле, код взят случайный - #include...

Сравнение скорости
Вопрос теоретический: что работает быстрее-поразрядное И,ИЛИ (&amp; |),либо логическое И,ИЛИ(&amp;&amp; ||)и в чем их разница?

Сравнение скорости работы Qt и C++
Добрый вечер, коллеги. В одном из моих проектов используется плата Raspberry Pi. Данный миникомпьютер выполняет роль IP-камеры. Клиентская...

Сравнение скорости сходимости
Напишите программу сравнения скорости сходимости следующего разложенмия числа Пи, Пи=корень из(6*(1+1/2^2+1/3^2+1/4^2+....)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru