Help us understand the problem. What is going on with this article?

Go言語の環境構築をして、PHPのバブルソートの実行速度を検証してみた

More than 1 year has passed since last update.

ユアマイスターアドベントカレンダー2018 の16日目の記事です。

はじめに

最近よく耳にすることが多いGo言語。仕事ではPHPばかり触っていますが、個人的Go言語に興味があったので、環境構築と軽く触れてみました。

環境構築

Goのインストール

ここからインストールできるので、wgetで落とします。

$ wget https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz

展開

$ tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz

パスを通す

$ export PATH=$PATH:/usr/local/go/bin
$ export GOPATH=$HOME/go
$ export PATH=$PATH:$GOPATH/bin

Hello World

ソースコード

hello.go
package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

実行

$ go run hello.go
hello, world

コンパイルして実行

$ go build hello.go
$ ./hello
hello, world

一応、環境ができました。

チュートリアル

公式でチュートリアルを提供しています。環境構築しなくてもブラウザ上でコーディングできます。ここで文法など簡単に勉強しました。

処理速度比較

現在、業務で使用しているPHPとGoで処理速度がどれくらい異なるか比較してみました。
比較に使用したのはバブルソートです。

Go言語のソースコード

sort.go
func main() {
    var array [10000]int

    for i := 0; i < len(array); i++ {
        array[i] = rand.Intn(10000)
    }

    for i := 0; i < len(array); i++ {
        for j := len(array) - 1; j > i; j-- {
            if array[j] < array[j - 1] {
                tmp := array[j]
                array[j] = array[j -1]
                array[j - 1] = tmp
            }
        }
    }
}

PHPのソースコード

sort.php
<?php
    $array = [];

    for ($i = 0; $i < 10000; $i++) {
        $array[$i] = rand(0, 10000);
    }

    for ($i = 0; $i < 10000; $i++) {
        for ($j = 10000 - 1; $j > $i; $j-- ) {
            if ($array[$j] < $array[$j -1]) {
                $tmp = $array[$j];
                $array[$j] = $array[$j -1];
                $array[$j -1] = $tmp
            }
        }
    }
?>

結果

言語 実行速度[秒]
Go言語 0.17
PHP 2.36

まとめ

処理速度はGo言語の圧倒的に速かったです。
また、文法がシンプルだったので、コーディングが楽でした。
今後、もっと深いところまで勉強してAPIサーバーとか作ってみたいと思います。

yourmystar
サービス産業のIT化プラットフォーム「ユアマイスター」と大切なものをもっと大切にするメディア「ユアマイスター スタイル」を運営するスタートアップです。
http://corp.yourmystar.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした