2017-12-30 70 views
0

私は問題が発生した後、 'go run> filename <'を実行するたびに実行に多くの時間がかかります。Golang - go実行に時間がかかります

私はこのような単純なプログラムでそれを試してみました:

package main 

import "fmt" 

func main() { 
    fmt.Println("Output") 
} 

そして、それは結果をプリントアウトするのに約18秒かかりました。

この問題の原因は何ですか?

私は途中で窓に座っています。

+0

これはおそらくビルドの依存関係です。あなたのパッケージとその依存関係を構築するには、最初に 'go install'を試してみてください。その後、「実行」ははるかに速くなるはずです。 – Marc

+0

それを試してみましたが、そのあとで「実行」を実行するたびに、ソースコードにどのような変更を加えても、同じ出力が生成されるか、再コンパイルすると実行が長くなります。 – OhMad

+0

特定の行の実行にどれくらいの時間がかかりますか?たぶんあなたはどこに問題があるか見るためにタイマーを追加することができます。(https://coderwall.com/p/cp5fya/measuring-execution-time-in-go) – mayo

答えて

2

$ go runコマンドは常に、それが実行されるたびに、一時的なバイナリファイルにコードを遵守し、それを実行し、事前に

感謝。あなたは依存関係に別途として.aファイルをコンパイルします$ go build -i main.goを行うことができ、この一周する

は、その後$ ./mainでそれを実行(私はこれを推測している、それが依存関係を構築するために時間がかかるため、最長かかる部分である)、および各実行はより速くなる必要があります$ go run

$ go get -u ./...を実行してすべてのdepsを更新し、ツールチェーンが互換性のないバージョンを検出した場合に-xフラグを付けてビルドすることもできます。

$ go installは、一時ディレクトリにコマンドを作成し、$ GOPATH/binに移動して、パス$ mainなしで実行できるようにします。

コードが変更された場合は、最後の2つのコマンドで再構築/再インストールが必要です。

+0

これはちょっと役立つようです。しかし、ビルドの最初の実行でコードが遅くしか実行されないことがわかりました。その理由は何ですか? – OhMad

+0

を実行したりバイナリを実行したりしますか? –

+0

と 'go run'。プログラムを変更して一度実行した後、コードが変更されないと、「実行する」が迅速に行われます。私は実際にいくつかのCコードを実行して同じことを試み、まったく同じ動作を発見したので、 'go'はこの場合問題ではないかもしれません... – OhMad

関連する問題