@proGO

Страница 1398 из 1674
Olzhas
26.04.2018
07:04:09
или расте

или плюсах

Olzhas
26.04.2018
07:04:30
или плюсах
или луа

Google
Maxim
26.04.2018
07:06:42
log.Fatal помог 2018/04/26 07:04:59 listen tcp: lookup = : no such host
удобная штука да еще могу посоветовать сделать грейсфулшатдаун, у меня вот так сделано: // starting web server log.Println("Starting web server...") Server := http.Server{Addr: ":80"} go func() { log.Fatal(Server.ListenAndServe()) }() // graceful shutdown signalChan := make(chan os.Signal, 1) signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM) <-signalChan log.Println("Shutdown signal received, exiting...") Server.Shutdown(context.Background())

Александр
26.04.2018
07:09:55
O_o

я конечно может и ночь не спал

но

func BenchmarkVar(b *testing.B) { var testString string for i := 0; i < b.N; i++ { testString = testTwo() } } func BenchmarkValue(b *testing.B) { var testString string for i := 0; i < b.N; i++ { testString = test() } } func test() string { return "test" } func testTwo() string { var testVar = "test" return testVar }

почему ругается то на testString declared and not used

O_o

просто o_O

Александр
26.04.2018
07:16:28
ну я так побоялся что не выделит память вообще

ради оптимизации

Google
Olzhas
26.04.2018
07:16:52
Александр
26.04.2018
07:17:09
я не совсем понимаю почему мой пример не работает O_o

и ide ругается

Olzhas
26.04.2018
07:17:33
var testString string func BenchmarkVar(b *testing.B) { var r string for i := 0; i < b.N; i++ { r = testTwo() } testString = r } func BenchmarkValue(b *testing.B) { var r string for i := 0; i < b.N; i++ { r = test() } testString = r }

Александр
26.04.2018
07:18:31
может быть ты имел введу за тушкой

но я делаю и оно что-то вообще не показывает по памяти ничего

BenchmarkVar-4 2000000000 1.08 ns/op 0 B/op 0 allocs/op BenchmarkValue-4 2000000000 1.08 ns/op 0 B/op 0 allocs/op

Александр
26.04.2018
07:23:57
но меня больше волнует почему переменную нельзя объявнить в теле функции

это бред какой то

вот тут легко сделали - https://github.com/cornelk/go-benchmark/blob/master/parameter_test.go

Olzhas
26.04.2018
07:24:36
там же используется

а в твоих тестах нет

Alexey
26.04.2018
07:25:29
почему ругается то на testString declared and not used
потому что значение только присваивается, и нигде не используется

Александр
26.04.2018
07:25:36
func BenchmarkTestTwo(b *testing.B) { var testString string for i := 0; i < b.N; i++ { testString = test() } }

а в смысле тест стринг нигде не вызывается?

Alexey
26.04.2018
07:26:09
Йеп

Google
Александр
26.04.2018
07:26:20
но бред же, приваиванием я уже "потрогал ее"

Alexey
26.04.2018
07:26:34
ты положил значение в память ,а потом его нигде не брал

Го считает, что это лишнияя операция

Потрогать - это вот так сделать в конце: _ = testString

Александр
26.04.2018
07:27:39
да мистика

Alexey
26.04.2018
07:27:39
или testString = testString

Александр
26.04.2018
07:27:46
или все такие надо спать ночью O_o

Alexey
26.04.2018
07:27:47
где же мистика?

Он говорит, нафиг тебе переменную объявлять, если ты ей не пользуешься? только память тратить да процессорные такты

Александр
26.04.2018
07:28:30
на самом деле он бесит

Alexey
26.04.2018
07:28:36
Он думает, скорее всего программист ошибся, скорее всего он хотел потом это значение использовать и проебался

Александр
26.04.2018
07:28:43
иногда надо часть кода закоментарить побыстрому

Александр
26.04.2018
07:28:50
и там начинается

"ой импорты лишние" "ой переменная не используется"

Olzhas
26.04.2018
07:30:32
иногда надо часть кода закоментарить побыстрому
и оставить будущим поколениям, ага

Alexey
26.04.2018
07:31:12
и оставить будущим поколениям, ага
импорты лишние убиваются goimports'ами по сохранению файлика

(не на то ответил, сорри)

Александр
26.04.2018
07:32:03
да причем тут поколениям

для отладки

