次世代言語10[Rust Swift TypeScript Dart]

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/04/25(水) 07:02:27.60ID:OmWDt0SE
スレタイ以外の言語もok

前スレ
次世代言語9[Haskell Rust Kotlin TypeScript Dart]
http://mevius.5ch.net/test/read.cgi/tech/1520298555/
2018/05/11(金) 21:22:37.76ID:RZoOPILo
どっちかというとマルチコアを活かした最適化って人間が頑張るしかないんじゃないかな。
だからgoでgoroutineとか、
関数型言語推しになるんでわ
2018/05/11(金) 21:41:43.97ID:rzT1F5bb
>>481
javaに限らずインタプリタ系も起動時間含めて time で測ってドヤってる Qiita の記事とか消滅して欲しい
2018/05/11(金) 21:43:50.20ID:bSh0JSQF
>>480
ポインタをintやchar*に変換する自由を利用してFFIのようなものを作れるよ
自由にCを呼び出すことで他言語が速くなる
2018/05/11(金) 22:13:19.06ID:ew48BEmx
>>484
なぜその内容で>>480に安価つけるし
2018/05/11(金) 23:06:50.43ID:bSh0JSQF
>>485
内容に問題はないので、わからないなら自分で考えるか質問を変えてみてはどうかな
2018/05/11(金) 23:15:21.11ID:mlwOVON7
>>484の意図(自由過ぎるポインタにはメリットもあるよ)もわかるし
>>485の反応(最適化の話題から逸れてるだろ)もわかるんだけど
正直>>486はぞっとするほど怖い。なんだろうこの不気味な感じは
2018/05/11(金) 23:16:13.67ID:ew48BEmx
なんやこいつ。
まあええわこのスレには会話通じんやつがおるみたいやし時間の無駄やわ。深く考えんとこ
2018/05/11(金) 23:19:46.30ID:KxM4SNOx
>>487
>>484からその意図を読み取れるのはすげー行間把握力だと思うわ
>>486が怖いのは同意
2018/05/11(金) 23:20:50.68ID:bSh0JSQF
「不気味罪という罪はない」とか言われたらゾッとするかもしれないが
そういうことを平気で言う奴は今の世の中にはいっぱいいるな
2018/05/11(金) 23:24:44.89ID:ew48BEmx
この感じどうせまた例のADHDやろ。つついてもうたことを後悔してるわ
2018/05/11(金) 23:25:19.88ID:cXvpx1C3
>>480
2018/05/11(金) 23:30:08.91ID:cXvpx1C3
>>480 はコンパイラの最適化を受けての発言でいわゆるaliasの問題の
ことを言っていると思われる
>>484 はコンパイラ関係ないFFIを持ち出してしったかをかます
>>485 がもっともなツッコミ
>>486 で上から目線で地面見てドやる

→キモイ

まとめてみました
2018/05/12(土) 00:31:38.38ID:5NKz3ewG
C / C++ はとりあえず OpenMP 相当のものを標準化して実装して欲しいわ
他の言語よりクライアント側で使うこと多いから1つ1つの処理もスケールさせたい
2018/05/12(土) 00:39:55.31ID:ioGXghPg
アルゴリズム変える以外に速くする方法なんてのは
結局倉庫番を上手く解くって話にしかならんわ。
2018/05/12(土) 00:48:56.95ID:R/twbybb
??
それアルゴリズムでは?
2018/05/12(土) 00:52:27.47ID:F3K2afGN
あーもうめちゃくちゃだよ
2018/05/12(土) 01:03:23.63ID:+7qwtmL0
なんかgoogle ioでwasmからdom操作できるようになるって話があったらしい。
2018/05/12(土) 01:04:46.62ID:iFoVhrV3
地獄の始まりじゃないでしょうね(震え)
2018/05/12(土) 01:13:51.18ID:8RYDCDzW
みんなアルゴリズムよりむしろデータ構造を変えたがる
CのポインタもJSのdomもデータ構造だろう
でもデータ構造を変えるのは速くするのが目的とは言ってないかも
2018/05/12(土) 01:38:25.14ID:5NKz3ewG
>>457
>On Xeon Thinkpad P50 with Ubuntu, compiled with gcc -O3 this runs about 15.3 ms ― more than 20% slower than haskell!

