トップページ⇒tech
681コメント180KB

最速スクリプト言語決定戦!

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
おまいら、そろそろ最速スクリプト言語がどれなのか決定しませんか?
最初のお題は「たらいまわし関数」でGO
0153デフォルトの名無しさんNGNG
>>152
>>152
Squeakはブロックで再帰呼び出しができないので、メソッドで

Integer >> levels: n timesRepeat: aBlock
 self < 1 ifTrue: [↑ aBlock].
 ↑ self-1 levels: n timesRepeat: [n timesRepeat: aBlock]

| x |
x ← 0.
(6 levels: 16 timesRepeat: [x ← x + 1]) value.
↑ x

こちらはなぜかちょびっと速くなる。
0154R..yNGNG
>>152-153
マクロなど羨しがるな。みっともない。同じオブジェクト指向な言語として恥ずかしいぞ。
「ループを 6 回繰り返すコードを書け」と書ける事になんの意味があると言うのだ。
オブジェクト指向は構文抽象よりもはるかに高尚でエレガントなのだ。
マクロは使用法によらず常に悪である。なぜならば、マクロはつまりユーザビリティが低いのだ。
マクロを使うとコードはわかりにくくなるからだ。
0155デフォルトの名無しさんNGNG
馬鹿にはね。
0156デフォルトの名無しさんNGNG
def nest(n, nest_level, &body)
return body if nest_level < 1
nest(n, nest_level-1) {n.times(&body)}
end

x = 0
nest(16, 6) {x += 1}.call
puts x
0157デフォルトの名無しさんNGNG
それは「ループを書くコード」じゃなくてただの「ループするコード」だって
わかって書いてるの?どうでもいいけど Ruby が良いのはもう十分理解ましたので
勘弁してください。
0158デフォルトの名無しさんNGNG
なんでちょっとでも言語ネタが出ると Ruby の話になるんだろう。
だれかマイナー言語のベンチマークで本題に戻して〜
0159デフォルトの名無しさんNGNG
>>150
まくろって、つおい?

: nest { n d c }
  d 0 do
    n postpone literal 0 postpone literal postpone do
  loop
  c compile,
  d 0 do
    postpone loop
  loop
;

