
Andrey
23.02.2018
16:09:08

Daniel
23.02.2018
16:09:26
правильно - оно от определения правильного зависит
с моей точки зрения "правильно" - это хорошо структурированный код
чтобы я мог происходящее понять прочитав как можно меньше

Google

Daniel
23.02.2018
16:10:40
а страх перед накладными на вызов функции - это совсем не правильно

Vladimir
23.02.2018
16:10:47
@avquantex Го не про мега скорость
Го для тех силучаев когда хочется быстрее питона )

Andrey
23.02.2018
16:10:55

Daniel
23.02.2018
16:11:17
нет, но это от скромности

Andrey
23.02.2018
16:11:33
по сокрости го в 2 раза медленее си

Daniel
23.02.2018
16:11:35
на самом деле - да, для взрослых процов с кучей памяти

Vladimir
23.02.2018
16:11:35
@avquantex у Го просто есть веселый пожитатель скорости - GC :)

Andrey
23.02.2018
16:11:40
ну в среденм

Vladimir
23.02.2018
16:11:45
там где он просыпается происходит трэш и угар
как впрочем в любом языке с GC

Andrey
23.02.2018
16:12:05
да вроде же говорили про 100мкс

Google

Vladimir
23.02.2018
16:12:13

Daniel
23.02.2018
16:12:15
это пауза
там помимо паузы есть че поделать

Vladimir
23.02.2018
16:12:33
авторы гошечки оптимизировали gc под маленький stop to world

Andrey
23.02.2018
16:12:35
в общем пока мне в моих задачах GC не мешал

Vladimir
23.02.2018
16:12:43
а вот сборка мусора по сути идет в фоне

Andrey
23.02.2018
16:12:59

Vladimir
23.02.2018
16:13:00
итого на краевых случаях (десятки ГБ памяти) gc может жрать больше ресурсов чем приложение

Daniel
23.02.2018
16:13:02

Vladimir
23.02.2018
16:13:13
они давно обещают request oriented gc

Andrey
23.02.2018
16:13:35

Vladimir
23.02.2018
16:13:35
но пока он не случился
ты с джавой и g1 кажется путаешь

Andrey
23.02.2018
16:13:51
в 1,5 кажется

Daniel
23.02.2018
16:13:53

Vladimir
23.02.2018
16:13:58
они в 1.5 переписали все на Го
и уменьшили паузы

Google

Andrey
23.02.2018
16:14:14
даже вьюков про это говорил

Daniel
23.02.2018
16:14:19
не говорил
точно не говорил

Andrey
23.02.2018
16:14:50
Эм.. даже не хнаю что сказать. Неужели я жестоко ошибался?

Daniel
23.02.2018
16:14:50
stop the world делается, и работы ведутся в направлении уменьшения его

Vladimir
23.02.2018
16:15:05
@avquantex там обычный mark-sweep

Daniel
23.02.2018
16:15:10
и он уже довольно маленький

Vladimir
23.02.2018
16:15:12
ничего нового в Го не появилось с момента его создания

Andrey
23.02.2018
16:16:07
кстати кажется понял зачем они проверку сделали.

Vladimir
23.02.2018
16:16:15

Andrey
23.02.2018
16:16:22
чтоыб не идти до 7 байта чтобы потомт поянть что надо паниковать

Vladimir
23.02.2018
16:16:32

Andrey
23.02.2018
16:16:54
оптимизация. Вы не разбрасывайтесь тактами ?

Vladimir
23.02.2018
16:17:04
к тому же она ухудшает ситуации когда все ок

Andrey
23.02.2018
16:17:59
других мыслей у меян нет почему

Vladimir
23.02.2018
16:18:07
ну скорее всего ты прав

Daniel
23.02.2018
16:18:16

Vladimir
23.02.2018
16:18:37

Google

Olzhas
23.02.2018
16:18:58
забавно, с проверкой границ код гораздо медленнее

Daniel
23.02.2018
16:19:06
а?!

Vladimir
23.02.2018
16:19:10

Andrey
23.02.2018
16:19:19
я про вторую часть

Vladimir
23.02.2018
16:19:54
притом у него в отличии от того что написано выше есть шансы быть написанным например на асме

Daniel
23.02.2018
16:20:07
func (littleEndian) PutUint64(b []byte, v uint64) {
// _ = b[7] // early bounds check to guarantee safety of writes below
b[7] = byte(v >> 56)
b[0] = byte(v)
b[1] = byte(v >> ?
b[2] = byte(v >> 16)
b[3] = byte(v >> 24)
b[4] = byte(v >> 32)
b[5] = byte(v >> 40)
b[6] = byte(v >> 48)
}

Admin
ERROR: S client not available

Vladimir
23.02.2018
16:20:14
с каким-нибудь симдом
в Го вроде рудиментарная есть

Daniel
23.02.2018
16:20:47

Andrey
23.02.2018
16:21:08
ониже массив оп разному заполняют
функции бил и литтл

Daniel
23.02.2018
16:21:50

Andrey
23.02.2018
16:23:21
ксттаи предложите оптимизацию для бинари. Если заполнять с конца

Daniel
23.02.2018
16:23:21
и тут до меня дошло

Michael
23.02.2018
16:23:30
по gc такой интересный issue есть https://github.com/golang/go/issues/17503

Google

Michael
23.02.2018
16:23:59
1.11 обещает быть интересной

Daniel
23.02.2018
16:24:25
и тут до меня дошло
это же как раз https://golang.org/src/encoding/binary/binary.go?#L81 и есть!

Andrey
23.02.2018
16:24:30
а 2.0 ещё итереней

Vladimir
23.02.2018
16:24:43
и тут до меня дошло
BenchmarkV1-4 2000000000 0.43 ns/op
BenchmarkV1-4 2000000000 0.56 ns/op
BenchmarkV1-4 2000000000 0.40 ns/op
BenchmarkV1-4 2000000000 0.38 ns/op
BenchmarkV1-4 2000000000 0.40 ns/op
BenchmarkV2-4 2000000000 0.44 ns/op
BenchmarkV2-4 2000000000 0.44 ns/op
BenchmarkV2-4 2000000000 0.38 ns/op
BenchmarkV2-4 2000000000 0.38 ns/op
BenchmarkV2-4 2000000000 0.39 ns/op

Andrey
23.02.2018
16:24:53

Vladimir
23.02.2018
16:24:54
V2 - это оригинальный с _ =
а V1 как модифицированный

Dima
23.02.2018
16:25:02
/leave

Michael
23.02.2018
16:25:29

Andrey
23.02.2018
16:25:52
по этому я и не понял про биг и литтл. Однго вметсто второго нельзя использовать для оптимизации как вы написали. Они по разному массив заполняют.

Daniel
23.02.2018
16:26:12
я написал с подъебкой
но получилось, что сам себя того :)

Andrey
23.02.2018
16:26:22
но я думаю законтрибьютить вашу идею было бы правильным

Daniel
23.02.2018
16:26:51
а вот владимир померял, и, похоже, их вариант быстрее
массив оказывается в кеше, видимо

Andrey
23.02.2018
16:28:05
А как положить краисиво uint64 в слайс?
точнее добавить
в байтовый слайс

Vladimir
23.02.2018
17:05:45