Aragaer
а, ну и кстати в моем последнем варианте комментарии тоже можно обработать
Dmitry
а со вторым что-то не пошло
Alexander
https://t.me/rustlang_ru
Alexander
второй наверное
Anonymous
да
Alexander
я в него очень редко смотрю, там траффик большой
Anonymous
да примерно как и здесь
A64m
Глянул краем глаза "хаскель очень сильно параллелит"
Anonymous
теория же
Alexander
ну это то что знает средний человек о ФП
Anonymous
мне очень интересно в чем секрет его скорости
Alexander
могу завтра рассказать
Alexander
кратко там используется вектор стриминг, который превращается в весьма хороший си код
Alexander
и почти нету аллокаций
Dmitry
он ленивый еще
Alexander
+ буфферизация вывода через билдер
Alexander
итого нету обычных тормозов от gc, т.к. собирать почти что нечего
Alexander
данные пишутся на выход большими чанками
Dmitry
герой дня пока что моно
Dmitry
с 1m30s
Alexander
а что он?
Alexander
=)
A64m
так это наивный код.
A64m
там можно такими же способами как везде ускорить и в 10 раз и может больше
A64m
using System;
using System.IO;
using System.Linq;
using System.Text;
class Program
{
static void Main()
{
var arr = File.ReadAllLines("49zGQ6Zt.txt").Select(s => s.Split(' ')).ToArray();
using (var stdout = new StreamWriter(Console.OpenStandardOutput(), Encoding.UTF8, 110000))
foreach (var p in arr)
foreach (var s in arr)
{
stdout.Write(p[0]);
stdout.WriteLine(s[1]);
}
}
}
A64m
ну и дальше понятно
Anonymous
Alexander
нет
Alexander
убирает промежуточные структуры
Dmitry
@A64m_qb0 11 секунд
Alexander
у тебя написан какой-нить адовый foldMap . V.filter f . V.map g. V.fromList
Alexander
тут кажется что создается 5-6 больших векторов
Alexander
а на самом деле получается хороший сишный tight loop
Dmitry
@A64m_qb0 md5 не сходится
Alexander
достаточно интересная вещь
Dmitry
наверное \r
Alexander
но правда может неработать
Alexander
ни с того ни с сего
Anonymous
ого
Alexander
т.к. она определяется правилами компилятора
A64m
@voidlizard дальше там можно будет байты писать (сейчас это дотнетные строки где по два байта на символ) и т.д. но мне лениво мучать сишарп
Alexander
чтобы хорошо пользоваться ими нужно помнить их и знать про stage компиляции
Alexander
и уметь иногда управлять
Alexander
я, например, не умею
Alexander
и не назову 5 человек кто хорошо умеет
Alexander
но в большинстве случаев на это не натыкаешься
Alexander
главное понимать что происходит и есть это узкое место то не забыть проверить, что все что надо сделалось
A64m
@voidlizard а ну да, WriteLine видно еще и \r пишет
Alexander
@anarchostatist пусть не забывают с -O2 собирать
Anonymous
кто
Anonymous
Alexander
Alexander
@stupidwasteofspace если статьи читать умеешь, то нормально
Anonymous
Alexander
по vector streaming и т.п. вообще о haskell очень хорошо читать по статьям различным
Alexander
в научных журналах
Alexander
и с конференций
Anonymous
Alexander
я не за тем компом где у меня библиотека
Alexander
завтра пни пожалуйста
Anonymous
ок
Anonymous
A64m
диссер дункана коутса
Alexander
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/haskell-beats-C.pdf
A64m
Stream fusion: practical shortcut fusion for coinductive sequence types
Alexander
в общем-то много статей Mainland и Leshchinskiy
Alexander
у Дункана тоже прекрасный диссер
Alexander
там вроде все подходы покрываются
A64m
у Мейнланда вроде одна статья
Alexander
а ещё рассказывается почему в haskell невозможно заимплементить все как надо
A64m
Старые пейперы у Лещинского с Доном Стюартом вроде
Alexander
хм.. мне казалось там серия
Dmitry
а сишарп/моно под линуксней работают, прям как настоящие
Alexander
аа
Dmitry
а почему никто ничего не пишет на нём, интересно
Alexander
в общем по Лещинскому смотреть надо
Alexander
там серия, старые немножно устарели, но нужные идеи есть
A64m
from list to Streams to nothing at all или как-то так
Alexander
угу
Alexander
наверное с неё можно начинать если про stream.unstream