質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1918閲覧

pythonってrubyより遅い?

benigmaet

総合スコア19

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2016/11/23 12:32

#疑問
bublesortの実行時間を比較してみようと友人はrubyで自分はpythonをやったのですが、rubyは5秒,pythonでは44秒程度かかりました。
なぜこんなに差があるのでしょうか。
それはプログラミング言語のせいなのかコードのせいなのか知りたいです。
コードのせいならば、どこがおかしいのでしょうか。
始めたばかりなのでできれば簡単に詳しくかいていただければありがたいです。

一万個の疑似乱数を生成させています。今回はrand()を使わないで疑似乱数を生成しました。
また、1万個の疑似乱数列を10種類作りそれをBublesortにいれています。
求めた時間は10種類の乱数列の実行時間を平均したものです。

#該当ソースコード
ruby
イメージ説明

#該当ソースコード

python

1import time#time.clockをつかうため 2def Bublesort(a): 3 start=time.clock() 4 k=len(a)-1 5 for i in range(k): 6 for j in range(k,i,-1): 7 if a[j]<a[j-1]: 8 t=a[j] 9 a[j]=a[j-1] 10 a[j-1]=t 11 end=time.clock() 12 return end-start 13 14def Random_method(r): 15 N=10000#乱数生成個数 16 x=[] 17 a=1229 18 c=351750 19 m=1664501 20#乱数発生 21 for i in range(N): 22 r=float((a*r+c)%m) 23 x.append(r/m) 24 return x 25 26time_sort=0.0 27with open("s_num.txt",encoding="utf-8") as tf:#ファイルオープン 28 for line in tf:#一行ずつ読み込む 29 time_sort=Bublesort(Random_method(float(line)))+time_sort 30 #合計時間 31print(time_sort/10) 32

ファイルから入力している数値は疑似乱数をつくるRandom_methodにはいります。ファイルには300~310までの数値がかかれており、これがRandom_methodにはいり10種類の乱数列を作り出しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Atelier_Mirai

2016/11/23 12:48

Ruby のコードも、画像ではなく、テキストで掲載されていると嬉しいですね。
ikedas

2016/11/23 13:00

PythonとRubyのバージョンを明記してください。
guest

回答2

0

微妙にコードが異なるような気もしますが、手元(macOS Sierra)のRuby2.3.1とPython3.5.2で試したところ、

Ruby 14.9190331
Python 13.3351424

という結果になりました。Rubyは画像からの写しなので間違いがあるかも知れませんが…。

なお、平均を出すのに10で割っているので、s_num.txtは10行でないとおかしくなると思います。s_num.txtが11行以上になっていませんでしょうか?

投稿2016/11/23 13:51

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

benigmaet

2016/11/24 00:39

すみません。301~310まで書いて10行でやってもすごく遅い時間になってしまいました。python3.5.2でやってます。。。
guest

0

ベストアンサー

結論としては、変わらないですね。
マシン環境を揃えて実行しましたか?

python2 が python3 よりはやいのは range の仕様の違いのためでしょう。

% ruby -v ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu] % python3 --version Python 3.5.2 % python --version Python 2.7.12 % ruby bubble.rb sorting time( 1)=8.931465s sorting time( 2)=7.536223s sorting time( 3)=7.527246s sorting time( 4)=7.520112s sorting time( 5)=7.578886s sorting time( 6)=7.914806s sorting time( 7)=7.752874s sorting time( 8)=7.526400s sorting time( 9)=7.787622s sorting time( 10)=7.653307s Total Time = 77.72894124899176s Average Time = 7.772894124899176s % python3 bubble.py 7.4989645 % python bubble.py 5.4379996

投稿2016/11/23 13:46

編集2016/11/23 13:57
MasashiKimura

総合スコア1150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

benigmaet

2016/11/24 00:33

python3.5.2をwindows10の環境でやっているんですが、powershellでコマンド打つときはpython ファイル名とかいてます。python3と書くと認識してもらえません。動作環境がおかしいのでしょうか・・・
MasashiKimura

2016/11/24 01:44

すいません、私の書き方が曖昧でした。 ここで言いたいのは、同じマシンでPythonとrubyを動かしましたか?ということですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問