Alexander
иначе бы !(i%chunk_size)
Alexander
сказал
Dmitry
@iamweasel я не знаю почему, но md5sum не сходится с эталоном
Alexander
realloc на NULL как себя ведёт?
Dmitry
@iamweasel время работы в dev/null у меня - 6 секунд
Alexander
о спасибо man
Dmitry
pypy - 4
Alexander
сейчас будет более классная версия
Dmitry
v-stream - 1.6
Aragaer
If ptr is NULL, then the call is equivalent to malloc(size), for all values of size;
Dmitry
версию qnikst запущу, когда будет готова
Dmitry
@aragaer почему наедается твоя версия - не пойму
Alexander
@voidlizard можешь чуть выше запустить
Alexander
должна уже работать
Aragaer
потому что каждая строка кончается \n/
Alexander
следующая будет чуть-чуть хуже
Aragaer
а \n в printf это flush
a66ath
#include <iostream>
#include <vector>
#include <list>
using namespace std;
int main(){
string a, b;
list<string> as;
list<string> bs;
while (cin){
cin >> a >> b;
as.push_back(a);
bs.push_back(b);
}
string e = "\n";
for(const auto& a : as) {
for(const auto& b : bs){
cout << a+b+e;
}
}
return 0;
}
a66ath
Вот такая за 3.96 работает
Alexander
@voidlizard https://pastebin.com/E7gVniNe
Alexander
убрал константы
Alexander
как правильно дамп абстрагировать?
Aragaer
ща профильну
Dmitry
@qnikst 1.8 у меня
Dmitry
хуже v-stream
Anonymous
окей я довел свой раст код до 2.18с и попытался байтоебить, но устал
a66ath
Соптимизировал
Dmitry
как дамп абстрагировать - не знаю
a66ath
#include <iostream>
#include <vector>
#include <list>
using namespace std;
int main(){
string a, b;
list<string> as;
list<string> bs;
while (cin){
cin >> a >> b;
as.push_back(a);
bs.push_back(b);
}
string e = "\n";
string megastring;
int max = 1000000 * a.size() * 2;
megastring.reserve();
for(const auto& a : as) {
for(const auto& b : bs){
megastring += a+b+e;
if(megastring.size() >= max){
cout << megastring;
megastring.clear();
}
}
}
return 0;
}
Anonymous
https://ghostbin.com/paste/8cgb2
Alexander
@voidlizard интересно
Alexander
а можешь увеличить CHUNK_SIZE?
Alexander
так как передавать указатель который я могу поменять? char ** foo?
Anonymous
a66ath
э
Dmitry
ща, сек плюсы бенчмаркну
Alexander
так все, я спать точно
Dmitry
@iamweasel 5.74 у меня
Dmitry
хэш сейчас чекну
Dmitry
@iamweasel выхлоп похож на правду, но хэш не совпадает
Alexander
не точно
Alexander
% - остаток от деления же?
Ilya
как всё кончится, напишите отчёт кто-нибудь:)
Ilya
в каком порядке языки расположились
Alexander
[nix-shell:~/workspace/myself/experiments/special-1]$ gcc -O3 -march=native -mtune=native bswtf.c
[nix-shell:~/workspace/myself/experiments/special-1]$ \time -v -- ./a.out < 49zGQ6Zt.txt > result.c
Command being timed: "./a.out"
User time (seconds): 1.02
Alexander
@voidlizard ^
Alexander
haskell у меня 1.23 (v-stream)
Alexander
абстрагировать dump мне лень, не макросов война с указателями, а с макросами тоже ад
Dmitry
@anarchostatist
dmz@zen ~/tmp/bsfuck $ time ./meme/target/release/meme < ./49zGQ6Zt.txt > /dev/null
real 0m3.047s
Anonymous
увеличился текст?
Dmitry
нет
Alexander
не все версии одинаково удачны
Dmitry
@anarchostatist хэш не совпадает
Aragaer
запустил в валгринде, что ж там так тормозит
Alexander
но вообще на моём ноуте 1.23 к 1.02 я считаю достойным результатом
Dmitry
dmz@zen ~/tmp/bsfuck $ ./fu2.py < ./49zGQ6Zt.txt | md5sum
eb8d32c8d260d240b351dfadd42cb5e5 -
Alexander
учитывая что сишный вариант очень халявит
Dmitry
хэш смотрите плс.
Dmitry
выхлопа.
Aragaer
а, блин, в исходном файле в конце нет \r\n
Dmitry
тормозит везде IO
Dmitry
\r не нужен вроде
Dmitry
\n нужен
Dmitry
так вот, тормозит в целом IO
Dmitry
вопрос - как его в вашем язые нагнуть, что бы перестал
Aragaer
писать целыми страницами
Dmitry
там не так всё просто
Aragaer
425,000,038 /build/glibc-MECilU/glibc-2.24/stdio-common/vfprintf.c:vfprintf [/lib/x86_64-linux-gnu/libc-2.24.so]
106,058,677 /build/glibc-MECilU/glibc-2.24/libio/fileops.c:_IO_file_xsputn@@GLIBC_2.2.5 [/lib/x86_64-linux-gnu/libc-2.24.so]
Aragaer
однако ж
Aragaer
"форматирование" в 4 раза больше сожрало, чем io
Alexander
@voidlizard массивами раздвигающимися и вправду слило haskell
Dmitry
@qnikst
k += 1;
if(k >= MAX_LINES){
fprintf(stderr, "Too many lines, aborting\n");
exit(2);
Dmitry
это что?
Dmitry
это норм?
Alexander
нет, я вот это убрал сейчас
Dmitry
ща моя версия победит, как только я смогу вывод нормально буферизовать
Dmitry
по крайней мере до выхлопа оно работает довольно ок
Dmitry
а вот с выхлопом не очень.
Alexander
чего-то я с этими реаллоками все сломал
eahqzsr
Будет пост?