УМННБJ, ЯХВ. Войти !bnw Сегодня Клубы

https://research.microsoft.com/en-us/um/people/simonpj/papers/ndp/haskell-beats-C.pdf

Abstract
Stream fusion [6] is a powerful technique for automatically transforming high-level sequence-processing functions into efficient implementations. It has been used to great effect in Haskell libraries for manipulating byte arrays, Unicode text, and unboxed vectors. However, some operations, like vector append, still do not perform well within the standard stream fusion framework. Others, like SIMD computation using the SSE and AVX instructions available on modern x86 chips, do not seem to fit in the framework at all.
In this paper we introduce generalized stream fusion, which solves these issues. The key insight is to bundle together multiple stream representations, each tuned for a particular class of stream consumer. We also describe a stream representation suited for ef ficient computation with SSE instructions. Our ideas are implemented in modified versions of the GHC compiler and vector library. Benchmarks show that high-level Haskell code written using our compiler and libraries can produce code that is faster than both compiler- and hand-vectorized C.

На ассемблере такие вещи надо делать. Алсо, тут http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=gcc&lang2=ghc&data=u64q хаскель сливает сишке почти по всем пунктам. И я бы не сказал, что кода на х-е сильно меньше, чем кода на Си

#BAHBZO / @j123123 / 4151 день назад

количество кода - это главное преимущество языка шоле?
#BAHBZO/KLU / @muromec / 4151 день назад
@muromec >количество кода - это главное преимущество языка шоле? Я вообще за оптимизацию больше ратую, чем за количество кода. Если некий ЯП является более высокоуровневым чем другой, от него ожидается, что кода надо писать меньше (за счет всяких там абстракций)
#BAHBZO/QFT / @j123123 --> #BAHBZO/KLU / 4151 день назад
@j123123 > ожидается, что кода надо писать меньше > за счет всяких там абстракций я дико извиняюсь, но количество абстракций - это свойство рантайма, а не языка. в языке у тебя могут быть ифы вместо джампов, могут быть исключения и try-except-finally вместо еррор кодов и goto, но это не астракции нихуя. они не делают код в разы короче. в хаскеле же основная фишка - система типов и ленивые вычисления, от которых код становится (в теории) менее бажным и более структурированным. какие тут абстракции-то? обычная линейка, которая бьет по руками, когда пишешь хуйню.
#BAHBZO/ZCW / @muromec --> #BAHBZO/QFT / 4151 день назад
@muromec >я дико извиняюсь, но количество абстракций - это свойство рантайма, а не языка. Можно язык использовать и без рантайма, и разниза в абстракциях таки будет. Взять например Си и асм: -------------- C: switch - case Компилятор сам выберет подходящий вариант Asm: Создание таблицы переходов Двоичное или троичное дерево поиска http://www.insidepro.com/kk/145/145r.shtml Оптимизация switch -------------- C: Умножение Компилятор сам выберет подходящий вариант Asm: Инструкция MUL LEA, Двоичные сдвиги, суммирование Например, умножение некоего числа на 10 может быть записано как a = (a << 3) + (a << 1), что можно перевести в сдвиги и суммирование на асме. Компилятор кстати при попытке умножить на 10 выдает такую байду: leaq (%rdi,%rdi,4), %rax addq %rax, %rax Через LEA вообще можно сделать одним действием нечто вроде a = a*3 + 3 leaq 3(%rdi,%rdi,2), %rax -------------- Ну и еще можно кучу примеров придумать.
#BAHBZO/IKW / @j123123 --> #BAHBZO/ZCW / 4151 день назад
@j123123 Ссылка немного не та. http://www.insidepro.com/kk/031/031r.shtml тут про switch case
#BAHBZO/2EH / @j123123 --> #BAHBZO/IKW / 4151 день назад
@polecat >если таргет-платформа это поддерживает. http://hackage.haskell.org/trac/ghc/wiki/Platforms Тут пока что не очень хорошая ситуация с этим
#BAHBZO/8BD / @j123123 --> #BAHBZO/9QN / 4151 день назад
@muromec Ну всё теперь, приехали. У кого функций в рантайме больше тот и выразительней чтоли? Абсурд
#BAHBZO/ON4 / @engineer --> #BAHBZO/ZCW / 4151 день назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.