Daniel
что вы там оптимизировать собрались?..
Anonymous
а под mac gccgo есть?
Не знаю, у меня нет денег на мак 😄
ill-ya
https://github.com/valyala/fasthttp
ill-ya
gramework получается обертка над fasthttp
ill-ya
надо почитать что дает
ill-ya
спасибо
Daniel
если вы пилите api - возьмите swagger для начала
ill-ya
А у кого был опыт gccgo?
ill-ya
установил по ubuntu 16
ill-ya
gccgo-7 memory_profile.go
ill-ya
memory_profile.go:6:26: error: import file ‘github.com/gin-gonic/gin’ not found "github.com/gin-gonic/gin" ^ memory_profile.go:7:15: error: import file ‘http-requests’ not found "http-requests"
ill-ya
а если делать так
ill-ya
go build -complier gccgo-7 memory_profile.go
ill-ya
flag provided but not defined: -complier
ill-ya
echo $GOPATH /home/b/Desktop/Parallels Shared Folders/TestGo
ill-ya
да
ill-ya
в нем есть папка pkg
ill-ya
go build работает отлично
Daniel
я бы начал с удаления пробелов из пути
ill-ya
точнее src
ill-ya
щас копирну папку
ill-ya
тоже самое
Michael
go get http-requests не?
ill-ya
go get сделал чтобы все глобально прокачалось
ill-ya
go build -compiler gccgo memory_profile.go
ill-ya
go build github.com/gin-contrib/sse: : fork/exec : no such file or directory go build github.com/mattn/go-isatty: : fork/exec : no such file or directory`
ill-ya
по всем
ill-ya
а если просто запустить тут же go build github.com/mattn/go-isatty - то билдится
Daniel
коллега, остявте эту затею. вам тут придется первопроходцем быть, мы этим не пользуемся, нам не надо. а вы, похоже, не готовы...
ill-ya
запахало )
ill-ya
хотя не совсем )
ill-ya
Билдится теперь хоть ошибки: (.text+0xee): relocation truncated to fit: R_X86_64_PC32 against `.bss'
Daniel
ну вот это, наверное, привет
Daniel
потому что на самом деле никто не обещал, что все, что понаписано на go будет билдиться gcc
Daniel
более того, оно, скорее всего, не билдится
Daniel
потому, что код на go транслируется в их собственный ассемблер, которого gcc не разумеет
ill-ya
упрощая программу компилируется
ill-ya
с gccgo -O2 прирост в непоторых местах в 10 раз
Taras 🦀
добрый день подскажите пожалуйста как спарсить с куска html - значение (innerHTML) тега по id тоесть найти, к примеру <td id="test">777</td> и получить 777 (уже гуглил, читал https://godoc.org/golang.org/x/net/html только все-равно не понял.. подскажите пожалуйста? )
Taras 🦀
я пока еще даже не смог понять что в примере поменять чтобы найти td с определенным id (только учусь, совсем новенький)
Aleksandr
у ноды есть атрибуты - проверяй есть ли в них id равный твоему
Aleksandr
doc, err := html.Parse(r) if err != nil { // ... } var f func(*html.Node) f = func(n *html.Node) { if n.Type == html.ElementNode && n.Data == "a" { // вот тут делаешь свою магию } for c := n.FirstChild; c != nil; c = c.NextSibling { f(c) } } f(doc)
Anonymous
Нужно искать StartTagToken с атрибутом id и извлечь из него TextToken
Anonymous
if n.Type == html.ElementNode && n.Data == "a" {
Илья
или просто https://github.com/PuerkitoBio/goquery
Илья
:)
Anonymous
:)
тут наше сообщество лишилось новой либы типа "j-thing"
Taras 🦀
if n.Type == html.ElementNode && n.StartTagToken == "td" { for _, a := range n.Attr { if a.Key == "id" { fmt.Println(a.TextToken) break } } }мне так надо?
Anonymous
StartTagToken - это константа в принципе
ill-ya
Нашел проблему
ill-ya
large array segmentation fault
Anonymous
if n.Type == html.ElementNode && n.StartTagToken == "td" { for _, a := range n.Attr { if a.Key == "id" { fmt.Println(a.TextToken) break } } }мне так надо?
попробуй лучше вот этот пример: depth := 0 for { tt := z.Next() switch tt { case ErrorToken: return z.Err() case TextToken: if depth > 0 { // emitBytes should copy the []byte it receives, // if it doesn't process it immediately. emitBytes(z.Text()) } case StartTagToken, EndTagToken: tn, _ := z.TagName() if len(tn) == 1 && tn[0] == 'a' { if tt == StartTagToken { depth++ } else { depth-- } } } }
ill-ya
go видимо делал иначе
ill-ya
gccgo такая ошибка
ill-ya
var ab = [100000000]Data{} и падает
ill-ya
go build все делает хорошо
Anonymous
var ab = [100000000]Data{} и падает
Without regard for memory, the maximum size of an array is limited by the type of integer used to index the array.
ill-ya
Что можно придумать?
ill-ya
ааааа
Anonymous
Если word = 16 то он просто не может создать такой массив, нужно расширить слово до 32 бит хотя бы
分解物質
var ab = [100000000]Data{} и падает
для чего такой большой?
ill-ya
надо (
ill-ya
в общем из-за этого только и не пашет
ill-ya
памяти в виртуалке 4гига
ill-ya
но тогда почему не билдится
ill-ya
если убрать прирост скорости 2x
ill-ya
в целом
ill-ya
все работает
ill-ya
но как бы заставить работать такие большие векторы
ill-ya
+1 может подскажите?
Anonymous
+1 может подскажите?
А какой версии gcc, go?
ill-ya
gcc 7.1 go 1.8.3
ill-ya
думаю памяти не хватает
Anonymous
А Data большой тип? если бы памяти не хватало, ОС бы swap/подкачку заюзала
Anonymous
я думаю дело в размере машинного слова в gcc
Anonymous
65534 эелемента если заработают, а 65536 - нет, то дело в этом