
Ievgenii
05.10.2018
15:17:03
Сейчас освобожусь и гляну

Valeriy
05.10.2018
15:21:49
Это старый очень пример с циклами
На стаковерфлоу полно народу, орущего что java быстрее C. Потом им говорят добавить - O2 или -O3 и сразу становится не быстрее

Google

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

Valeriy
05.10.2018
15:25:25

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

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
И своя реализация 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

Dmitry
05.10.2018
16:50:31

Oleg
05.10.2018
16:50:36

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

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
бинарник больше
но, мне кажется это не важно


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

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

Just
05.10.2018
19:27:11

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

Just
05.10.2018
19:30:01
или запустите под 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 убунта

Google

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

Dark
05.10.2018
19:41:27
Обнови вайб
Потому, что вайб при каждом новом dmd фиксят

Just
05.10.2018
19:44:38
пните, пожалуйста, как из сорсов вайба собрать бинарники всех библиотек?

Oleg
05.10.2018
20:59:20

Just
05.10.2018
21:00:24
что бы в итоге .so либы получились

Oleg
05.10.2018
21:00:40
ты используешь vibe в проекте, собираешь dub'ом, он распахивает собранные статические либы по своим путям
надо находиться в папке с dub.json
Так же можно посмотреть есть ли конфигурация сборки динамических библиотек
это написано может быть в dub.json так же

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

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