@dlangru

Страница 706 из 719
Ievgenii
05.10.2018
15:17:03
Сейчас освобожусь и гляну

Valeriy
05.10.2018
15:21:49
Time 0: 1 μs value: [536870912, 0] Time 1: 9 hnsecs value: [268435456, 268435456]
https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%BC%D0%BE%D1%82%D0%BA%D0%B0_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0

Это старый очень пример с циклами

На стаковерфлоу полно народу, орущего что java быстрее C. Потом им говорят добавить - O2 или -O3 и сразу становится не быстрее

Google
Pavel
05.10.2018
15:24:42
Так это фишка LLVM выходит?

Valeriy
05.10.2018
15:25:25
Так это фишка LLVM выходит?
Скорее всего да, в LLVM встроена

Pavel
05.10.2018
15:25:44
А получается что в go нет такой оптимизации? )

Valeriy
05.10.2018
15:25:56
вообще это распространённая оптимизация

я уверен, что и в DMD она есть

Pavel
05.10.2018
15:26:41
Ну почему, у них же нет 100500 человеколет разработок чтобы все оптимизации туда включить

Ievgenii
05.10.2018
15:28:33
Я о том, что GO этого (это оптимизирование) не сделало (не умеет)

Я ж не говорю что я написал сверх круто

Я и написал, что LLVM ОЧЕНЬ круто оптимизирует

Valeriy
05.10.2018
15:29:31
Я о том, что GO этого (это оптимизирование) не сделало (не умеет)
вот в Go вообще не шарю, какие там опции у оптимизатора есть

Ievgenii
05.10.2018
15:29:49
И я такой: да, это крутой оптимизатор!

Google
Ievgenii
05.10.2018
15:30:08
Не вышел каменный цветок...

Valeriy
05.10.2018
15:30:18
ldc2 test.d
а dmd со включенным оптимизатором что показывает?

Ну кстати, ldc2 объективно код лучше компилит. Это бесспорно

Ievgenii
05.10.2018
15:31:12
dmd -release test.d ./test 1 Time 0: 778 ms, 798 μs, and 3 hnsecs value: [536870912, 0] Time 1: 443 ms, 360 μs, and 3 hnsecs value: [268435456, 268435456]

dmd -O -release -inline -boundscheck=off test.d

Time 0: 192 ms, 880 μs, and 5 hnsecs value: [536870912, 0] Time 1: 427 ms, 12 μs, and 3 hnsecs value: [268435456, 268435456]

Пошустрее ГО даже вышло

Igor
05.10.2018
15:34:26
да сомневаюсь что dmd может обогнать ldc в чем-то. llvm пилят достаточно народу что-бы насовать туда кучу оптимизаций

Ievgenii
05.10.2018
15:35:54
В имплиментации своих фич))))

Они там раньше появляются)))

Но не более того

Dmitry
05.10.2018
15:36:28
А у Go компилятор свой?

Igor
05.10.2018
15:36:32
с другой стороны я вот наступаю на ошибки под osx в ldc

то что работает с dmd валится с ldc под osx и не валится под линухом

Ievgenii
05.10.2018
15:47:50
Pavel
05.10.2018
15:50:32
А у Go компилятор свой?
Самое удивительное что он не использует libc, там своя реализация

И своя реализация ssl

Поэтому они легко собираются в единый бинарник

Google
Dmitry
05.10.2018
15:51:50
А... вот это новость. Я все никак не мог понять как они с блокирующими операциями борятся

Короче получается стоит слинковаться с сишной либой которая блокирующая так сразу все прелести Го улетучатся?

Igor
05.10.2018
16:10:23
Ну как-то в вопросе много обобщений.

Dmitry
05.10.2018
16:46:42
как я понимаю libc реализует все низкоуровневые системные вызовы. Обращение к сетевым подсистемам и диковый io верно?

Если так то получается в Go все они заменены на неблокирующие аналоги

Igor
05.10.2018
16:47:51
libc это обёртка над системными вызовами (что касается работы с системой)

она сама мало что реализует в этом плане. максимум - “подгоняет” поведение системы под какой-то стандарт

насколько я понимаю

Pavel
05.10.2018
16:49:40
Если так то получается в Go все они заменены на неблокирующие аналоги
Нет, неблокирующую работу можно сделать и поверх libc

Dmitry
05.10.2018
16:50:31
Pavel
05.10.2018
16:50:44
Ну как vibe-core делает

Pavel
05.10.2018
16:50:55
кажется не всего
Я уверен что almost всего

а как? Типа колбеки какие-то юзать?
Ты понимаешь что неблокирующие вызовы это всего лишь очень быстрое переключение маленьких блокирующих системных функций? =)

Dmitry
05.10.2018
16:52:08
угу

Pavel
05.10.2018
16:52:17
Ну вот.

Dmitry
05.10.2018
17:02:47
Так, но если у Go своя реализация, значит не получилось поверх либси сделать неблокирующуие операции

Oleg
05.10.2018
17:09:21
другая в том, что они стремились к кросс-переносимости всякой

я бы на D тоже отказался от glibc

Google
Oleg
05.10.2018
17:10:57
был бы ресурс это сделать)

Dmitry
05.10.2018
17:15:34
а минусы отказа о libc какие?

Oleg
05.10.2018
17:16:00
ну она уже написанна

"зачем изобретать велосипед?" "зачем переписывать и тестировать то что уже написанно и протестированно?" и тд

qwerty
05.10.2018
17:38:10
В rust когда надо слинковать glibc статически, то его заменяют неким musl