Olzhas
26.04.2018
07:32:20
Google
Александр
26.04.2018
07:32:39
обычно пока проблему ищешь, быстро сохранения в бд комментаришь что быне клал туда ничего :)

но иногда такие "каскады" пустых переменных

Roman
26.04.2018
07:33:56
подскажите, почему не работает этот код buf, _ := ioutil.ReadAll(request.Body) readerPrint := ioutil.NopCloser(bytes.NewBuffer(buf)) reader := ioutil.NopCloser(bytes.NewBuffer(buf)) fmt.Println("Request body : ", readerPrint) request.Body = reader

Admin
ERROR: S client not available

Alexey
26.04.2018
07:34:53
Алсо, вычитка из readerPrint прочитает всё из buf, и второму reader'у ничего не останется

Roman
26.04.2018
07:36:18
а что он должен делать?
читать реквест боди, печатать его, потом продолжать выполнение DefaultTransport

Alexey
26.04.2018
07:36:35
читать реквест боди, печатать его, потом продолжать выполнение DefaultTransport
тогда потому что он уже всё вычитал, когда печатал

надо копировать buf целиком

Roman
26.04.2018
07:36:55
Roman
26.04.2018
07:37:49
если я убираю этот кусок и не трогаю боди, все работает

runtime error: invalid memory address or nil pointer dereference

Alexey
26.04.2018
07:38:59
Roman
26.04.2018
07:39:33
это на какую строку?
buf, _ := ioutil.ReadAll(request.Body)

Alexey
26.04.2018
07:40:08
buf, _ := ioutil.ReadAll(request.Body)
а запрос там точно не nil?

Добавьте проверку перед ней)

if request == nil { log.Fatal("AAAA") }

Google
Roman
26.04.2018
07:42:08
request.Body только. запрос приходит, но без body

Alexey
26.04.2018
07:42:52
nil . спасибо
ну и печатать попроще можно, не делать новый буфер, а просто fmt.Printf("req: %s", string(buf))

Andrew
26.04.2018
07:44:10
Лишний раз убежадюсь в вашей правоте. Что быстрее самомму тест написать. Чем спрашивать.
https://deferpanic.com/blog/understanding-golang-memory-usage/ может вам поможет эта статья

Александр
26.04.2018
07:45:29
пишет вообще типо память не выделялась O_o

Alexandr
26.04.2018
07:52:18
Читаю книгу "язык программирования GO" Кернигана, в 8 главе про горутины и чаны автор говорит что параметры программы необходимо передать через горутину что бы не было взаимоблокировки основной горутины(main) и вспомогательных. Можеть объяснить как тут может произойти взаимоблокировка если в чан добавлять не в го-подпрограмме https://github.com/adonovan/gopl.io/blob/master/ch8/crawl1/findlinks.go#L39

Mykyta
26.04.2018
08:27:37
почему ругается то на testString declared and not used
Чтобы компилятор в бенчмарке не оптимизировал ничего, хранить надо в глобальной переменной

Andrey
26.04.2018
08:38:56
скорее всего - расход будет идентичен
Написал тест. Интересные результаты получились. С return заниммает меньше памяти и бенчмарк быстрее при возврате uint32. При возврате int размер кода одинаковый в обоих вариантах. Свитч из 1,5тыс значений получился 30кб. Примерно 16 байт на один кейс. Кейс тупо принимает uint16 отдаёт uint32 или uint64  (во втором тесте). Ещё момент Я ожидал увеличение кода в два раза при переходе на uint64. Но его нет. Разница в 200байт. Или компилятор оптимизирует и всё переводит в uint32 или не оптимизирует и всё держит в uint64. надо смотреть ассемблерный листинг, но уже не буду. Я делаю вывод в пользу return ну и бездумно int, uint64 и int64 не использовтаь там где не надо.

Хотя наврное стоит в асемблере покопаться. Потому что это не порядок. Почему 8 байтные константы занимают столько же сколько и 4 байтные

Daniel
26.04.2018
08:43:51
Потому, что память выделяется блоками

Andrey
26.04.2018
08:44:13
Потому, что память выделяется блоками
я сейчас о размере исполняемого файла а не озу

а.. понял

может быть

Эот можно проверить если увеличить размер свитча раз в 100, чтоыб блочность на этом фоне не играла роли

Daniel
26.04.2018
09:03:09
например

Страница 1398 из 1674