あんまり関係ないが
3年前のレッツノートRZ4の最下位モデル、
Core M-5Y10 ベースクロック0.8GHz で
Visual Srudio 2017 でコンパイルしたバイナリも
ちょうど 15.3ms だわ

2コア4スレッドのcpuなので openmp で 4並列にしたら5.7ms
2018/05/12(土) 08:55:56.45ID:ioGXghPg
>>496
いやメモリやレジスタにデータやコードを載せるタイミングの話なんだが。
「アルゴリズム」はもう少しソフトなレイヤーを指したつもり。
2018/05/12(土) 10:24:39.71ID:LrYQoKex
>>501
最適化上手く行けば0.2msぐらいになると思うで
i5-3550 で 0.08ms
2018/05/12(土) 10:28:01.57ID:LrYQoKex
>>498
reactが早くなるってか。
ようやく90年代のクラサバに追いつくなw
505デフォルトの名無しさん
垢版 |
2018/05/12(土) 10:32:35.98ID:TkoJoFTb
GoogleはSUNと同じ愚を犯してるように見える。
2018/05/12(土) 10:34:13.54ID:NuxM0Gnx
wasmのDOM実装は最初からロードマップに入ってる
2018/05/12(土) 10:46:00.14ID:+7qwtmL0
jsの出番が減るのか最近の仕様は好きなんだけどな。typescriptが直接wasm吐くようになってほしい
2018/05/12(土) 10:47:42.87ID:+7qwtmL0
>>505
sunはコンテナーをいち早く実現してたり
zfs出したり、先進的な企業だったよな。金が稼げなかったけど。
googleは金があるから問題ない
2018/05/12(土) 10:52:24.71ID:15xgRckc
>>507
Blazorに期待してる
2018/05/12(土) 10:55:45.44ID:Wuy9HJPF
JavaScriptからwasmへのコンパイルができるようになったら普及は速いんだろうけど、いつになるかなぁ。
そのころにはwasmのエコシステムも十分整備されてそう。
2018/05/12(土) 11:01:20.26ID:NuxM0Gnx
>>507
各種apiのリファレンス実装として続いてくんじゃないかとは思ってる
正直TS→wasmは期待しちゃうよね
2018/05/12(土) 11:13:10.47ID:+7qwtmL0
rustでwasm吐くとdom操作もメモリ効率が良い感じになるのだろうか。
個人的にはgoで全部できるようになりそうで嬉しい。

meteor.jsというのがあってね。コンセプト的にすごく良かったんだけどエコシステムがいろいろ終わってた。wasmでもう一度復活するかも
2018/05/12(土) 11:31:33.64ID:Gv6T+VfX
Rustでブラウザ本体を書き直す動きがJSの部分にまで広がる
ブラウザを作れない言語には速い遅いという以前の問題がある
2018/05/12(土) 13:14:14.79ID:LrYQoKex
>>508
思い出は美化されるね。
不便なコマンド、SysV系転向、長いことジャーナリング無し、ftpのlsがユーザのロケールでパース困難、NFSの進歩の遅さ、etc
罪を数えたらキリが無いよ
2018/05/12(土) 13:53:25.93ID:Douv0h4u
>>491
なんでも俺のせいにすなw
2018/05/12(土) 14:06:23.00ID:Gv6T+VfX
よかった、透視能力なんてなかったんだ
517デフォルトの名無しさん
垢版 |
2018/05/12(土) 14:10:21.47ID:TkoJoFTb
>>508
SUNは我田引水に失敗して凋落したのだ。
自社の高価な機器を売るためにメモリーイーターな言語を広めたり、自社の機器以外では性能が発揮できないように互換環境を禁止したり。
518デフォルトの名無しさん
垢版 |
2018/05/12(土) 14:13:17.43ID:TkoJoFTb
Googleは現在我田引水のため色々やってるが、消費者にとっては良いことは何もない。
吉と出るか凶と出るか。
一方、MSは戦場から早々に離脱したので、不戦敗となるのか、勝ちもしないが負けもしないのか。
2018/05/12(土) 17:45:08.76ID:5NKz3ewG
>>503
dot関数自体の最適化はほぼ完璧に行われています
gcc だと 100 回繰り返してるところを1度で済ます
最適化が起きてるだけでは?
速度もちょうど100倍だし。

