FC2ブログ

名もなき黒猫の散歩道

MENU

続・言葉の壁

こんにちは黒猫です。前回の記事を書いてから、C++を主に勉強していたのですが、「C#の方が汎用性高いですよ」というアドバイスを受け、今はC#をメインに勉強しています。
(C++のメモリの扱いが意味わからなくて挫折したなんて一言も言ってませんからね)


C#は、Microsoftが2000年頃に開発したプログラミング言語です。"C"と付くだけあって、C/C++をもちろん踏襲してはいるのですが、どちらかというと、C/C++よりもJavaという言語によく似ていると言われます。開発元がMicrosoftなだけあって、Windows用のアプリケーションの作成には今でもかなり用いられています。昔はWindows“でしか”動かない印象が強かったC#ですが、今ではMacやLinuxでも使われるように進化してきています。

一方、Appleは昔から、Objective-Cという言語を用いて開発を行ってきていました。しかし、2014年にAppleも新しいプログラミング言語を開発しました。それがSwiftと呼ばれる言語です。少し前のiPadが公表された時に「子供でもプログラミングを学べる」という謳い文句で、“Playground”というアプリが公表されました。このPlaygroundはまさに、Swiftで動いています。黒猫がプログラミングに興味を持つきっかけになったのも、実はこのPlaygroundです。

まぁなんでこんなプログラミング言語の紹介をしたかというと、「結局どれが速いんだろう」というのが知りたくて、上記の言語を試してみたので、それをお見せしたかったからです。いわゆる自己満足ですね 笑

やったことは、前回の記事と全く同じです(1億回の足し算に要する時間を比較)。
というわけで結果に移りましょう!刮目せよ!
(Python3とC++も計り直しました)
Fig1_180214.png ぱ、Python遅すぎるやろ。。。

Python以外がもう見えなくなってしまいそうです 笑

ちなみにPythonは少し前にPython2からPython3へ進化を遂げたので、
今回はその2つの比較もしてみたのですが。。
なんで2より3の方が遅いんや!?
完全にPythonだけに蛇足なことがあったのかもしれません 笑
(注:pythonとは本来ヘビの一種です)

Python2に1点だけ30秒超えがありますが、これはなぜか何回やり直しても出ます。
反復処理で10回、1億回の足し算を計算させているのですが、
その1回目だけ、なぜか時間が延びる傾向がありました。
(たまに2,3秒しか延びないこともあるのですが、それでも2回目以降より遅い)
何なのでしょうね、1回目は色々と初期化するから遅くなるのかな?


さて、見えにくい残りの5本を拡大してみましょう!
Fig2_180214.png  
C#が一番速くて、その次にCおよびC++、その次にSwift_1、Swift_2(違いは後述)という結果になりました。

CやC++は速いとの評判が強いので、C#の方が速かったのは意外でした。CやC++のコードの書き方が悪かったのかもしれません。それか、この2つはコンパイル言語なので、コードを別ファイルに書き換える(コンパイルする)ために別のツールを使うのですが、もしかしたらそのツールの性能の差が出ているのかも知れませんね(いかにそのツールが機械にとって読みやすい物を書いているかどうか、ということです)。

この中でSwiftは唯一コンパイルしてもしなくても使える言語です。Swift_1はコンパイル無し、Swift_2はコンパイルありで実験してみたのですが、予想外にコンパイルが無い方が速いという結果になりました。何でなんだろ。。Swiftは今回のためにちょこっとだけ勉強しただけなので、よく分かりません 笑

こういう結果を見ると、Pythonはダメなんじゃないかという雰囲気になってしまいますが、私はPythonが大好きです。やはり何と言ってもシンプルですし、特に科学系のデータを扱う時には、Pythonはかなり道具が揃っています。上のグラフも、今回はPythonで書いてみました。Pythonならプログラミング素人の黒猫でもこれくらいなら作ることが出来るのが、Pythonのすごいところです。

しかし、やはり計算量が必要な時には言語の使い分けが必要なのもまた事実なのかも知れませんね。プログラミングは奥が深いと思いました。

というわけで今日はこのあたりで。読んで下さりありがとうございました!


追記で今回使ったソースコードを置いておきます。

スポンサーサイト
該当の記事は見つかりませんでした。