Karbin
05.10.2018
17:39:05
musl немного медленнее glibc

Dmitry
05.10.2018
17:39:28
"зачем изобретать велосипед?" "зачем переписывать и тестировать то что уже написанно и протестированно?" и тд
нет, вот условно в го изобрели свою либси мне не понятно какие минусы это принесло

Oleg
05.10.2018
17:42:23
нет, вот условно в го изобрели свою либси мне не понятно какие минусы это принесло
если она полностью оттестирована, то не думаю что есть минусы

бинарник больше

Admin
ERROR: S client not available

Oleg
05.10.2018
17:42:40
но, мне кажется это не важно

Just
05.10.2018
18:48:59
кто-то сталкивался с таким код дампом? Program received signal SIGSEGV, Segmentation fault. 0x00007ffff5e05487 in fputc_unlocked () from /usr/lib/libc.so.6 gdb bt #0 0x00007ffff5e05487 in fputc_unlocked () from /usr/lib/libc.so.6 #1 0x000055555560b1ae in std.stdio.File.LockingTextWriter.put!(char).put(char).trustedFPUTC(int, core.stdc.stdio._IO_FILE*) () #2 0x00007ffff77c31ef in std.stdio.File.LockingTextWriter.put!(char).put(char) () from ./lib/libvibe-d_core.so #3 0x00007ffff774c058 in std.range.primitives.doPut!(std.stdio.File.LockingTextWriter, char).doPut(ref std.stdio.File.LockingTextWriter, ref char) () from ./lib/libvibe-d_core.so #4 0x00007ffff774c03c in std.range.primitives.put!(std.stdio.File.LockingTextWriter, char).put(ref std.stdio.File.LockingTextWriter, char) () from ./lib/libvibe-d_core.so #5 0x00007ffff77c3c7b in std.stdio.File.write!(char).write(char) () from ./lib/libvibe-d_core.so #6 0x00007ffff77c3c0f in std.stdio.File.writeln!().writeln() () from ./lib/libvibe-d_core.so #7 0x00007ffff7797eaf in vibe.core.log.FileLogger.endLine() () from ./lib/libvibe-d_core.so #8 0x00007ffff779908a in vibe.core.log.LogOutputRange.finalize() () from ./lib/libvibe-d_core.so #9 0x00005555555f5089 in vibe.core.log.log!(4, "src/main.d", 28, immutable(char)[]).log(immutable(char)[]) () #10 0x00005555555f4f88 in vibe.core.log.logInfo!("src/main.d", 28, immutable(char)[]).logInfo(immutable(char)[]) () #11 0x00005555555e8394 in D main () раніше этот бинарки работал, но однажды упал и больше работать не хочет

Dark
05.10.2018
18:50:30
Небось dmd проапдейтил)

Just
05.10.2018
18:59:19
Небось dmd проапдейтил)
не специально, но общим апрегайдом системы мог... спасибо за наводку

в общем понял, что валится на logInfo("Server started!") из vibe.core.log; но почему - не понял. вроде как с файлами проблема, может прав не хватает

Pavel
05.10.2018
19:25:10
segfault это по любому проблема в компиляторе

Just
05.10.2018
19:27:11
segfault это по любому проблема в компиляторе
если без logInfo собрать, то печатает и к монге конектит. т.е. не может компилятор vibe.core.log внедрить?

Igor
05.10.2018
19:29:16
попробуйте в другой файл логировать

или запустите под strace

Just
05.10.2018
19:30:01
попробуйте в другой файл логировать
честно говоря не знаю куда сейчас логирует, дефолтный стоит. поищу

Google
Just
05.10.2018
19:31:37
или запустите под strace
execve("./client", ["./client"], [/* 20 vars */]) = 0 brk(NULL) = 0x5628875ad000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) в этом проблема видимо, не хватает системных библиотек? хотя наверне нет, почитал, что только для старых актуально. у меня 16.04 убунта

Igor
05.10.2018
19:35:03
не думаю что в этом

оно может просто искать либы по путям

Just
05.10.2018
19:40:01
open("./lib/tls/x86_64/libphobos2.so.0.71", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("./lib/tls/libphobos2.so.0.71", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("./lib/x86_64/libphobos2.so.0.71", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) это может?

Igor
05.10.2018
19:40:08
ну там может быть другая проблема - пермишнсы, запись в закрытый файл, необработка какой-то ошибки… нужно весь трейс посмотреть. и не гарантия что в нем проблема

Just
05.10.2018
19:40:31
этот файл есть, но он и правда не по тем адресам, а просто в ./lib

Just
05.10.2018
19:44:38
Обнови вайб
ок, попробую

пните, пожалуйста, как из сорсов вайба собрать бинарники всех библиотек?

Just
05.10.2018
21:00:24
это dub сам должен делать
какая-то ошибка вылазит и вообще вроде же еще способ есть?

что бы в итоге .so либы получились

Oleg
05.10.2018
21:00:40
ты используешь vibe в проекте, собираешь dub'ом, он распахивает собранные статические либы по своим путям

что бы в итоге .so либы получились
вообще любой проект на dub собрать можно dub build командой

надо находиться в папке с dub.json

Так же можно посмотреть есть ли конфигурация сборки динамических библиотек

это написано может быть в dub.json так же

Just
05.10.2018
21:03:49
ок, спасибо, попробую

Ievgenii
08.10.2018
21:24:40
Уже вторник, а срача все нет...

Страница 706 из 719