そうじゃないと
>i5-3550 で 0.08ms

1G回の積和を0.08msで完了ということは毎秒125Gの積和を実行したことになりますから、
演算性能は125GFlopsメモリ帯域は1000GB/sになる (←あり得ない)
2018/05/12(土) 17:51:25.31ID:5NKz3ewG
最後の計算間違ってるか
結果はあってるけど10M個の積和を0.08ms、という計算か。
2018/05/12(土) 18:44:38.63ID:LrYQoKex
>>519
ああ、確かに。引数変わらないから100回ループが1回に省略されてるな…
2018/05/13(日) 08:36:01.91ID:JK3lyAGE
Cはハスケルの100倍はやかったってこと?
2018/05/13(日) 11:23:16.33ID:LKCtUx3M
GCのベンチマークって無いのかな
一番速いのはGo言語?
2018/05/13(日) 11:26:00.88ID:X0FozZBp
Rustってcと比べて機能てんこ盛りなのに同等の速度で実行できるって何でなの?
2018/05/13(日) 11:46:40.60ID:JUfYpDRX
別に機能が多いかどうかは関係ない。
速度を出すための設定を細かくできるかどうか。
細かく設定するってことはそれだけ手間がかかるってこと。
2018/05/13(日) 12:03:30.51ID:1GQ1TBB+
整数とポインタの見分けがつかない機械語に比べたらCも機能てんこ盛り
だがCのポインタは参照とスライスとBoxとOptionの見分けがつかない
2018/05/13(日) 13:34:16.59ID:NXXuYZ+p
>>526
これ重要やな
528デフォルトの名無しさん
垢版 |
2018/05/13(日) 15:12:37.68ID:JK3lyAGE
>>457
のCのコードみたけどぎょれつ演算にブロック化してないからキャッシュミスが
多くなって遅くなってるだけだな。
ハスケルは自動でメモリーの最適化してるからはやいだけだな。
2018/05/13(日) 15:18:09.79ID:Xeb1zMif
dot product計算するだけのマイクロベンチなんか言語比較として無意味
530デフォルトの名無しさん
垢版 |
2018/05/13(日) 15:34:14.94ID:NXXuYZ+p
>>528
へえ。ハスケル意外と有能やん
2018/05/13(日) 15:50:11.19ID:bgY0d3zI
デタラメ言ってるだけだぞw
このスレの連中はホント騙されやすいな
2018/05/13(日) 16:00:43.94ID:bgY0d3zI
1次元のリニアなメモリをシーケンシャルに読むだけなのにブロック化とか
ここは物事の真偽もわからない初学者の集まりなんだからデタラメで混乱させるなよ
検証できることはちゃんと検証してから発言しよう
2018/05/13(日) 16:15:28.33ID:NXXuYZ+p
うわマジやん糞かよ死ねや
2018/05/13(日) 16:24:23.38ID:1GQ1TBB+
でも検証にはコストがあるからな
お前は嘘つきだと宣戦布告して戦争か裁判をやって勝つまでが検証です
535デフォルトの名無しさん
垢版 |
2018/05/13(日) 17:28:06.32ID:JK3lyAGE
xとy別々の配列じゃなくて
x0y0x1y1x2....のように並べるってことだよ。
そうするとメモリーアクセスが早くなる。
2018/05/13(日) 18:40:55.81ID:bgY0d3zI
>>535
コード読めよ
xとx掛けてるんだぞ
2018/05/13(日) 21:55:04.60ID:MDWbrDHx
検証もせずに適当に推測するが
>>457のHaskellの方がCより速いというのはループを1回で済ます最適化がされた結果であって、
1ループあたりの実際の速度はCの1/80の速度なのかもね
2018/05/13(日) 23:16:22.73ID:aRNPCfaw
Haskellが早いと言うかHaskellだと早く出来ることがあるって感じだろ
539デフォルトの名無しさん
垢版 |
2018/05/13(日) 23:53:00.06ID:eikXWKbu
そりゃそうだろ

