Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610

Какова расплата за функциональность?

18.08.2011, 20:02. Показов 2811. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я имею в виду потерю производительности. Понятно, что это зависит от задачи. Но ведь существуют классические программы для тестирования, например - http://parallel.ru/computers/benchmarks/perf.html
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.08.2011, 20:02
Ответы с готовыми решениями:

Функциональность FB
Кто чем может помочь, очень нужно понять смысл данной задачи(( FUNCTION_BLOCK FB700 {Задание функции } CONST {Описание и...

Функциональность псевдонимов
Здравствуйте! Подскажите, пожалуйста, почему в глобальном пространстве имён нельзя объявить следующий псевдоним: using f = Int64;а в...

Не доступна функциональность
Здравствуйте! Подскажите пожалуйста, почему не доступны команды преобразований? Заранее спс!

3
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
19.08.2011, 15:00
Не понял связи между производительностью и функциональностью.
Производительность процессора определяется возможностями процессора и его скоростью. Функциональность (если правильно понял в контексте раздела форума) это стиль программирования.
Если есть хороший компилятор, то одна и та же сферическая программа-тест скомпилируется в один и тот же код, на каком бы языке она не была написана.
Другое дело, что компиляторы пока ещё не настолько мощные, чтоб функциональные элементы оптимально преобразовывать, скажем, в asm.
Да и глупо писать такой тест, скажем, на Haskell, слишком много от компилятора зависит. С С/Паскаль/Фортран проще: легким взглядом на код можно оценить, где сколько операций будет делать проц. (хотя бы примерно)

Прим.: такая же, да наоборот, ситуация с data-flow архитектурами, хотя, опять же, многое от компилятора зависит.
0
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
19.08.2011, 15:43  [ТС]
Цитата Сообщение от Mysterious Light Посмотреть сообщение
Не понял связи между производительностью и функциональностью.
Чем выше уровень абстракции - тем ниже производительность. Вопрос лишь в том, насколько ниже?

Производительность процессора определяется возможностями процессора и его скоростью. Функциональность (если правильно понял в контексте раздела форума) это стиль программирования.
Действительно, эти тесты изначально предназначаются для тестирования скорости процессора. Мы компилируем одну и ту же программу и запускаем на двух разных процессорах. Где она выполнилась быстрее - тот процессор лучше. Но что мешает сделать ровно наоборот? Скомпилировать две программы и запустить на одном и том же процессоре. Какой код выполнится быстрее - тот компилятор эффективнее. Понятно, что тут многое будет зависеть от реализации (т.е. от кодера), но тесты классические, и наверняка можно их реализовать очень качественно. Да я и не настаиваю именно на этих тестах. Это просто для примера. Можете взять любой алгоритм и реализовать дважды - на любом императивном языке и на любом функциональном. Опять же, слишком много факторов (какую задачу выберем, какие языки выберем, какой алгоритм, кто это будет писать). Но хоть какая-то точка отсчёта.

Если есть хороший компилятор, то одна и та же сферическая программа-тест скомпилируется в один и тот же код, на каком бы языке она не была написана.
Это не хороший компилятор, это некий чисто умозрительный идеализированный компилятор.

Другое дело, что компиляторы пока ещё не настолько мощные, чтоб функциональные элементы оптимально преобразовывать, скажем, в asm.
Вот именно это меня и интересует. Насколько они неоптимальные? Насколько медленнее будет расчёт? Возьмём для примера задачу типа "проще не придумаешь". Скажем, нахождение корней квадратного уравнения. Запрограммируем на Фортране и на Хаскелле. Зациклим на час и подсчитаем число циклов.

Да и глупо писать такой тест, скажем, на Haskell, слишком много от компилятора зависит. С С/Паскаль/Фортран проще: легким взглядом на код можно оценить, где сколько операций будет делать проц. (хотя бы примерно)

Прим.: такая же, да наоборот, ситуация с data-flow архитектурами, хотя, опять же, многое от компилятора зависит.
Я искренне надеюсь, что кто-то поймёт эти умные слова и даже извлечёт из них какую-то пользу. Я задал простой вопрос и надеялся получить простой ответ. Скажем, время расчёта возрастает на 20-200 процентов в зависимости от задачи. Даже такой гигантский разброс - уже хоть какая-то конкретика.
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
20.08.2011, 01:05
Первая моя программа имела вид (ghci)
> let factorial 1 = 1; factorial x = x * factorial (x-1)
> :m +System.Time
> do x <- getClockTime; print $ factorial 50000; y <- getClockTime; return$ tdSec$ diffClockTimes y x
Вывод: собственно, 50000! за 20 секунд. Тогда впечатлило.

Более-менее сложная программа уже будет подтормаживать.

P.S. знаю, что никаких конкретных коэффициентов не привел. Больше хотел повторить свою мысль: всё зависит от того, насколько компилятор может оптимизировать выходной код.
Лирическое окончание «Тяжелое детство»
Разочарован в понятии оптимальности после прочтения Барендрегта. Там приводится стандартный переход от лямбды к SKI и обратно. Мне мыслится SKI заменой абстракции редукцией определенного комбинатора (S, K или I). Всё вроде как очевидно, механизм абстракции (на практике, по отношению к редукции) работает одинаково, что в лямбде, что в SKI.
Но: возьми любой терм, переведи его в SKI, а потом обратно. Получается страх и ужас. И хоть термы равны, но в одной мысли я утвердился: "оптимальный код" одного языка не обязательно странслируется (или скомпилируется) в оптимальный код другого языка (или маш.код).
Это я к тому, что "производительность" можно измерять при помощи программ, написанных оптимально на языке низкого уровня. Но у тебя ведь вопрос не об этом, а о том, насколько много всякой лишней хрени делает процессор вместо того, чтоб решать эффективно поставленную задачу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.08.2011, 01:05
Помогаю со студенческими работами здесь

Функциональность программы отсутствует
Приветствую! Никогда не пользовался SQL, но вот пришлось учить как создавать БД. На работе есть программа 2005 и я смог попробовать...

Функциональность OS Snow Leopard
Купил не новый Мак с Mac OS Snow Leopard 10.6.3. Сделано все просто удивительно. Но вот сама система не стала играть фильмы с новым...

Нужна следующая функциональность
Нужна следующая функциональность. Есть шаблон. Пользователь должен иметь возможность через Web интерфейс заменить некоторый текст на...

Дополнительная функциональность в HomeLisp
Уважаемый Catstail! Прошу добавить в НОВУЮ версию HomeLisp дополнительные функции для работы с картинками: 1) определение размера...

Функциональность админ-панели
нужно через админ панель добавить новые товары Вот файл с добавлением новой статьи &lt;?php include('fns.php'); if...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru