トップページ⇒tech
1001コメント332KB

Ruby 初心者スレッド Part 56©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net2014/12/13(土) 09:29:12.93ID:DLY4IovQ
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 55
http://peace.2ch.net/test/read.cgi/tech/1403361584/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
0583デフォルトの名無しさん2015/01/31(土) 17:21:16.06ID:fH2ezq9N
>>582
そうだね
未定義変数への参照は通った瞬間にエラーなのでそこを通るテストを書いただけで検知できるね
代入の方はその後その変数は使われないだろうから、rubocopが検知してくれる
0584デフォルトの名無しさん2015/01/31(土) 18:00:35.57ID:Xj+5RYHD
ユニットテスト書く前提ならこんな話にはならなかったんや!

と思うのでいまどきの入門書書く人はそこらへん留意していただけると嬉しいです
0585デフォルトの名無しさん2015/01/31(土) 18:08:45.92ID:L1WBwZOU
ときどきObject#sendが邪魔に感じる。
なぜ__send__だけにしておかなかったのだろう。
0586デフォルトの名無しさん2015/01/31(土) 18:26:49.34ID:Hs82A+Y6
> 邪魔に感じる。
どういった状況で?
0587デフォルトの名無しさん2015/02/01(日) 15:00:59.60ID:cy2W8bd9
puts 文字列 + 数値、数値 + 文字列では、
数値.to_s が必要だが、
一々面倒なので何とかならないか?


global変数は、すべてのファイルで共通になるが、
そのファイル内だけのglobal変数は無いの?

C言語で言うと、extern, staticの区別
0588デフォルトの名無しさん2015/02/01(日) 15:08:13.07ID:3vNkahG1
>>587
#{...} を使えばいいんじゃね?
0589デフォルトの名無しさん2015/02/01(日) 16:50:47.88ID:lQgEbHmF
Cユーザーならsprintf使っとけ。
0590デフォルトの名無しさん2015/02/01(日) 16:56:53.64ID:XkAsCPXm
>>587
新型のputsを自作すればいい
0591デフォルトの名無しさん2015/02/01(日) 17:13:44.38ID:zDAnvj5f
myputs(a, b)

仕様
aが文字列か数値か判別して、数値なら文字列に変換
bが文字列か数値か判別して、数値なら文字列に変換
a + bを標準出力
0592デフォルトの名無しさん2015/02/01(日) 17:48:23.39ID:cgGRoexe
588か589だな
n = 1
puts "#{n} + 1 = #{n+1}"
puts "%d + 1 = %d" % [n,n+1]
0593デフォルトの名無しさん2015/02/01(日) 18:04:22.58ID:CCPA60Z6
$ irb
irb(main):001:0> def my_puts(*xs); puts xs.map { |x| x.to_s }.join; end
=> :my_puts
irb(main):002:0> my_puts "x = ", 123
x = 123
=> nil
irb(main):003:0>
0594デフォルトの名無しさん2015/02/01(日) 19:07:56.22ID:jb7bJiwh
putsのそういう挙動が当たり前と感じるのなら
むしろString.+をいじった方がいいのでは
0595デフォルトの名無しさん2015/02/01(日) 19:11:56.17ID:idWDCOsc
型のゆるい言語は嫌われます
使いたくもないです
0596デフォルトの名無しさん2015/02/01(日) 19:16:31.23ID:esW6O74B
そもそも全く違うオブジェクトを+で連結したいと考えることがおかしい
他の特定の言語では当然だったかもしれないが、その言語ではない言語では当然ではない

no = 596
puts "このレスは#{no}番目です"
0597デフォルトの名無しさん2015/02/01(日) 19:26:10.02ID:ymu35Jul
あらゆる側面で糞面倒なJavaが文字列とオブジェクトの+連結を認めてるのが一番意外
0598デフォルトの名無しさん2015/02/01(日) 19:30:08.08ID:OM+Gcdnk
Javaみたいな静的言語なら加算なのか文字列連結なのかはコードから明らかだからいいんだよ
動的型だと実行してみるまでどっちの意味になるかわからないからまずいわけ
0599デフォルトの名無しさん2015/02/01(日) 20:18:03.21ID:QmWK2eIJ
オブジェクトテスト用にクラス作っとばいんじゃないの
0600デフォルトの名無しさん2015/02/01(日) 20:27:04.35ID:esW6O74B
>>598
組み込み基本のクラスを使う限りどっちの意味にもならない
irb> 1 + "one"
TypeError: String can't be coerced into Fixnum
from (irb):1:in `+'
irb> "one" + 1
TypeError: no implicit conversion of Fixnum into String
from (irb):2:in `+'
自作クラスの自作メソッドの挙動やto_strの乱用にまでは責任を持てない
0601デフォルトの名無しさん2015/02/01(日) 20:57:21.24ID:j8xgKLPZ
>>587
ファイル所属の変数は無いが
モジュール所属の変数はあるので、ファイル毎にモジュール作れば良い
0602デフォルトの名無しさん2015/02/01(日) 22:17:06.17ID:dK11pYT4
おまえらいつまでRubyみたいな技術的負債使ってんの?
0603デフォルトの名無しさん2015/02/01(日) 22:23:41.26ID:lVVBipUT
パチンカスと一緒です。
つぎ込めば、いつか見返りがある儲けられる、と思い込んでいるのです。
絶対に抜けられません。
0604デフォルトの名無しさん2015/02/01(日) 23:17:13.34ID:3vNkahG1
そう思ってるならこんなスレ来なきゃいいだけなのにね
あぁ、「どうせあの葡萄はすっぱいに決まってる」という寓話を地で演じてるのか
0605デフォルトの名無しさん2015/02/02(月) 06:12:00.34ID:hiXwrLan
暇人が釣れるから来るんだろう
0606デフォルトの名無しさん2015/02/02(月) 07:13:04.85ID:r+Lk9y7y
この前の基地外がRuby使うの止めたら止めようかな
0607デフォルトの名無しさん2015/02/02(月) 08:27:04.62ID:2QTFDeMY
rubyが「楽しいと感じないなら辞めれば良い」のです
楽しいと感じないのにタイプしてるのはバカか仕事なのです

呪うべきは楽しくないのに選択した自分か、仕事を押し付ける上司
それが答えなのです
0608デフォルトの名無しさん2015/02/02(月) 08:36:52.46ID:KT6cnHtO
Railsドカタになって同じような画面を垂れ流してるうちに誰でも楽しく感じなくなるけどね
0609デフォルトの名無しさん2015/02/02(月) 08:40:34.31ID:2QTFDeMY
それ思想が違うし
0610デフォルトの名無しさん2015/02/02(月) 08:42:13.17ID:aWW6SCxB
気づいたときにはゴミの山
泣きながら他の言語で書き直すことになる
0611デフォルトの名無しさん2015/02/02(月) 08:45:32.43ID:2QTFDeMY
目的のためのルート設計をしてないからでしょ
餅は餅屋、何でも出来ると勘違いしてる判断ミスじゃないの
0612デフォルトの名無しさん2015/02/02(月) 09:43:03.46ID:rJw1gGUc
馬鹿には無理
ほんとこれ
0613デフォルトの名無しさん2015/02/02(月) 10:02:26.21ID:eLVqBz1I
Rubyは技術的負債だってはっきりわかんだよね
0614デフォルトの名無しさん2015/02/02(月) 10:54:44.07ID:hvFmtfuf
>>470
おなじ疑問を持ってここに来ました
そういうところ見つかりましたか?
あったら教えてください

ここは流れをみるのがつらい
0615デフォルトの名無しさん2015/02/02(月) 14:02:29.47ID:2QTFDeMY
道具に負債もクソもなし
道具とは最適化を図るための手段であって
目的でもゴールでもない

部分最適化を突き詰めれば道具は細分化し、
さらに各自の手に合う物が求められる
その細分化の一部がrubyに過ぎない

求める者がいればその道具を使い、使いにくければ捨てられるだけだ

個々人に差があるのであれば、道具も応じて違いが生じる
手に馴染めば道具
それが最適化ってもんだよ

好きなもんを選べば良いだけの話だ
0616デフォルトの名無しさん2015/02/02(月) 14:15:15.15ID:dFh+3r/9
>>614
スタック・オーバーフローでRubyタグを選択して
興味ありそうな投稿を読んだり
わからないことを質問してみたりするのはどうかな?
別に超初心者質問でもいいと思うよ
http://ja.stackoverflow.com/
06176142015/02/02(月) 15:59:24.40ID:hvFmtfuf
>>616
ありがとうございます
さっそく質問してきました
06186142015/02/02(月) 16:46:04.23ID:hvFmtfuf
すぐ回答がもらえました
コメントに「ありがとう」は避けてくださいとか
スタックオーバーフローの使い方に馴染むのにも時間がかかりそう
0619デフォルトの名無しさん2015/02/02(月) 17:54:24.83ID:F8krgf3P
Rubyは技術的負債製造装置
道具としてもふさわしくない
0620デフォルトの名無しさん2015/02/02(月) 17:58:55.77ID:w/aGrY+/
なんか古きインターネッツ感を感じるな
まあ技術に真摯とかいう言い訳を盾にストレス解消してるカスよりはいいか
0621デフォルトの名無しさん2015/02/02(月) 18:26:36.59ID:YvYF+i45
> ストレス解消
なにその昭和的解釈
対処上迷惑だから来ないでくれ
0622デフォルトの名無しさん2015/02/02(月) 18:31:29.83ID:y8op27fV
>>618
もうここにはくるなよノシ
0623デフォルトの名無しさん2015/02/02(月) 18:50:05.83ID:V3GmxBlb
例えば、ありがとうを避ける
0624デフォルトの名無しさん2015/02/02(月) 22:57:16.55ID:P9prHaW7
質問です

if文でthenは省略できるそうですが、
一行で書くのでなければthenは省略するのが普通の書き方ですか?
0625デフォルトの名無しさん2015/02/02(月) 23:05:21.29ID:vLsFqgHc
>>624
https://github.com/fortissimo1997/ruby-style-guide/blob/japanese/README.ja.md
0626デフォルトの名無しさん2015/02/03(火) 00:34:40.41ID:zLVytOR3
ライブラリのPStoreってどんな時に使うの?

>データファイルの内容はバイナリになるため、
エディタなどでデータファイルの内容を直接編集することは出来ません。

と書かれているので、CSVのように扱えないし、データベースとしては中途半端に見えるのですが。
0627,,・´∀`・,,)っ-○○○2015/02/03(火) 02:03:48.12ID:ZTQRufFp
RubyのオブジェクトをRubyから読み出しやすい形でファイル保存する
テキストやSQLiteデータベースならたしかに他のアプリからは読み出しやすいかもしれないが
Rubyから読み出すときにいちいち解析が必要だ。
変数の実体が単一のIntegerやStringだったらありがたみは感じないかもしれない。

だがArrayやHash, Classなど複数まとめたデータ構造になると話は変わってくる。

汎用のRDBに保存するにもデータ構造を定義するスキーマが必要だが
Rubyのデータ構造は動的で、配列ひとつとっても、要素ごとに別々のオブジェクト型を持つことができる。
そんなものを汎用のデータベースに保存しようと思ったら手間が大変です。
だからRubyネイティブのデータ構造を保ったまま保存するライブラリが必要なわけ。
0628デフォルトの名無しさん2015/02/03(火) 06:49:11.99ID:Oq2Uxu+K
>>624
一般論としてあんまり省略はしない
なぜならわかりにくいから
「省略が許されているから」という理由で省略したりはしない
一方、省略したほうがわかりやすい場合は省略する
たとえばいくつかの関数的メソッドの引数カッコ()

わかりやすいってなんやねんという話に帰着
0629デフォルトの名無しさん2015/02/03(火) 15:03:34.31ID:kH1e55rk
CというクラスがAというモジュールで使えるようになった特異メソッドをBというモジュールからラップしたいです

module A
def foo
end
end

module B
def foo
#ラップ
super
end
end

class C
extend A
foo
end


これって可能なのでしょうか?
06306292015/02/03(火) 15:54:13.59ID:kH1e55rk
可能でした
0631デフォルトの名無しさん2015/02/03(火) 17:32:14.67ID:jSs0xbxA
while, until, loop には自動的に、
インデックスが渡ってこないのですか?
一々、自分でカウントするのが面倒くさい

while 条件 do |i|
end

i = 0
while 条件
i += 1
end

それと、後判定の構文はありますか?
do
while 条件

do |i|
while 条件
0632デフォルトの名無しさん2015/02/03(火) 19:48:01.54ID:fwrgjvoe
>>631
1. each_with_index
2. begin ... end while
0633デフォルトの名無しさん2015/02/03(火) 22:00:20.05ID:8WdQQTPe
いや普通省略するだろ
0634デフォルトの名無しさん2015/02/03(火) 23:51:10.62ID:bJajSEki
省いてるほうが多い気がする
またこのガイドラインによれば省くべきらしい
https://github.com/bbatsov/ruby-style-guide#no-then
0635,,・´∀`・,,)っ-○○○2015/02/04(水) 02:13:03.76ID:mZ2NyWa4
3項演算子 ? : の代わりに1行で書くときにたまに書く程度だな
あれはC系というよりPascalの文法からの輸入だと思ってるが
0636デフォルトの名無しさん2015/02/04(水) 10:45:02.52ID:iowEZhLp
ハッシュや配列の中身にハッシュや配列があることを検知するにゃどうすればいいんでしょうか

[1,2,3]
[1,2,[3,4]]

{ a: 1, b: 2 }
{ a: 1, b: 2, c: { d: 4 } }

これらを区別したいんですが


この区別をしたいです
0637デフォルトの名無しさん2015/02/04(水) 11:25:54.95ID:o8a0pYfq
none?{|a|Array===a||Hash===a}
0638デフォルトの名無しさん2015/02/04(水) 11:56:45.85ID:gXcODlq6
[1,2,[3,4]] .each{|f|

# p f.class

p f.kind_of?(Array)
}



print "\n"


gg = { a: 1, b: 2, c: { d: 4 } }

gg.each {|h,m|


# p h.class

#p m.class

p m.kind_of?(Hash)
}
0639デフォルトの名無しさん2015/02/04(水) 11:57:42.44ID:gXcODlq6
インデントが滅茶苦茶でワロタ
06406362015/02/04(水) 16:54:44.49ID:iowEZhLp
ありがとうございます
ただ、これで両方ともtrueなのはなぜですか?

{ a:1 }.none? { |v| Hash === value }
{ a:1, b: { c: 2 } }.none? { |v| Hash === value }
0641デフォルトの名無しさん2015/02/04(水) 17:17:03.80ID:XrYBwfOz
ハッシュの時はvがペア配列になるから
06426362015/02/04(水) 17:32:01.21ID:iowEZhLp
みなさんありがとうございました
0643デフォルトの名無しさん2015/02/05(木) 20:18:03.06ID:smQR/Z44
Module#===なんてあったのか
いつもhoge.class <=> Klassとかってしてたから便利だ
0644デフォルトの名無しさん2015/02/05(木) 20:25:21.86ID:jLw4sTHC
===といえばcaseってことでぐぐったらcase「文」って記事が山ほど出てきてげんなりした
0645デフォルトの名無しさん2015/02/05(木) 20:46:47.76ID:Tpxi4Jvu
制御構造caseじゃなんかねえ

ともあれ、Rubyでは文と式はきちんと使い分けることができるので使いわけよう
他人に説明するときはなおさら
0646デフォルトの名無しさん2015/02/05(木) 20:50:01.20ID:2+nUOnq4
それはお前が狭量で視野が狭いからだから
0647デフォルトの名無しさん2015/02/05(木) 21:05:34.07ID:4svq36dE
>>644-645はcaseの値を必ず使ってるのかなw
0648デフォルトの名無しさん2015/02/05(木) 21:16:13.66ID:4svq36dE
セミコロンが必要なC系言語とは違って、Rubyの式は単独で文になることができる
従って、文法上は「case式は式である」というのと同程度には「式は文である」というのも正しい
0649デフォルトの名無しさん2015/02/06(金) 05:12:36.55ID:FeYXODPI
仕様書読め
0650デフォルトの名無しさん2015/02/06(金) 07:12:51.33ID:VJ9IpT0a
全てのcase式は式だが全ての式が文とは限らない
だが少なくともcase式の値を使わなければそれは文そのもの
0651デフォルトの名無しさん2015/02/06(金) 11:36:20.81ID:MMq1EYgo
>>528
EMPTY = ""
puts EMPTY

base = EMPTY
base << " added"
puts base

puts EMPTY
puts "orz"

empty = ""
base = empty
base << " added"
puts base

# C:\work>ruby empty.rb
#
#  added
#  added
# orz
#  added
0652デフォルトの名無しさん2015/02/07(土) 11:23:55.99ID:tuovU1tZ
https通信の時のヘッダ取得したいんですけど
どのようにすれば良いですか?

【sample.rb】
-------------------------------------------------
#! ruby -EWindows-31J
# -*- mode:ruby; coding:Windows-31J -*-
require 'webrick'
require 'webrick/httpproxy'