: nestedloop 0 [ 16 6 ' 1+ nest ] ;

nestedloop . cr


=> 0.010 / ruby 1.8.1 (2003-12-25) [powerpc-darwin]

16が即値で展開されるためさらに速くなった。
0160デフォルトの名無しさんNGNG
>>159は
gforth-fast 0.6.2
でつ。
0161デフォルトの名無しさんNGNG
∩(´・ω・`)∩アゲトキマスネ
0162デフォルトの名無しさんNGNG
(´・ω・`)アガッテナイシ
0163150NGNG
荒れてしまって申し訳ない。 >>159 さん自分は厨なので LISP も Forth もちゃんと触った
事はないので聞かれても…
0164デフォルトの名無しさんNGNG
>>151

def nested(n):
    x = 0
    i_r = range(n)
    for a in i_r:
        for b in i_r:
            for c in i_r:
                for d in i_r:
                    for e in i_r:
                        for f in i_r:
                            x += 1
    print x

じゃ駄目なの?

Python 2.3
=> 0.370 / ruby 1.8.1 (2003-12-25) [i386-mswin32]
0165151NGNG
>>164
おいらが浅はかだっただけでつ(´・ω・`)
0166デフォルトの名無しさんNGNG
gforthはnative並の速さだな
もしかして実行時コンパイル?
0167デフォルトの名無しさんNGNG
>>166
コンパイル時実行、
・・とForth界隈では呼ばれています。マクロじゃなくて。
でもこの「コンパイル」っていうのは、ForthではVMコード
生成のことを言ってるわけで、ネイティブコード生成ではないです。
gforth自体はVMで動作してます。

0168デフォルトの名無しさんNGNG
Forth ってすげぇ〜 VM 動作でこの速度かよ!! 恥ずかしながら
てっきり実行時にコンパイルしてるもんだと思ってた…

;; CMUCL で型指定付きでコンパイル
* (time (test))
; Evaluation took:
; 0.03 seconds of real time
; 0.023329 seconds of user run time
; 0.0 seconds of system run time
; 32,939,360 CPU cycles

;; インタプリタ起動時間込みでこれ.
$ time gforth-fast nest.f -e bye
16777216
gforth-fast nest.f -e bye 0.27s user 0.00s system 99% cpu 0.275 total
0169デフォルトの名無しさんNGNG
forth スゴイ
マジオススメ
と思ったけど日常生活で使うにはやはり厳しい…
0170デフォルトの名無しさんNGNG
cmuclはネイティブコンパイラですね。
ForthだとbigForthがネイティブコンパイルできるんですが、
まあ、スレ違いということで。。。。
0171デフォルトの名無しさんNGNG
ディスコンパイルすればちゃんとVMとして残ってるのがわかる。
see nestedloop
: nestedloop
0 <4212491> <16> 0
DO 16 0
DO 16 0
DO 16 0
DO 16 0
DO 16 0
DO 1+
LOOP
LOOP
LOOP
LOOP
LOOP
LOOP ; ok

ただしプリミティブを見るとnativeコードになってる
see 1+
Code 1+
( $401ABB ) inc ecx \ $41
( $401ABC ) add ebx , # 4 \ $83 $C3 $4
( $401ABF ) jmp dword ptr FC [ebx] \ $FF $63 $FC
end-code

この最後の2行に注目すると、
( $401ABC ) add ebx , # 4 \ $83 $C3 $4
( $401ABF ) jmp dword ptr FC [ebx] \ $FF $63 $FC

direct threaderd codeという方法を使ってるのがわかる。(ebxがpcに相当)
0172デフォルトの名無しさんNGNG
綴り間違えた
s/threaderd/threaded/
0173159NGNG
ちなみにgforth0.6以降は、

>New threaded code execution method: primitive-centric (allows the following),
>hybrid direct/indirect threaded (easier portability), with dynamic superinstructions
> (typical speedup on Athlon: factor 2).

と書かれていてprimitive-centricという新しい手法を使っているらしい。
(詳細不明。。)
0174デフォルトの名無しさんNGNG
正直、動的型な言語だとまず型チェックとか入るから
いきなりinc ecxとか実行でけるforthがうらやましい。
つーことはecx何某はスタックトップの演算ということかな。
(あんま知らないので間違ってたらすまそ)
0175デフォルトの名無しさんNGNG
ecxはレジスタらしいね。
スタックトップ(TOS)をレジスタに割り当てるのはVMの高速化の常法。
0176デフォルトの名無しさんNGNG
>>170
そうです。型指定しないと generic-function (bignum かもしれないんで)
呼んじゃうので forth より遅かったです。でも良く考えたら最適化コンパイラ
じゃ構造がかわっちゃうかもしんないから >>171 を見てもそもそも比較に
なんないっすね…。
0177デフォルトの名無しさんNGNG

void main() {
int n=16;
int x=0;
int a,b,c,d,e,f;
for (a=0; a<n; a++){
for (b=0; b<n; b++){
for (c=0; c<n; c++){
for (d=0; d<n; d++){
for (e=0; e<n; e++){
for (f=0; f<n; f++){
x++;
}
}
}
}
}
}
printf("%d\n", x);
}

cint
=> 0.32 / ruby 1.8.1 (2003-12-25) [i386-mswin32]
0178デフォルトの名無しさんNGNG
あ、今Hspで動作計測したんだけど
たぶん一番早いよコレ。マジすごすぎだわ。
諸事情によりくわしいことはいえないんだけどどれよりも早かった。ほんと。
0179デフォルトの名無しさんNGNG
かんじおべんきょうしろ。
0180デフォルトの名無しさんNGNG
あ、今BrainFuckで動作計測したんだけど
たぶん一番早いよコレ。マジすごすぎだわ。
諸事情によりくわしいことはいえないんだけどどれよりも早かった。ほんと。
0181デフォルトの名無しさんNGNG
Haskellをリクエストしている人がいたので参戦。
tarai (640, 320, 0)

module Main where
tarai :: Int -> Int -> Int -> Int
tarai x y z
  | x <= y  = y
  | otherwise = tarai (tarai (x - 1) y z) (tarai (y - 1) z x) (tarai (z -1) x y)
main = print $ tarai 640 320 0

ghc -O2 tarai.hs
./a.out  0.00s user 0.01s system 105% cpu 0.017 total

runhugs tarai.hs
runhugs tarai.hs  3.17s user 0.12s system 89% cpu 3.671 total
# やっぱりhugsは遅い。
0182デフォルトの名無しさんNGNG
ちなみに
http://sheepman.parfait.ne.jp/20030418.html#p05
のRuby版は(620, 320, 0)では終わらない。# 所詮偽物。

runhugsは起動だけで0.20秒ぐらいかかるから(12,6,0)で比べるのは
無意味。
0183デフォルトの名無しさんNGNG
>>181,182
>>49
0184デフォルトの名無しさんNGNG
>>183
そもそもGHCは実行ファイルはき出すコンパイラだし。
0185デフォルトの名無しさんNGNG
>>183
わかってるけど、最近Lazyが云々っていうレスが続いてたからね。
0186デフォルトの名無しさんNGNG
せっかくだから誰かCleanでHaskellに挑戦してくれ。
0187デフォルトの名無しさんNGNG
(´・ω・`)ホシュ
0188デフォルトの名無しさんNGNG
Cleanはネイティブコード吐くよ
0189デフォルトの名無しさんNGNG
GHC もネイティブコード吐くよ
0190デフォルトの名無しさんNGNG
�潟Tンファイナンスです。
全国即日スピード融資。
東京都知事認可済みの消費者金融です。
まずはHPをご覧ください。
http://sunfaina.fc2web.com/


0191デフォルトの名無しさんNGNG
スマン、たらいまわし関数って何?
まえ市役所に行ったらたらいまわしにされたけど、
それはおいといて、マジわからん。
0192デフォルトの名無しさんNGNG
>>191
>たらいまわし関数って何?

その「何?」って「何の役に立つのか?」って意味か?

・・・何の役にもたたんよ。
0193デフォルトの名無しさんNGNG
ちょうど市役所のたらいまわしシステムがベースです
0194デフォルトの名無しさんNGNG
たらいまわしの語源て何よ。
むかしむかし、タライを回す、おじいさんとおばあさんがいました。
みたいなお話キボンヌ。
つーか、たらいって何?
0195デフォルトの名無しさんNGNG
辞書引けカス。
0196デフォルトの名無しさんNGNG
>>192
「たらいまわし」は曲芸の名前。曲芸師が仰向けになって、足でタライを回す芸。
時には、二人の曲芸師がタライでキャッボールをすることもある。その様子が
役所などで「たらいまわし」そっくりな為。

なんか最近やけに他人の代わりに Google を使う事が多いような気がする。
こういう時代なのか・・・
0197デフォルトの名無しさんNGNG
たらい知らないやつがいるのか
芸人の上から降ってくるのが金(かな)だらい
0198デフォルトの名無しさんNGNG
真心ブラザーズの歌にもあるよね

あれは猿回しか
0199デフォルトの名無しさんNGNG
たらい回し関数で計れる性能って関数呼び出しですかね?
0200デフォルトの名無しさんNGNG
200ゲトー
         ,、       ,、
     ,;''"";、 ! \     / ヽ,
( (  ( O ;, '   `''"''''"''   ゙;.
     ';,   !;            ;;
     ';、 ;;'    O    O  ;!  >>199はハムスター。
      ';, ';, *  ┌―┐  ,;
       ゙:、`:、      _ノ  ,.;'
        ヽ、       ,,: ヽ
           ';,.  r'⌒''"   ';,
          ,..;、., ヽ,,.     ';,,
          ノ。o。 ヽ  ゙"''‐''"   ';,
      ( (  ;' ○ ;;,!、        ;,      ;`';,
           `ー‐' -"''-;,,、     ;;i'"""ヽ、ノ ,;
                  ;;,     ,;;'⌒`:、,..,,;;''
                  ';,    ;;'
                   (,,_,,_,,ノ
0201デフォルトの名無しさんNGNG
次期 Ruby が最強スクリプトってことでまとまったな。
0202デフォルトの名無しさんNGNG
なんてったってRPGツクールに搭載だもんな
0203デフォルトの名無しさんNGNG
実績、性能、将来性、ユーザビリティ、オブジェクト指向の純粋性、
すべてにおいて次期 Ruby は最強というわけか。
0204デフォルトの名無しさんNGNG
>>203
*次期* かよ…。_| ̄|○ と、いちおうツッコンでおく。
0205デフォルトの名無しさんNGNG
きっとRuby 2.0はめっちゃ速いはずだよ
0206デフォルトの名無しさんNGNG
Ruby 2.0 は最強。他は負け組み。プププ。
0207デフォルトの名無しさんNGNG
次期Perl
次期PHP
に続いて、次期Rubyもあるんだな・・・。
0208デフォルトの名無しさんNGNG
磁気HSPマダァ〜?
0209デフォルトの名無しさんNGNG
どの次期がいちばんはやいか競うスレはここでしょうか?
0210デフォルトの名無しさんNGNG
Slangが最強
0211デフォルトの名無しさんNGNG
>>210
アンインストールすると多くのディストリで不具合が起こったりするからな。最強だ。
0212デフォルトの名無しさんNGNG
>>211
それは最悪の間違いだろ。だいたい最速スレなんだから。
つまり今は遅いけど次期 Ruby の速度大幅アップにより
最速ということでファイナルアンサーだな。
0213デフォルトの名無しさんNGNG
今のところそれほど速くなる見込みは出てないけどね。
0214デフォルトの名無しさんNGNG
大丈夫。
信者が実行すると、脳内で時間が加速される仕様があるから。
0215デフォルトの名無しさんNGNG

 次 期 と か 次 世 代 と か は ど う で も い い
0216Age.P.Hukai ◆hsp/8n/.as NGNG
Ruby is the shittest language in programming.
0217デフォルトの名無しさんNGNG
で次期Rubyっていつ出るの?
0218デフォルトの名無しさんNGNG
>>216
英語わからないなら無理して使おうとしない方がいいよ。
0219デフォルトの名無しさんNGNG
All your script language are belong to us!!
0220デフォルトの名無しさんNGNG
Perl から Ruby に乗り換えるとコードサイズは半分、開発期間は 1/4 になるそうです。

結論:開発速度は Ruby ガ最速
0221デフォルトの名無しさんNGNG
通信テストプログラムをrubyで書いたが楽だった。
思わずこっちの方を出荷したいとか思ってしまった。
0222デフォルトの名無しさんNGNG
ruby2perlを作れ
それで納品問題も解決
0223デフォルトの名無しさんNGNG
>>220ソースよこせこら
0224デフォルトの名無しさんNGNG
やーだね(ププォ
0225デフォルトの名無しさんNGNG
>>222
うちの仕事でperlなんて使ったらはったおされそうだw
0226デフォルトの名無しさんNGNG
>>223
http://pc2.2ch.net/test/read.cgi/tech/1074235226/927
の話だろう。妄信って怖いねぇ…。
0227デフォルトの名無しさんNGNG
慣れてる言語を使ったほうがそうでない言語を使うより、
質も開発速度も良いというだけじゃないかね。
0228デフォルトの名無しさんNGNG
t3x[ ttp://www.t3x.org ]出てこないな…
ま、この言語をTrackingしているのはオレだけか。
0229デフォルトの名無しさんNGNG
お前だけ。
0230デフォルトの名無しさんNGNG
一番表現力が豊かなのはActionScriptだけどな
早いかどうかは知らん
0231デフォルトの名無しさんNGNG
ActionScript って JavaScript とどう違うの?
0232デフォルトの名無しさんNGNG
>>231
JavaScriptの元になった別の規格があるらしいんだけど、
それにFlashのオブジェクトをガチャコンと結びつけたもの。
基本的にはJavaScriptと同じ

独特のスタイルとしては
deleteでGCによる強制回収が出来たり
色情報はColorでのみなど、専用オブジェクトにハンドラを渡す必要があったり
porototypeを利用したクラスの定義などが出来る
0233デフォルトの名無しさんNGNG
>>228
ちょっと覗いてみたけど、なんで最近の言語はみんな
英語にちがづけるんだ???

他人が綺麗に書いたソースは読みやすいかもしれんが、
自分が書くときにはこまる。
0234デフォルトの名無しさんNGNG
>>219
懐かしいな
0235デフォルトの名無しさんNGNG
>>232
thanx!!

ttp://www.webreference.com/programming/javascript/j_s/column2/

ECMAScript 1.0 edition 2 って事は、幾つかの差異を除けば、まんま JavaScript なんだね。
0236デフォルトの名無しさんNGNG
しかし藻前羅は神だな(ワロタ
0237デフォルトの名無しさんNGNG
最下位はTTSに決定されますた
0238デフォルトの名無しさんNGNG
身の回りの小物は昔からずっとTcl/Tkで作ってるマイナー志向の俺。
おめーらは色々とスクリプトを乗り換えて来たと思うけど
やっぱりPerl->Rubyとか多いの?
0239デフォルトの名無しさんNGNG
Rubyは信者がキモイんで、まったりPython
0240デフォルトの名無しさんNGNG
http://shootout.alioth.debian.org/craps.php
0241デフォルトの名無しさんNGNG
まったりJavaScript
0242デフォルトの名無しさんNGNG
スクリプト言語に速度求める時点でアフォw
0243デフォルトの名無しさんNGNG
じゃあなんで上げたんやアホ
0244デフォルトの名無しさんNGNG
やっぱメジャーな言語に流れるのが一番いい
速度より時間の節約だよ
0245デフォルトの名無しさんNGNG
まあ、それはそれ。
このスレの趣旨はそれじゃない。
0246デフォルトの名無しさんNGNG
CPUとかGPUみたいに、典型的なベンチマークってないの?
0247デフォルトの名無しさんNGNG
HSPでRPG作りたいんですが、正直難しいと思います。
でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
HSPの基礎からすべてを叩き込んでくれませんか??
お願いします。
0248デフォルトの名無しさんNGNG
スレ違いだよアホ
0249デフォルトの名無しさんNGNG
でかいほど速い

Perl perl 15.9688
Python python 15.0060
Pike pike 14.3161
Lua lua 13.3868
Erlang hipe 13.2092
Python psyco 13.0327
Ruby ruby 11.6489
Awk 10.7199
Tcl 9.5188
Bash 6.6484
Emacs Lisp 5.5613
0250デフォルトの名無しさんNGNG
>>248
コピペだろ。
相手するとつけあがるぞ。
0251デフォルトの名無しさんNGNG
>>249
hipe, psyco って遅いのか。
何のテストしたの?
0252デフォルトの名無しさんNGNG
HSPでRPG作りたいんですが、正直難しいと思います。
でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
HSPの基礎からすべてを叩き込んでくれませんか??
お願いします。
■ このスレッドは過去ログ倉庫に格納されています