言語によって得意な処理は違うし、プログラマの実力によっても変わる
数値計算に限定すればjuliaは手軽に書けて尚且つ実行速度も速かったりする
バカが書いたCのコードより天才が書いたHaskellのコードのほうが(多分)速い
言語の速度だけ比較してあーだこーだ言う前に
各言語に関する詳細な知識とコーディングの実力を身に着けるべし
2018/05/14(月) 00:07:25.34ID:NNbrsR8u
SEYANA
2018/05/14(月) 06:12:40.31ID:Hm1IiEDM
ドット積のような簡単な計算ならCPUの処理速度が速すぎて
メモリー転送速度がボトルネックになることは明らかだしな。
ハスケルの場合、ランダムな数値をメモリーに記録することなく
オンザフライで計算したのかもしれないな。
2018/05/14(月) 07:36:06.84ID:P8BYP3+b
ドット積が律速になることってある?
2018/05/14(月) 07:59:32.34ID:WfY57EXm
バイナリサイズも気になるけど。
と言うか、速い遅いはあんまり簡単に割り切るわけにいかんし、
推測より実測は確かだけど、その前に何を実測してるのか、
大体どれぐらいになるかをもう少し予測したほうがいいと思うんだけどな。
こういう小さい関数単位のベンチは特に。

最新の処理系は両方持ってないから俺出来ないけど、ネイティブコード比べたほうが良いのでは?
gccは(いろんな意味で)信じられない最適化かかってる事あるし。
2018/05/14(月) 08:36:31.93ID:zbYXMED5
>>542
HPCならなくはないけど、その場合は手計算で展開して前後の計算も含めたもっと大きなドメインで最適化するわな
単独でdotだけの最適化なんて、自分の息子を気持ちよくする以上の意味はない
545デフォルトの名無しさん
垢版 |
2018/05/14(月) 13:14:41.23ID:0aBfdvZZ
C++の定数式を使う。
2018/05/14(月) 17:04:14.47ID:ar4V5qZH
>>539
そういう話でしかないからそういう話だという指摘をしたんだろ
2018/05/14(月) 18:11:35.62ID:kUkLIG4O
SEYANA
2018/05/15(火) 07:41:24.21ID:cBszxXz8
ハード的なことは自分はよう知らんが、純粋関数のみで書いたところは、筋の良い関数への置き換えが利いてくれる、てことなのだろう。
知る限りだと、map、fold、filter、zipみたいな基礎的な高階関数と、配列更新はupdate関数を使っとけばその辺が勝手にかかるみたい。

>>457の例は、sumはfoldで、zipWithはzipとmap。

速度ガチ勢は満足しないだろうが、宣言的にやってる割に速度を出したければ、この辺りを気をつけてれば良い印象。

逆に気をつけないと、相当遅い。LazyとStrictも気をつける必要がある。
2018/05/15(火) 09:00:25.93ID:ykJK+It6
これはhaskellじゃなくて理系がバカなんだ
文系がhaskellを勉強しても速度のことなんて考えないだろう
2018/05/15(火) 15:12:17.78ID:+IcyTYky
このスレは何を議論するスレなんだ
2018/05/15(火) 15:24:27.98ID:RQo6Vb+e
雑段するぞ
552デフォルトの名無しさん
垢版 |
2018/05/15(火) 18:37:20.71ID:3hgL0M2i
SOYANA
553デフォルトの名無しさん
垢版 |
2018/05/15(火) 19:24:43.54ID:0x8zM7pd
>>550
次世代言語と言えば関数型、関数型と言えばHaskell、ホルホルホル。
2018/05/15(火) 19:50:21.10ID:dt28ByE7
>>549
理系が馬鹿ってことは文系が頭いいってこと?そんなバカな
2018/05/15(火) 20:03:43.73ID:TjuX/LAp
先入観は可能を不可能にするって二刀流の人が言ってた
2018/05/15(火) 20:20:31.80ID:maavPO86
このご時世理系文系なんて言ってるのもどうかと思うがね
2018/05/15(火) 21:18:11.07ID:+IcyTYky
>>553
くっさ。流石にそういう返答は求めとらん。性格悪すぎか
2018/05/15(火) 22:06:27.79ID:cAjQsfjh
理系文系で語る奴にはろくなものがイないはず
ソースは川上
2018/05/15(火) 22:38:41.36ID:TjuX/LAp
そのろくでなしを討ち取るか逃げ切られるか確定してないソースにはあまり意味がない
2018/05/16(水) 00:35:59.84ID:y71KiaeG
はてな民の悪口はやめロッテ
2018/05/16(水) 04:13:18.32ID:/r6FU1qw
>>548
加えて >>457 には left fold にしとかないと遅いよとある
理由はあまりに明白だからか触れられていないけど
ここはあまり実践に拘る人いないからわりとどうでもいいか
2018/05/16(水) 06:37:06.57ID:wZFh8fJh
コンパイル時と実行時で語る奴は速いよ
OOPと関数型で語る奴にはろくなものがいない
2018/05/16(水) 06:47:58.51ID:OmXLSXyH
LazyかStrictかってな。評価戦略も考えてかなならん。