ProxyHandler = Proc.new(){ |req,res|
puts res.body
}
ProxyServer = WEBrick::HTTPProxyServer.new({})
ProxyServer.start
-------------------------------------------------
0653デフォルトの名無しさん2015/02/07(土) 12:10:13.92ID:tuovU1tZ
言葉足らずでした、webrickで透過型プロキシを実装したいです
0654デフォルトの名無しさん2015/02/07(土) 12:30:30.00ID:PMml+WYK
HTTPならこんな感じだろうけどHTTPSとなると簡単にはいかない気がする

require 'webrick'
require 'webrick/httpproxy'

server = WEBrick::HTTPProxyServer.new(
 ProxyContentHandler: Proc.new{|req, res| p req.header, res.header },
 Port: 8929)
trap('INT'){ server.shutdown }
server.start
0655デフォルトの名無しさん2015/02/07(土) 13:12:14.03ID:uwz1/LFp
ちょっと調べたら、その辺のツールはみんなpythonだな
0656デフォルトの名無しさん2015/02/07(土) 14:10:42.49ID:zogMm8qc
Webrickじゃ無理
ProxyがHTTPS通信を開始するためにはConnectメソッドを処理する必要があるが
Webrickはこれを処理できる仕組みになっていないから

あと、透過型Proxy自体はヘッダーと何の関係もない
たぶんSSLによる暗号化を複合しないとリクエストが分からないから転送しようがないのでは?
と考えたのだと思うが、Proxyはそんなことしない
Connectメソッドによって確立されたトンネルにデータを流すだけ
0657デフォルトの名無しさん2015/02/07(土) 14:41:58.65ID:tuovU1tZ
なるほど。

今自社の開発案件でスマホアプリのHTTPS通信の
解析を行う必要があったんですが、Webrickでは無理という事でしょうか?

単純にmitmproxyと同じ事をrubyで実装したいのですが
その場合どのように行えば良いでしょうか?
0658デフォルトの名無しさん2015/02/07(土) 17:07:04.01ID:zogMm8qc
その場合、ProxyはHTTP Connectの実装だけあればいいので
HTTPとSocketを知っているなら数十行くらいで書けるでしょう

ProxyはConnectで指定されたホストではなく
解析用のホストに接続するようにする

解析用のホストで動くサーバーは普通にWebrickで書いていい
HTTPSを受け付けるようにし、証明書を設定しておくこと

ところで、これは素朴なMITM攻撃の手法であるから
普通のアプリなら証明書検証過程でエラーにされる
したがってmitmproxyで通信を解析できるのは
自分で証明書検証方法を指定できるもの(または検証していないもの)に限られる

Androidは検証漏れのあるアプリが多く
IPAから注意喚起が行われている
0659デフォルトの名無しさん2015/02/07(土) 20:50:36.17ID:tuovU1tZ
>>658
親切に教えて下さってありがとうございました。
どうにか実装したかったんですけど、自分のスキルでは
困難である事がよくわかりました。
0660デフォルトの名無しさん2015/02/09(月) 01:08:14.17ID:lI/ZsD+9
class Hoge
def == (other)
true
end
end

こんなクラスを作って

false == Hoge.new
-> false
Hoge.new == false true
->true

って右辺と左辺を取り替えて評価すると結果が違うんですが、イコールで
結んでいるのに結果が違うのは欠陥じゃないですかね?
0661デフォルトの名無しさん2015/02/09(月) 01:34:42.68ID:xK+TuziD
前者はFalseClass#==後者はHoge#==
結果が同じじゃなくて当たり前
foo(hoge)とhoge(foo)の結果が違うのは欠陥じゃないですかねって言ってるのと同じレベル
0662デフォルトの名無しさん2015/02/09(月) 01:48:07.63ID:nauiaCPK
> false == Hoge.new
> => false

メソッド False#==(other) は自身のクラス TrueClass と引数 other のクラス Hoge が
同値でないから、false を返している

> Hoge.new == false
> =>true

メソッド Hoge#==(other) は(引数 other が何であれ)常に false オブジェクトを
返すよう定義されている

