2018年1月14日日曜日

なぜ私達は Python から Go に移行したのか - Frasco

勉強の為に転載しました。
https://frasco.io/why-we-switched-from-python-to-go-19581e27de7c

この記事では、なぜ私達が Python から Go に移行しようと決断したのか、その理由を説明します。(252 kB)



■要約
□なぜ私達が Python から Go に移行しようと決断したのか
□Go は Python より30倍速いです
□Python は素晴らしい言語ですが、serialization/deserialization、ranking そして aggregation のような用途に関して、パフォーマンスがかなり悪いです。私達は、Cassandra がデータ取得に1ミリ秒かかり、 Python がそれをオブジェクトに変換するのにさらに10ミリ秒費やす、というようなパフォーマンス問題にしばしば出くわしました。
□理由3 - 開発者の生産性が高く、いい意味で創造的でないこと
How I Start Go tutorial から持ってきた Go のコードを見てください。(これは素晴らしいチュートリアルで、Go をはじめてみるには良いきっかけでしょう)

package main

type openWeatherMap struct{}

func (w openWeatherMap) temperature(city string) (float64, error) {
   resp, err := http.Get("http://api.openweathermap.org/data/2.5/weather?APPID=YOUR_API_KEY&q=";; + city)
   if err != nil {
       return 0, err
   }

   defer resp.Body.Close()

   var d struct {
       Main struct {
           Kelvin float64 `json:"temp"`
       } `json:"main"`
   }

   if err := json.NewDecoder(resp.Body).Decode(&d); err != nil {
       return 0, err
   }

   log.Printf("openWeatherMap: %s: %.2f", city, d.Main.Kelvin)
   return d.Main.Kelvin, nil
}
[11:38 AM]
□Go はあなたを基本に忠実にしてくれます。他人のコードがとても読みやすくなり、書いてあることがすぐに理解できます。

0 コメント:

コメントを投稿