まあ、Haskellも使いこなすには、それなりの背景知識がないとあかんという事だね。
2018/05/16(水) 07:09:06.16ID:wZFh8fJh
lazyは無限の計算を打ち切る
遅い計算をちょっと速くするだけの最適化とは次元が違う
2018/05/16(水) 07:20:15.91ID:mOBIQo/B
>>562
これは同意かな。
結局抽象論でドヤるの好きなだけなやつってのは
実測を嫌う傾向にあるから問題を引き起こす。
2018/05/16(水) 07:35:27.07ID:/r6FU1qw
>>564
初めから無限の計算をしないように書いた方が多くの場合(ずっと)速いのでないかみたいな話だろ
2018/05/16(水) 07:51:39.34ID:R9tYk9Qj
そんなlazy全否定するような話題だったのか
2018/05/16(水) 07:55:55.64ID:wZFh8fJh
そういう話題だったら初めからそう言えばいいのに
現実的には後出しが便利だから後出ししてる
現実を実測しよう
2018/05/16(水) 08:00:59.77ID:9/p4w1/n
いや後出しも何も>>457のブログにlazy遅いよねとか書いてあってそれについて話してるわけだし…
2018/05/16(水) 08:02:16.32ID:9/p4w1/n
と俺は思ってたんだが違うのか?
2018/05/16(水) 08:23:21.13ID:OmXLSXyH
あってるよ。
2018/05/16(水) 08:30:32.29ID:SZWziQ/v
もう少し真剣に考えてもいいんじゃないか?
誰も最適化が完璧に行われてる、の追試しないの?
ghcの最適化結果のバイナリをgdbで眺めるだけでも全然違うと思うが。

俺がやるとおま環でオラつくなとか言われるの目に見えてるから静観してるけどさ。
2018/05/16(水) 09:41:30.81ID:L2yt4rd4
お前の静観ってうるさいのなw
2018/05/16(水) 09:50:51.21ID:+AvdAm/t
例がクソすぎて正直興味わかない
2018/05/16(水) 09:51:48.57ID:ub+CyxOt
>>573
やめたれw
2018/05/16(水) 10:11:53.73ID:+AvdAm/t
これ正味のところコンパイラのバックエンドの性能比較にしかなってないし、
その差も最適化オプションの違いと想像できる範囲だもの
2018/05/16(水) 15:45:52.24ID:f5OfgQEL
うーん、だったら異なる言語の速度比較に説得力を持たせるためには、どんなルールを定めればいいの?
2018/05/16(水) 16:15:52.78ID:w3xM0aVb
お題を設定して、そのお題を解く実行速度でも競えば
2018/05/16(水) 17:11:19.52ID:nSjgdD8L
これは反対意見が多いと思うんだけど任意の問題について各々の言語で素直な(読み書きしやすい/一般的な)書き方で解いた際の速度比較が一番だと思ってる
コンパイルオプションレベルでの最適化はアリだと思うけどソースでの最適化なんてほんとにそれするの?っていうのあるし
2018/05/16(水) 17:35:38.66ID:JOa7NyYz
問題の難度が低すぎるから早押しクイズになってしまう
正解者が1名いるかいないかの難問なら速度はどうでもいいだろ
2018/05/16(水) 17:54:36.37ID:bvYagxcd
>>579
いや、そもそもソースを1つに限定しようとするのがダメだと思う
読みやすい(一般的な)コードと最適化を前提としたコードの両方を用意する
そうすれば両方のケースで比較できるようになる
あと、その任意の問題とやらも複数ケース用意する必要があるだろうな…
面倒臭いけどそれがベストだと思う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況