どこにもおかしな振る舞いは見当たらないけど、
もしも「右辺と左辺を取り替えて評価しても結果が同じになる」ことを期待しているならば、
>>660 におけるクラス Hoge の定義が間違っている、と言うしかないね
06636622015/02/09(月) 01:49:40.94ID:nauiaCPK
訂正
X: メソッド False#==(other) は ....
O: メソッド FalseClass#==(other) は ....
06646622015/02/09(月) 01:52:57.92ID:nauiaCPK
訂正、もう一つ
X: .... 自身のクラス TrueClass と ....
O: .... 自身のクラス FalseClass と ....
0665デフォルトの名無しさん2015/02/09(月) 01:58:41.05ID:xK+TuziD
>>662
他にも訂正すべき箇所が2箇所あると思うんだがw
0666デフォルトの名無しさん2015/02/09(月) 14:21:07.56ID:AxVgErBe
日経リナックス3月号のMatzの連載では、
パイプ '|' のような記述で、
マルチスレッド並行処理を行う、
新言語streemを作っている。
ソースコードはgithubにある

libevent, libev, select, epoll
などの関数が出てくる

昨今、CPUのコア数が増えてきたから、
これからは、すべてのコアを使い切ることが求められる

ただし、排他処理に気を使うマルチスレッドよりも、
マルチプロセスの方が、間違いが少ないような気がする
0667デフォルトの名無しさん2015/02/09(月) 16:06:20.11ID:lErY/OJd
どうせRubyみたくすべてのコアを使い切っても他の言語より遅いんだろ
0668デフォルトの名無しさん2015/02/09(月) 17:15:32.39ID:cxy5oANg
そう腐るなよ
0669デフォルトの名無しさん2015/02/09(月) 21:00:23.45ID:sphOw1wN
s = [1,2,3,4,5]
に対し
=> [[1,2],[2,3],[3,4],[4,5]]
=> [[1,2,3],[2,3,4],[3,4,5]]
=> [[1,2,3,4],[2,3,4,5]]
を得るCoolなやつありませんか?
0670デフォルトの名無しさん2015/02/09(月) 21:04:43.91ID:NXlsRYy4
>>669
each_consをうまく使えばできるよ
一発じゃないけど
0671デフォルトの名無しさん2015/02/09(月) 21:13:06.96ID:sphOw1wN
>>670
それだ!ありがとう
0672デフォルトの名無しさん2015/02/10(火) 01:50:57.21ID:tIfgcH5I
複CPUのwindowsの場合、処理を両CPUに分散して、はやくなるようにする書き方って
あるのでしょうか。
タスクマネージャで見ているとexcel VBAだと、両CPUの負荷が同じように上がっているが、
ruby だと片CPUの負荷だけが上がり、もう片方はあまり働いていないようです。
0673デフォルトの名無しさん2015/02/10(火) 02:11:44.78ID:pMPiEmrc
>>672
VBA は COM で部品化されていてそれぞれ別プロセスだから
0674デフォルトの名無しさん2015/02/10(火) 02:33:56.95ID:tIfgcH5I
>>673
ありがとうございます
rubyだとダメなんだ
0675デフォルトの名無しさん2015/02/10(火) 07:03:23.97ID:w6L2FJ5J
そもそもCPUがボトルネックならJavaの百倍遅いのに
頑張ってコア使い切ったところでなあ
0676デフォルトの名無しさん2015/02/11(水) 02:04:55.42ID:hnLG61Dm
100倍は嘘だけどな、せいぜい10倍程度
それでもJavaは使いたくないと思わせるレベルではあるんだが
0677デフォルトの名無しさん2015/02/11(水) 02:54:42.43ID:TLA2PyrC
10倍は明らかに嘘
100倍の方が近い
0678デフォルトの名無しさん2015/02/11(水) 03:19:59.79ID:hnLG61Dm
>>677
じゃ、ベンチ出してみ
10倍の方が正しいのが分かるから
0679デフォルトの名無しさん2015/02/11(水) 03:22:36.75ID:TLA2PyrC
>>678
おまえが出せよ
ちゃんとCPUがボトルネックになっているやつな
0680デフォルトの名無しさん2015/02/11(水) 07:11:34.41ID:XzdqNrda
あと当然JavaにおいてもCPUがボトルネックになっていることが条件だぞ
そうでないとRubyのときの処理中にIO待ち時間が占めていた割合を測っているだけになってしまう
0681デフォルトの名無しさん2015/02/11(水) 09:49:50.21ID:00aeaMNo
マンデルブロ集合を描くベンチマークあたりがCPU使う系の典型
0682デフォルトの名無しさん2015/02/11(水) 10:05:25.00ID:7KIXpa8D
Rubyインタプリタの仕組みについての知識とプログラミングセンスが僅かでもあれば、
直感的に10倍は差が小さすぎると考えてベンチマークを疑うのが普通じゃないかな
■ このスレッドは過去ログ倉庫に格納されています