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

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

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

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

Q&A

解決済

1回答

827閲覧

[Ruby] なぜIDEより直接Rubyコマンドプロントでやった方が処理が早いのか?

kzd847686

総合スコア53

Ruby

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

1グッド

2クリップ

投稿2018/12/22 15:42

IDEとしてRubyMineを使用しています。
そこから通信のAPIで情報を取ると、平均0.020秒かかっていました。

しかし、たまたまStart Command Prompt with Rubyを使用してみたところ、0.007秒で通信が終わり処理が完了していました。

なぜ、IDEから実行するより直接Rubyコマンドプロントでやった方が処理が早いのでしょか?

また、処理を早くさせる方法はRubyコマンドプロントを使う以外に何かありますでしょうか?

宜しくお願いします。

イメージ説明

処理は非常に単純なもので次なようなものです。

Ruby

1require 'net/http' 2require 'uri' 3require 'json' 4require "date" 5require "openssl" 6require 'bigdecimal' 7 8def msec 9 10 time = Time.now 11 msec = time.usec 12 sec = time.sec 13 now = sec + msec*0.000001 14 15end 16 17def data 18 19 uri = URI.parse("https://api.aaaaaaaaa.com") 20 21 https = Net::HTTP.new(uri.host, uri.port) 22 https.use_ssl = true 23 response = https.get uri.request_uri 24 25 response_hash = JSON.parse(response.body) 26end 27 28########################### 29now = msec 30puts "今の時間 0" 31########################### 32 33puts data 34 35########################### 36puts "今の時間 #{msec-now}" 37###########################
DrqYuto👍を押しています

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

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

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

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

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

otn

2018/12/22 16:34

通信が絡むとそれくらいは誤差の範囲と思いますが、何回やっても同じ傾向が出ますか?
kzd847686

2018/12/22 16:49

はい、100回ループで繰り返しても同様な傾向が見受けられます。
guest

回答1

0

ベストアンサー

RubyMineでの処理を見てないので推測ですが2パターン考えられます。

  1. RubyMine側で用いているruby.exeが古いor最適化されていない
  2. RubyMineがデバッグで用いるために用いてる仕組みが速度に影響を与える

想像するにトレースポイントを用いたスタックフレームあたりが影響を与えそうな気がします


また、処理を早くさせる方法はRubyコマンドプロントを使う以外に何かありますでしょうか?

そもそもRubyは高速な言語ではないので微々たる速度を求める必要があるのならば
Go等別の言語を用いた方がよいです。
非windows環境ならばCrystalという選択肢もあります

また、「windows上のRubyは遅い」というのが昔は定説でした。
Ruby 2.0以降改善されてる気はしますが計測はしていませんので、今もLinuxの方が速いかもしれません
(一説によるとmsvc版のruby.exeが遅かったのでmingwを用いてるRubyInstallerはマシになってる……らしい?)

投稿2018/12/23 00:38

asm

総合スコア15147

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

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

kzd847686

2019/01/03 15:51

ありがとうございます。RubyMineとRuby Installerを再インストールしたら同程度のスピードになりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問