Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。
探検
Go language part 1
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2013/10/10(木) 12:04:51.78392デフォルトの名無しさん
2014/11/21(金) 12:20:45.57ID:UnHbl35a 配列にして結合
393デフォルトの名無しさん
2014/11/21(金) 13:47:11.98ID:RKwctBBa SplitしてJoinかな
ベンチマーク取ってみるよアンガと
ベンチマーク取ってみるよアンガと
394デフォルトの名無しさん
2014/11/21(金) 14:09:37.19ID:RKwctBBa BenchmarkSplitJoin 10000000 277 ns/op
BenchmarkReplace 10000000 177 ns/op
こんな感じ
BenchmarkReplace 10000000 177 ns/op
こんな感じ
395デフォルトの名無しさん
2014/11/30(日) 09:07:03.18ID:NdiYUZYS 合コンおーいぇー
396デフォルトの名無しさん
2014/12/02(火) 05:14:09.00ID:Mms1FSAQ インストールしようとしてググってたら、
公式だとtar落として自分で展開してpath通せって書いてあるんだけど
EPEL参照でyumからインスコ出来るっぽい
公式でそっちにしないのは、この方法だとなんか不都合あるんだろうか
公式だとtar落として自分で展開してpath通せって書いてあるんだけど
EPEL参照でyumからインスコ出来るっぽい
公式でそっちにしないのは、この方法だとなんか不都合あるんだろうか
397デフォルトの名無しさん
2014/12/02(火) 07:38:42.44ID:vquYws+a 今は知らないが、俺が apt で入れたときは
go get でシステム領域を汚そうとしたから止めた。
go get でシステム領域を汚そうとしたから止めた。
398デフォルトの名無しさん
2014/12/02(火) 18:04:09.77ID:Mms1FSAQ399デフォルトの名無しさん
2014/12/03(水) 03:59:06.16ID:xemfXL8Z yumからのインスコで使うことにしたけど、
一個めんどくさい点があった
GOROOTを設定しないとbuildとか出来ない
pathにバージョンとか入ってるわけじゃないので
バージョンアップするたびに環境変数修正ってのはなさそうだけど
一個めんどくさい点があった
GOROOTを設定しないとbuildとか出来ない
pathにバージョンとか入ってるわけじゃないので
バージョンアップするたびに環境変数修正ってのはなさそうだけど
400デフォルトの名無しさん
2014/12/04(木) 19:17:39.60ID:FmXLQYZZ 公式はepelじゃないんだから妥当だと思う。
でないとepel自身がパッケージ作れんがな。
でないとepel自身がパッケージ作れんがな。
401デフォルトの名無しさん
2014/12/08(月) 01:06:16.96ID:jJwEDCVJ AngoIMEで書いているで
スマフォでさくさく並列処理楽ちんプログラム書けるとか
BPS時代がきたわ
問題はJKが隣にいないことやw
スマフォでさくさく並列処理楽ちんプログラム書けるとか
BPS時代がきたわ
問題はJKが隣にいないことやw
402デフォルトの名無しさん
2014/12/08(月) 01:23:42.15ID:gpxOhL3D BPSならJSだろう
403デフォルトの名無しさん
2014/12/08(月) 13:00:08.49ID:y0p0oDrX 洋館マソ
404デフォルトの名無しさん
2014/12/10(水) 22:15:28.40ID:3ZzrTcyc ttp://go-tour-jp.appspot.com/#37
--------------------------------
func main() {
m = make(map[string]Vertex)
m["Bell Labs"] = Vertex{
40.68433, -74.39967,
}
m["Bell Labs"].Lat = float64(1) ←
fmt.Println(m["Bell Labs"])
}
--------------------------------
一行加えたら、
cannot assign to m["Bell Labs"].Lat
ってコケるんだけど
mapって別に参照専用ってわけでもない連想配列ですよね?
なんでコケるんでしょうかこれ…
--------------------------------
func main() {
m = make(map[string]Vertex)
m["Bell Labs"] = Vertex{
40.68433, -74.39967,
}
m["Bell Labs"].Lat = float64(1) ←
fmt.Println(m["Bell Labs"])
}
--------------------------------
一行加えたら、
cannot assign to m["Bell Labs"].Lat
ってコケるんだけど
mapって別に参照専用ってわけでもない連想配列ですよね?
なんでコケるんでしょうかこれ…
405デフォルトの名無しさん
2014/12/10(水) 22:38:54.56ID:hVfFOG57 面倒くさいけど、こんな風にするみたい
ptr := m["Bell Labs"]
ptr.Lat = float64(1)
m["Bell Labs"] = ptr
Issue 3117: cannot assign to a field of a map element directly: m["foo"].f = x
https://code.google.com/p/go/issues/detail?id=3117
ptr := m["Bell Labs"]
ptr.Lat = float64(1)
m["Bell Labs"] = ptr
Issue 3117: cannot assign to a field of a map element directly: m["foo"].f = x
https://code.google.com/p/go/issues/detail?id=3117
406デフォルトの名無しさん
2014/12/10(水) 22:47:12.63ID:3ZzrTcyc >>405
私の認識や手順が違うとかじゃなく、ほんとにそのままでは出来ないんですね
でもwork-aroundって書いてるからそのうち直す的な感じなのかな
2年前ってのがあれですがw
ともあれ、ありがとうございます。
私の認識や手順が違うとかじゃなく、ほんとにそのままでは出来ないんですね
でもwork-aroundって書いてるからそのうち直す的な感じなのかな
2年前ってのがあれですがw
ともあれ、ありがとうございます。
407デフォルトの名無しさん
2014/12/11(木) 15:31:26.79ID:HIgp7OEe go listってやっても
can't load package: package .: no buildable Go source files in /home/kido
ってなります
gocodeをgo getでインストールしてあるのですがどうしてgo listで表示されないんですか?
can't load package: package .: no buildable Go source files in /home/kido
ってなります
gocodeをgo getでインストールしてあるのですがどうしてgo listで表示されないんですか?
408デフォルトの名無しさん
2014/12/11(木) 15:49:25.67ID:SBn2bhiW409デフォルトの名無しさん
2014/12/13(土) 12:01:31.39ID:BVSGhnq7 >>404
structは値型だからね
m["unko"]はmに格納されてるVertexのコピーが返される
これに修正加えても反映されないよーっていうエラー
だからそう言う書き方がしたいなら
map[string]*Vertex
って宣言するといい
structは値型だからね
m["unko"]はmに格納されてるVertexのコピーが返される
これに修正加えても反映されないよーっていうエラー
だからそう言う書き方がしたいなら
map[string]*Vertex
って宣言するといい
2014/12/13(土) 12:12:47.84ID:imyzRhSY
>>409
var m map[string]*Vertex
func main() {
m = make(map[string]*Vertex)
m["Bell Labs"] = &Vertex{
40.68433, -74.39967,
}
m["Bell Labs"].Lat = float64(1)
fmt.Println(m["Bell Labs"])
}
これで行けました。ありがとうございます!
便乗で質問なのですが、
var m map[string]*Vertex
mapに関しては個人的に全部これでいいんじゃないかなと思ってしまうのですが
リファレンス型(ポインタ型?)を使うデメリットってあるんでしょうか。
自分で思いつくのは、
値 リファレンス
メリット ? アドレス情報にしかメモリを使わない
デメリット コピー分メモリを食う ソースがやや煩雑に
とう感じなのですが…
var m map[string]*Vertex
func main() {
m = make(map[string]*Vertex)
m["Bell Labs"] = &Vertex{
40.68433, -74.39967,
}
m["Bell Labs"].Lat = float64(1)
fmt.Println(m["Bell Labs"])
}
これで行けました。ありがとうございます!
便乗で質問なのですが、
var m map[string]*Vertex
mapに関しては個人的に全部これでいいんじゃないかなと思ってしまうのですが
リファレンス型(ポインタ型?)を使うデメリットってあるんでしょうか。
自分で思いつくのは、
値 リファレンス
メリット ? アドレス情報にしかメモリを使わない
デメリット コピー分メモリを食う ソースがやや煩雑に
とう感じなのですが…
2014/12/13(土) 13:29:33.21ID:WvyZJyoU
primitive 型の時は困るな…
m = make(map[string]*int)
m["Bell Labs"] = &1
とかできないし…
m = make(map[string]*int)
x := 1
m["Bell Labs"] = &x
とかするのも本末転倒の様な気が
m = make(map[string]*int)
m["Bell Labs"] = &1
とかできないし…
m = make(map[string]*int)
x := 1
m["Bell Labs"] = &x
とかするのも本末転倒の様な気が
2014/12/13(土) 14:08:11.12ID:imyzRhSY
すみませんよくわかっていなかったようです…
type Vertex struct { Hage int }
func main() {
//primitive型 ------
var m map[string]int
m = make(map[string]int)
m["Bell Labs"] = 1
fmt.Println(m)
//中身構造体 ------
var n map[string]*Vertex
n = make(map[string]*Vertex)
n["Bell Labs"] = &Vertex{}
n["Bell Labs"].Hage = 1
fmt.Println(n)
//中身slice ------
var o map[string][]int
o = make(map[string][]int)
o["Bell Labs"] = append(o["Bell Labs"], 1)
fmt.Println(o)
o["Bell Labs"][0] = 2
fmt.Println(o)
}
こんな感じの使い分けですかね(´・ω・`)
sliceはappendでやれば直でokという感じなのかな…
type Vertex struct { Hage int }
func main() {
//primitive型 ------
var m map[string]int
m = make(map[string]int)
m["Bell Labs"] = 1
fmt.Println(m)
//中身構造体 ------
var n map[string]*Vertex
n = make(map[string]*Vertex)
n["Bell Labs"] = &Vertex{}
n["Bell Labs"].Hage = 1
fmt.Println(n)
//中身slice ------
var o map[string][]int
o = make(map[string][]int)
o["Bell Labs"] = append(o["Bell Labs"], 1)
fmt.Println(o)
o["Bell Labs"][0] = 2
fmt.Println(o)
}
こんな感じの使い分けですかね(´・ω・`)
sliceはappendでやれば直でokという感じなのかな…
2014/12/13(土) 14:43:59.47ID:BVSGhnq7
2014/12/13(土) 23:01:44.70ID:imyzRhSY
>>413
遅くなりましたがありがとうございます!
遅くなりましたがありがとうございます!
415デフォルトの名無しさん
2014/12/29(月) 23:22:29.55ID:QuoLDkEA 高階関数ってリフレクションしないと駄目っぽいな
せっかく関数が第一級オブジェクトなのに何か勿体ない
せっかく関数が第一級オブジェクトなのに何か勿体ない
416デフォルトの名無しさん
2015/01/06(火) 02:43:41.06ID:zpgKMgJd mattnさんgo本書いてくんないかなー
417デフォルトの名無しさん
2015/01/06(火) 17:32:14.22ID:M3VR0ni5 俺もmattn本に+1
言語仕様の説明よりもスーパーサンプル集的な書籍が欲しい
言語仕様の説明よりもスーパーサンプル集的な書籍が欲しい
418デフォルトの名無しさん
2015/01/06(火) 21:00:48.30ID:h8AkEaym 誰でもいいから本出してほしい
多少高くてもいいから。できれば一人でなく複数人
多少高くてもいいから。できれば一人でなく複数人
419デフォルトの名無しさん
2015/01/07(水) 09:21:21.81ID:AOiER/0b もう出てるけど、もっと深いのが欲しいのか?
420デフォルトの名無しさん
2015/01/07(水) 14:46:54.67ID:e24S5a9I androidで盛り上がれば本も増えるだろうな
421デフォルトの名無しさん
2015/01/07(水) 19:22:58.91ID:cvGCzuKQ422デフォルトの名無しさん
2015/01/07(水) 23:22:36.07ID:TubS6YKr マトン先生今年はヒツジ年だからなんか出すはず!
423デフォルトの名無しさん
2015/01/08(木) 12:15:26.41ID:r59ZtkkO 配列の最高値とインデックスを返すような多値関数から
最高値だけをAppendしたい場合、一旦変数に受けないと無理?
最高値だけをAppendしたい場合、一旦変数に受けないと無理?
424デフォルトの名無しさん
2015/01/08(木) 16:15:54.59ID:SnsO6Hw4 なぜmattunさんはチンチン丸出しの素っ裸なのか…
425デフォルトの名無しさん
2015/01/08(木) 20:38:46.44ID:PYPv/bx4 >>423
無理やりだけどこんな感じで
package main
import (
"fmt"
)
func _max(list []int) (int, int) {
if len(list) == 0 {
return 0, -1
}
max := list[0]
pos := 0
for i := 0; i < len(list); i++ {
if max < list[i] {
max = list[i]
pos = i
}
}
return max, pos
}
func main() {
arr_1 := []int{1, 10, 3, 4, 5, 6, 7, 8}
arr_2 := []int{100}
arr_2 = append(arr_2, (func(arg ...int) int { return arg[0] }(_max(arr_1))))
fmt.Printf("%v\n", arr_2)
}
無理やりだけどこんな感じで
package main
import (
"fmt"
)
func _max(list []int) (int, int) {
if len(list) == 0 {
return 0, -1
}
max := list[0]
pos := 0
for i := 0; i < len(list); i++ {
if max < list[i] {
max = list[i]
pos = i
}
}
return max, pos
}
func main() {
arr_1 := []int{1, 10, 3, 4, 5, 6, 7, 8}
arr_2 := []int{100}
arr_2 = append(arr_2, (func(arg ...int) int { return arg[0] }(_max(arr_1))))
fmt.Printf("%v\n", arr_2)
}
426デフォルトの名無しさん
2015/01/08(木) 20:48:39.89ID:r59ZtkkO427デフォルトの名無しさん
2015/01/08(木) 23:08:21.81ID:JAYi2dXH 即時関数か
golangでも出来るんやな
golangでも出来るんやな
428デフォルトの名無しさん
2015/02/04(水) 19:19:43.13ID:8Sw6mo5N go getでインストールしたパッケージはGOPATHで指定したパスにインストールされるけどさ
go listっていうのはこのGOPATHにインストールされているパッケージ一覧を表示してくれるってわけじゃないんですか?
$ go list
>can't load package: package .: no buildable Go source files in /home/kidotoyohiko
こうなるんですが
go listっていうのはこのGOPATHにインストールされているパッケージ一覧を表示してくれるってわけじゃないんですか?
$ go list
>can't load package: package .: no buildable Go source files in /home/kidotoyohiko
こうなるんですが
429デフォルトの名無しさん
2015/03/09(月) 12:22:38.99ID:ZcxXoJVE Go言語を勉強し始めたばかりだけど匿名フィールドは構造体名でアクセスできるんだな
気づくのにすこし時間かかった
type Aaa struct {
str1 string
}
func newAaa() *Aaa {
t := new(Aaa)
t.str1 = "str1"
return t
}
func (t *Aaa) Print() {
fmt.Println(t.str1)
}
type Bbb struct {
*Aaa
str2 string
}
func newBbb() *Bbb {
t := new(Bbb)
t.Aaa = newAaa()
t.str2 = "str2"
return t
}
func (t *Bbb) Print() {
t.Aaa.Print()
fmt.Println(t.str2)
}
func main() {
t := newBbb()
t.Print()
}
気づくのにすこし時間かかった
type Aaa struct {
str1 string
}
func newAaa() *Aaa {
t := new(Aaa)
t.str1 = "str1"
return t
}
func (t *Aaa) Print() {
fmt.Println(t.str1)
}
type Bbb struct {
*Aaa
str2 string
}
func newBbb() *Bbb {
t := new(Bbb)
t.Aaa = newAaa()
t.str2 = "str2"
return t
}
func (t *Bbb) Print() {
t.Aaa.Print()
fmt.Println(t.str2)
}
func main() {
t := newBbb()
t.Print()
}
430デフォルトの名無しさん
2015/04/27(月) 03:14:20.43ID:0ybKBVZB http://ideone.com/4EFjar
pop()と同じ動作を想定して, pop1() pop2()をかいてみたんですが
どちらも r=4 になってしまいます
goで式の評価順はどうなってるのでしょうか?
pop()と同じ動作を想定して, pop1() pop2()をかいてみたんですが
どちらも r=4 になってしまいます
goで式の評価順はどうなってるのでしょうか?
431デフォルトの名無しさん
2015/04/27(月) 08:55:25.98ID:SK92dx/y >>430
appendって領域が十分なら上書きしちゃったりするんじゃなかったっけ?
appendって領域が十分なら上書きしちゃったりするんじゃなかったっけ?
432デフォルトの名無しさん
2015/04/27(月) 11:53:03.95ID:0ybKBVZB >>431
上書きされてました ありがとうございます
上書きされてました ありがとうございます
433デフォルトの名無しさん
2015/05/27(水) 08:44:30.80ID:CaoeGQX/ main関数を他の関数の上に持っていくか下に持っていくか迷ってるんだけど
ルールがあったりする?
ルールがあったりする?
434デフォルトの名無しさん
2015/05/27(水) 12:03:24.54ID:KwGlDoiU C(K&R)ならともかくGOじゃないっしょ
無いよね?
無いよね?
435デフォルトの名無しさん
2015/06/03(水) 23:41:10.45ID:WPfxguwe Cじゃねえんだから好きにしろよ
436デフォルトの名無しさん
2015/06/05(金) 22:59:12.97ID:kU15dp2l Cとか書いた事も無いので何で後ろに有るのか不思議に思ってたけど
ググってスッキリした
ググってスッキリした
437デフォルトの名無しさん
2015/06/07(日) 17:29:20.20ID:rVbuZbAc A Tour of Go(日本語版)のフィボナッチ数のExerciseはテストされないのか
438デフォルトの名無しさん
2015/06/10(水) 19:04:40.57ID:vRKJ93PX A Tour od Go 日本語訳が色々辛い
439デフォルトの名無しさん
2015/06/11(木) 20:17:20.73ID:7zT8SS54 go build はカレントディレクトリに実行ファイルを生成
go install は go build に加えて実行ファイルをGOBINに移動させる
って理解であってる?
go install は go build に加えて実行ファイルをGOBINに移動させる
って理解であってる?
440デフォルトの名無しさん
2015/06/18(木) 12:32:46.05ID:UagCHqSk >>439
ttp://jp.techcrunch.com/2015/06/18/20150617google-microsoft-mozilla-and-others-team-up-to-launch-webassembly-a-new-binary-format-for-the-web/
goがクライアントサイドで動くかも?
ttp://jp.techcrunch.com/2015/06/18/20150617google-microsoft-mozilla-and-others-team-up-to-launch-webassembly-a-new-binary-format-for-the-web/
goがクライアントサイドで動くかも?
441デフォルトの名無しさん
2015/06/18(木) 13:02:41.32ID:oefBmuK0 レスやないやん
442デフォルトの名無しさん
2015/06/18(木) 17:54:28.09ID:z2QMHecM >>440
おおそれは面白そう
おおそれは面白そう
443デフォルトの名無しさん
2015/06/19(金) 16:59:13.37ID:fpEnerGj サーバサイドアプリを作ってるんですが、
ファイルの変更を検出して今のプロセスを殺して go run XXX.go を再実行してくれる良いツールないでしょうか?
Ctrl+c して go run XXXX.go とか地味にイライラする
ファイルの変更を検出して今のプロセスを殺して go run XXX.go を再実行してくれる良いツールないでしょうか?
Ctrl+c して go run XXXX.go とか地味にイライラする
444デフォルトの名無しさん
2015/06/19(金) 17:41:22.39ID:fpEnerGj445デフォルトの名無しさん
2015/10/31(土) 18:57:33.63ID:ELtLmf7b DLL作れるようになったのかと思ったらWindowsじゃサポートされてないのね
446デフォルトの名無しさん
2015/11/25(水) 07:15:24.66ID:rJmLSs5J447デフォルトの名無しさん
2015/12/01(火) 23:30:02.07ID:YHNsRt8H http://go-talks.appspot.com/github.com/lestrrat/go-slides/2014-yapcasia-go-for-perl-mongers/main.slide#58
このスライドの struct{} と struct{}{} ってなんですか?
このスライドの struct{} と struct{}{} ってなんですか?
448デフォルトの名無しさん
2015/12/02(水) 08:00:24.78ID:98kWsFh0 struct{}
空の構造体定義
struct{}{}
空の構造体定義&生成
空の構造体定義
struct{}{}
空の構造体定義&生成
450デフォルトの名無しさん
2015/12/04(金) 07:20:04.14ID:codNuEGF GOって全然流行らないね
451デフォルトの名無しさん
2015/12/04(金) 12:12:16.23ID:RqbsZlfd452デフォルトの名無しさん
2015/12/04(金) 13:21:31.35ID:hYxOV08j Rails登場前のRubyくらいの知名度かな
非エンジニアなクライアントにgolangもやってます、と伝えても初耳って人が多いね
技術者ならだいたい聞いたことはあるって帰ってくるけど
もっと流行っても良いんじゃないかとは思うけど、ぐぐれば情報が十分ある程度には使われてるし不自由な状況ではないんだよな
非エンジニアなクライアントにgolangもやってます、と伝えても初耳って人が多いね
技術者ならだいたい聞いたことはあるって帰ってくるけど
もっと流行っても良いんじゃないかとは思うけど、ぐぐれば情報が十分ある程度には使われてるし不自由な状況ではないんだよな
453デフォルトの名無しさん
2015/12/05(土) 02:50:44.50ID:XzVzQBrr ググラビリティが悪い
もうちょい名前を考えて欲しかったな
もうちょい名前を考えて欲しかったな
454デフォルトの名無しさん
2015/12/19(土) 15:53:57.84ID:TV8OiN+s goのEditorで今のおすすめは何かな?
俺の中ではVisualStudioCodeなんですが。
俺の中ではVisualStudioCodeなんですが。
455デフォルトの名無しさん
2015/12/19(土) 23:54:09.03ID:GM3q6wlH sublime textで特に不満ないよ
456デフォルトの名無しさん
2015/12/25(金) 02:25:51.96ID:y60VPA7n goは外部ツール充実してっからどのエディタでも同じレベルで快適だよ。だいたいgo用のパッケージかプラグインあるでしょ。だから好きなエディタ使え
457デフォルトの名無しさん
2015/12/31(木) 20:19:55.18ID:BO+mMVFR >> 455
IntelliJがいいよ。
はてなの中の人もオススメしてた。
IntelliJがいいよ。
はてなの中の人もオススメしてた。
458デフォルトの名無しさん
2015/12/31(木) 20:20:32.48ID:BO+mMVFR 上のレス >> 454 だった
459デフォルトの名無しさん
2015/12/31(木) 23:57:36.14ID:0xf2UWz7 来年はgo言語もちょっと盛り上がるといいね
460デフォルトの名無しさん
2016/01/01(金) 13:12:47.05ID:E/hak+Py マ イ ン ド コ ン ト ロ ー ル の手法
・沢山の人が、偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト
10人に一人は カ ル ト か 外 国 人
「ガ ス ラ イ テ ィ ン グ」 で 検 索 を !ll
・沢山の人が、偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト
10人に一人は カ ル ト か 外 国 人
「ガ ス ラ イ テ ィ ン グ」 で 検 索 を !ll
461デフォルトの名無しさん
2016/01/02(土) 15:11:34.83ID:dDeNCcj5 ・沢山の人が、偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
消費税ですね判ります
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
消費税ですね判ります
462デフォルトの名無しさん
2016/01/06(水) 23:14:14.44ID:4CIgSJD1 オライリーから本出るね
463デフォルトの名無しさん
2016/01/07(木) 00:14:59.45ID:0znhgkz2 どうせなら The Go Programming Language を翻訳してくれればいいのに
464デフォルトの名無しさん
2016/01/07(木) 00:45:00.91ID:wyILSx5n 今年3月に翻訳本が出るんじゃなかったっけ
465デフォルトの名無しさん
2016/01/07(木) 12:35:59.31ID:N5HH13xV 英語版だと5ドルで買えるから英語版読んだら。
466デフォルトの名無しさん
2016/01/13(水) 09:40:10.12ID:LriSB9Er Goの性能を測ってみたいと思いましてね
構成はこう
(1) Win10 Postgres Apache PHP5.6
PDO, prepare, execute, print
(2) Win10 Postgres GO
sql.Open, Query, Next(Fprintf)
テーブルから1000行6カラム読んでプリント
SQL文は同じ、Select * From TestTable Limit 1000
というテストを、負荷テストツールのpylot1.26でやってみたんすよ
結果
(1) 750リクエスト/分 80msec/一回
(2) 706リクエスト/分 84msec/一回
PHPはフレームワークも何も無しで10行くらい
Goも通ってるのは10行くらいなんですが
9割方データベースだろ、って状態ではこんな感じでしょうかね
構成はこう
(1) Win10 Postgres Apache PHP5.6
PDO, prepare, execute, print
(2) Win10 Postgres GO
sql.Open, Query, Next(Fprintf)
テーブルから1000行6カラム読んでプリント
SQL文は同じ、Select * From TestTable Limit 1000
というテストを、負荷テストツールのpylot1.26でやってみたんすよ
結果
(1) 750リクエスト/分 80msec/一回
(2) 706リクエスト/分 84msec/一回
PHPはフレームワークも何も無しで10行くらい
Goも通ってるのは10行くらいなんですが
9割方データベースだろ、って状態ではこんな感じでしょうかね
467デフォルトの名無しさん
2016/01/13(水) 11:46:07.30ID:EwraTGVM Win10使ってる時点でお察し
468デフォルトの名無しさん
2016/01/13(水) 12:08:33.96ID:uMvtIS1u 横からだけどこういう比較するときはVirtualBoxあたりでLinux環境立てたほうが良いんかね?
469デフォルトの名無しさん
2016/01/13(水) 14:35:53.26ID:CipOufW1 Go「Linuxなら…本気出す」
別の場所でちょい古のDebianで試してみた所
(1)PHP 463リクエスト/分 129msec/回
(2)Go 410リクエスト/分 145msec/回
やっぱりGoの方がわずかに遅いっぽい…
別の場所でちょい古のDebianで試してみた所
(1)PHP 463リクエスト/分 129msec/回
(2)Go 410リクエスト/分 145msec/回
やっぱりGoの方がわずかに遅いっぽい…
470デフォルトの名無しさん
2016/01/13(水) 14:58:45.80ID:CipOufW1 PasteBinに貼って置くので「ここやがな」てのが有れば教えてくれください
ttp://pastebin.com/kQBFhVQp
ttp://pastebin.com/6bACps6v
ttp://pastebin.com/kQBFhVQp
ttp://pastebin.com/6bACps6v
471デフォルトの名無しさん
2016/01/13(水) 15:54:22.06ID:EwraTGVM 糞はfmtじゃね
472デフォルトの名無しさん
2016/01/13(水) 17:13:31.80ID:jmhOlm9C part1 て....人気ないの?それとも2ch に書き込むような品性下劣な人間が少ないってこと?
473デフォルトの名無しさん
2016/01/13(水) 17:23:19.96ID:7cbOl3Dp Tiobe だと 50位以内に入ってないぞ
まあキッシュイーターが群がるような代物でもないけど
まあキッシュイーターが群がるような代物でもないけど
474デフォルトの名無しさん
2016/01/13(水) 18:05:20.91ID:EwraTGVM >>472
前にも Go スレは何度か建ってたのでこれが part1 というのは間違い
前にも Go スレは何度か建ってたのでこれが part1 というのは間違い
475デフォルトの名無しさん
2016/01/13(水) 19:30:58.60ID:cjoN9klk 言語仕様が安定してるから話すことないとかかな。
Swiftなんかガンガン変更しまくりで試行錯誤感が半端ない。
goにジェネリクスが付いたらまた変わるのかも。
正直メタプログラミングが弱いのが辛い。ちょっとしたツール系を作るのはいいけど、
Webアプリをこれで作りたいとあんまり思わないだよなぁ
Swiftなんかガンガン変更しまくりで試行錯誤感が半端ない。
goにジェネリクスが付いたらまた変わるのかも。
正直メタプログラミングが弱いのが辛い。ちょっとしたツール系を作るのはいいけど、
Webアプリをこれで作りたいとあんまり思わないだよなぁ
476デフォルトの名無しさん
2016/01/13(水) 22:56:09.25ID:jmhOlm9C なるほど。まあ罵詈雑言の応酬より過疎ってた方が読みやすくてありがたい
477デフォルトの名無しさん
2016/01/13(水) 23:22:36.01ID:Me1xU7va PDOはネイティブ呼び出しだから速いよ
478デフォルトの名無しさん
2016/01/14(木) 03:24:09.60ID:byr4bFjT >>475
webアプリではないけど、GAE/goをモバイルバックエンドに使ったらスケール悩まず書けて素敵なんだけどな
最近ならSPAでも便利だろう
小規模サービスなんで恐縮だが個人的には安く上がってると思ってる
ただそういう向きで価値見出す人はすでにAWSに取られちゃってる印象だよね
Datastoreを高いとは言わないけど落とし穴が多いとは思うし
goでwebやるならGAEも是非とは言いたい
webアプリではないけど、GAE/goをモバイルバックエンドに使ったらスケール悩まず書けて素敵なんだけどな
最近ならSPAでも便利だろう
小規模サービスなんで恐縮だが個人的には安く上がってると思ってる
ただそういう向きで価値見出す人はすでにAWSに取られちゃってる印象だよね
Datastoreを高いとは言わないけど落とし穴が多いとは思うし
goでwebやるならGAEも是非とは言いたい
479デフォルトの名無しさん
2016/01/14(木) 03:40:41.70ID:UUuhE8Rb >>470
自己メモレス
Fprintf(w, "書式", 変数)をやめる
Fprint(w, r.a + ":" + r.b ...
その場で一度に文字列連結、にすると2%くらい速くなる模様ですぞ
こうするとやってることはPHPとほとんど同一で、差も微粒子レベルで存在になるかな
自己メモレス
Fprintf(w, "書式", 変数)をやめる
Fprint(w, r.a + ":" + r.b ...
その場で一度に文字列連結、にすると2%くらい速くなる模様ですぞ
こうするとやってることはPHPとほとんど同一で、差も微粒子レベルで存在になるかな
480デフォルトの名無しさん
2016/01/14(木) 10:38:57.14ID:YBLBbkKl >>478
手軽にwebAPIサーバーが書けるフレームワークって何が便利なの?
echo?gin?そろそろデファクトスタンダードが出てほしい。
最近Elixir+phonix触ってるんだけど、エラー時にプロセス再起動する機能が組み込んであるのが便利そう。
goでデーモン書くのって決まりきった書き方もないみたいだし、
いろいろ下回りを自前で準備する感じがするんだけど、、、
手軽にwebAPIサーバーが書けるフレームワークって何が便利なの?
echo?gin?そろそろデファクトスタンダードが出てほしい。
最近Elixir+phonix触ってるんだけど、エラー時にプロセス再起動する機能が組み込んであるのが便利そう。
goでデーモン書くのって決まりきった書き方もないみたいだし、
いろいろ下回りを自前で準備する感じがするんだけど、、、
481デフォルトの名無しさん
2016/01/14(木) 19:16:39.15ID:MVoyv7BA >>479
Fprintf も止めればもっと速くなる
Fprintf も止めればもっと速くなる
482デフォルトの名無しさん
2016/01/14(木) 21:11:50.22ID:x8stlI1n483デフォルトの名無しさん
2016/01/14(木) 21:28:59.92ID:eYypgRpr484デフォルトの名無しさん
2016/01/15(金) 23:01:47.93ID:27wkGJB0 1.5.3ってセキュリティfixだけですか?
milestoneのは入っているんでしょうか。
milestoneのは入っているんでしょうか。
485デフォルトの名無しさん
2016/01/16(土) 05:56:46.68ID:2dhmjbRf >>482
おっ、どんなだろ予約しておこう
おっ、どんなだろ予約しておこう
486デフォルトの名無しさん
2016/01/25(月) 00:44:23.45ID:MxjMVzG6 Goで素数判定をエラトステネスのふるいにして書いてみたけどrubyのprimeライブラリより遅かった
Goってあんまり速くないの?教えてエロい人
Goってあんまり速くないの?教えてエロい人
487デフォルトの名無しさん
2016/01/25(月) 00:54:54.11ID:11Jcfjfr Go のバージョンと実際に書かれたコードが分からんので何とも言えない
488デフォルトの名無しさん
2016/01/25(月) 01:16:17.48ID:MxjMVzG6489デフォルトの名無しさん
2016/01/25(月) 01:48:00.41ID:11Jcfjfr $ ruby --version
ruby 2.2.3p173 (2015-08-18) [i386-linux-gnu]
$ time { ruby -e 'require "prime";print Prime.take(10000)' > /dev/null; }
real 0m0.405s
user 0m0.400s
sys 0m0.008s
↓このコードをローカルにコピーして、
http://play.golang.org/p/XXiTIpRBAu
const N = 104740 に変更してビルド・実行。
$ go version
go version devel +4f40182 Sat Jan 23 01:28:06 2016 +0000 linux/386
$ go build prime.go
$ time { ./prime > /dev/null; }
real 0m0.064s
user 0m0.048s
sys 0m0.016s
ruby 2.2.3p173 (2015-08-18) [i386-linux-gnu]
$ time { ruby -e 'require "prime";print Prime.take(10000)' > /dev/null; }
real 0m0.405s
user 0m0.400s
sys 0m0.008s
↓このコードをローカルにコピーして、
http://play.golang.org/p/XXiTIpRBAu
const N = 104740 に変更してビルド・実行。
$ go version
go version devel +4f40182 Sat Jan 23 01:28:06 2016 +0000 linux/386
$ go build prime.go
$ time { ./prime > /dev/null; }
real 0m0.064s
user 0m0.048s
sys 0m0.016s
490デフォルトの名無しさん
2016/01/25(月) 02:28:15.33ID:MxjMVzG6 >>489 thx
それぐらいの桁数だと自分の環境でもgoのコードのが速いんだけど、桁数増えると圧倒的に負けるようになる
というかgoが時間かかりすぎる
104700000が素数かどうかの判定の時点ですでに負けてる
$ go version
go version go1.5.1 darwin/amd64
$ time ./prime
(結果略)
0.38s user 0.01s system 98% cpu 0.395 total
$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
$ time tuby -e 'require "prime"; p 104700000.prime?'
(結果略)
0.13s user 0.09s system 86% cpu 0.254 total
goコード: http://play.golang.org/p/1y7lrBML1-
それぐらいの桁数だと自分の環境でもgoのコードのが速いんだけど、桁数増えると圧倒的に負けるようになる
というかgoが時間かかりすぎる
104700000が素数かどうかの判定の時点ですでに負けてる
$ go version
go version go1.5.1 darwin/amd64
$ time ./prime
(結果略)
0.38s user 0.01s system 98% cpu 0.395 total
$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
$ time tuby -e 'require "prime"; p 104700000.prime?'
(結果略)
0.13s user 0.09s system 86% cpu 0.254 total
goコード: http://play.golang.org/p/1y7lrBML1-
491デフォルトの名無しさん
2016/01/25(月) 08:54:26.29ID:11Jcfjfr そんなに遅いかな?
x86_64 環境で Prime.take(10000000) をやってみたんだけど(10^7)、
$ ruby --version
ruby 2.2.3p173 (2015-08-18) [x86_64-linux-gnu]
$ go version
go version devel +970ce1c Sun Jan 24 16:07:30 2016 +0000 linux/amd64
ruby: 0m25.204s
golang: 0m5.902s
となった。prime? メソッドについては後で ruby のソースコードを見てみる
x86_64 環境で Prime.take(10000000) をやってみたんだけど(10^7)、
$ ruby --version
ruby 2.2.3p173 (2015-08-18) [x86_64-linux-gnu]
$ go version
go version devel +970ce1c Sun Jan 24 16:07:30 2016 +0000 linux/amd64
ruby: 0m25.204s
golang: 0m5.902s
となった。prime? メソッドについては後で ruby のソースコードを見てみる
492デフォルトの名無しさん
2016/01/25(月) 09:30:52.61ID:11Jcfjfr ここは、
for i := 3; float64(i) < math.Sqrt(float64(n)); i += 2 {
flg = true
for _, j := range primes {
if int64(i) % j == 0 { flg = false }
}
if flg == true { primes = append(primes, int64(i)) }
}
こうすべきなんじゃ?
for i := 3; float64(i) < math.Sqrt(float64(n)); i += 2 {
flg = true
for _, j := range primes {
if n%j == 0 { return false } // 追加
if int64(i)%j == 0 { flg = false }
:
そりゃ n までの素数を全部計算してからチェックしたら遅いわな
for i := 3; float64(i) < math.Sqrt(float64(n)); i += 2 {
flg = true
for _, j := range primes {
if int64(i) % j == 0 { flg = false }
}
if flg == true { primes = append(primes, int64(i)) }
}
こうすべきなんじゃ?
for i := 3; float64(i) < math.Sqrt(float64(n)); i += 2 {
flg = true
for _, j := range primes {
if n%j == 0 { return false } // 追加
if int64(i)%j == 0 { flg = false }
:
そりゃ n までの素数を全部計算してからチェックしたら遅いわな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★2 [ぐれ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
- 広島・廿日市、おこめ券配布せず 全市民に3000円現金給付へ [どどん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- 維新議員、キャバクラマネー返金へ→「今回は返金する」「ポケットマネーでやるには限界がある」 [834922174]
- 【実況】博衣こよりのえちえちチーズケーキを仕込み(雑談あり)🧪
- 【ろんりの教室】高市早苗、既に詰み。レーダー問題で中国と開戦しない場合支持者が弱腰だと離れ、開戦したら戦争は秒で負ける。QED [517791167]
- 朝日新聞記者「中国軍のレーダー照射はこめかみに銃を突きつけられたのと同じ。僕なら反撃して撃墜してる」高市 [931948549]
- 野党が“おこめ券”追及 高市早苗「鈴木農水大臣がお米券大好きなんよ」😹 [817148728]
- 日本人の主食、小麦(パスタ、パン、うどん)になる 米食ってる奴は非国民 わしゃうろんがええよ [402859164]
