Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。
http://www.rust-lang.org/
https://github.com/rust-lang/rust
Servo
https://servo.org/
https://github.com/servo/servo
◆前スレ
プログラミング言語 Rust 2
http://echo.2ch.net/test/read.cgi/tech/1478023960
プログラミング言語 Rust 3 [無断転載禁止]©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
2017/05/21(日) 14:04:29.55ID:9L9dm7b/837デフォルトの名無しさん
2017/09/17(日) 16:26:31.76ID:IHBqIXQE >>833
少なくとも firefox の c/c++ 部分の書き換えを想定してるだろう。
まあ c/c++ と一口に言っても結構レイヤーは広いように思う。
てきとうなサーバープロセスなら確かに go は書きやすいよ。
rust にそういうエリアがあると思えんというところが問題の焦点じゃないかね。
少なくとも firefox の c/c++ 部分の書き換えを想定してるだろう。
まあ c/c++ と一口に言っても結構レイヤーは広いように思う。
てきとうなサーバープロセスなら確かに go は書きやすいよ。
rust にそういうエリアがあると思えんというところが問題の焦点じゃないかね。
838デフォルトの名無しさん
2017/09/17(日) 17:40:27.30ID:aqlfcEMy >>836
求めてるものかどうかわからんが、Iterator<Item=Result<t, E>>はcollectでResult<Vec<T> , E>などにできる
求めてるものかどうかわからんが、Iterator<Item=Result<t, E>>はcollectでResult<Vec<T> , E>などにできる
839デフォルトの名無しさん
2017/09/17(日) 19:45:22.12ID:0mVr+JRg 相当雑いけど>>838の実装例はこんな感じかな
ttps://play.rust-lang.org/?gist=c87421997c42f0dfa8aa6ecabbb7ba3b&version=stable
性能を突き詰めるならcollectしないでfilterの戻りをnextで回すべきだけど適当に
確か100万回くらい回したら数秒の差が出るくらいのはず
ttps://play.rust-lang.org/?gist=c87421997c42f0dfa8aa6ecabbb7ba3b&version=stable
性能を突き詰めるならcollectしないでfilterの戻りをnextで回すべきだけど適当に
確か100万回くらい回したら数秒の差が出るくらいのはず
840デフォルトの名無しさん
2017/09/17(日) 23:03:20.12ID:xQI4uTVr841デフォルトの名無しさん
2017/09/17(日) 23:17:40.08ID:tCD9jFlM >>839
https://play.rust-lang.org/?gist=4f2e38dd8570a14eb1801137a183e40d&version=stable
こういう途中Errがいたら戻り値もErr、全部OkならOk<colletion>な意図だった
https://play.rust-lang.org/?gist=4f2e38dd8570a14eb1801137a183e40d&version=stable
こういう途中Errがいたら戻り値もErr、全部OkならOk<colletion>な意図だった
842デフォルトの名無しさん
2017/09/17(日) 23:18:40.79ID:tCD9jFlM collectも#inlineついてるなら手でfor書くのと同じになりそうだけど遅くなるのか
ExactSizeIteratorとただのIteratorで違うとかならわかるんだが
ExactSizeIteratorとただのIteratorで違うとかならわかるんだが
843デフォルトの名無しさん
2017/09/17(日) 23:25:16.47ID:ks3Dkyyp OCamlだと普通なんで読みにくさを感じたことは無いなあ
むしろその変数はそこで終わりです、もう頭に入れとかなくても良いよってことだから脳にやさしいとまで感じる
むしろその変数はそこで終わりです、もう頭に入れとかなくても良いよってことだから脳にやさしいとまで感じる
844デフォルトの名無しさん
2017/09/18(月) 08:30:10.39ID:KEjrNeQk >>842
collectの関数コールは最適化されて消えるけど、collect内でVectorを作る分があるからな
メモリ確保して、要素をコピーしてって誤差程度だけどコストが乗っかる
filterまでだとFilterは作るけど要素のコピーはしてない感じだったから
他言語, 他ライブラリのfilterメソッドの戻りで配列/リストを作り直すIF/実装に比べて比較的早そうだと思った
collectの関数コールは最適化されて消えるけど、collect内でVectorを作る分があるからな
メモリ確保して、要素をコピーしてって誤差程度だけどコストが乗っかる
filterまでだとFilterは作るけど要素のコピーはしてない感じだったから
他言語, 他ライブラリのfilterメソッドの戻りで配列/リストを作り直すIF/実装に比べて比較的早そうだと思った
845デフォルトの名無しさん
2017/09/18(月) 11:26:55.19ID:/3RzmXHq なるほど、Vec作るコストという意味なら確かにcollectはコスト掛かるね
まとめて処理というのがIteratorの要素からなる配列などのデータ構造を作って何かすると理解していたけど、
そうでないならば
f.map(¦x¦ {do_something(); }).collect::<Result<Vec<()>, _>>()
とすれば作られるのはVec<()>で、要素サイズ0だからヒープからはメモリ割り当てられないはず
これやるぐらいならfor使った方が
まとめて処理というのがIteratorの要素からなる配列などのデータ構造を作って何かすると理解していたけど、
そうでないならば
f.map(¦x¦ {do_something(); }).collect::<Result<Vec<()>, _>>()
とすれば作られるのはVec<()>で、要素サイズ0だからヒープからはメモリ割り当てられないはず
これやるぐらいならfor使った方が
846デフォルトの名無しさん
2017/09/18(月) 14:28:43.98ID:nF8z8OFK 一方C言語ならそんな面倒なこと考えずにallocしてforでいい
学習コスト高くて性能も低い言語Rust
学習コスト高くて性能も低い言語Rust
847デフォルトの名無しさん
2017/09/18(月) 16:37:25.22ID:JVxZ+5NP alloc?
848デフォルトの名無しさん
2017/09/18(月) 17:16:35.57ID:nF8z8OFK >>847
mallocとcallocのことをまとめてallocって言うんだがまさかRust民そんなことも知らない?
mallocとcallocのことをまとめてallocって言うんだがまさかRust民そんなことも知らない?
849デフォルトの名無しさん
2017/09/18(月) 17:40:00.45ID:2cmO/IBQ 俺たち、ついさっきまでzero-allocationな実装方針について話してなかったっけ……?
850デフォルトの名無しさん
2017/09/18(月) 17:48:40.40ID:/3RzmXHq せんせーallocaはallocに含まれますか
851デフォルトの名無しさん
2017/09/18(月) 18:07:06.15ID:/S27bRBH 定義による
スタックから確保するものと
ヒープから確保するものを
どちらもallocと呼ぶなら含んでる
スタックから確保するものと
ヒープから確保するものを
どちらもallocと呼ぶなら含んでる
852デフォルトの名無しさん
2017/09/18(月) 18:11:47.24ID:iR2mDVT9853デフォルトの名無しさん
2017/09/18(月) 18:15:30.06ID:2aiOt6ta 基地外って同じ言葉を連呼するからNGし易くて助かる。
854デフォルトの名無しさん
2017/09/18(月) 19:17:59.90ID:ndBW2Q0n 要素サイズ0のVecはヒープからメモリ獲得しないと明言したはずなのですが
855デフォルトの名無しさん
2017/09/18(月) 19:24:02.49ID:JVxZ+5NP >>846の書くヒープアロケートするCコードはスタックアロケーションのみのRustコードより高性能なんだよきっと
856デフォルトの名無しさん
2017/09/18(月) 19:39:48.02ID:K4Qo/KNH857デフォルトの名無しさん
2017/09/18(月) 19:56:01.80ID:2cmO/IBQ858デフォルトの名無しさん
2017/09/19(火) 01:46:56.36ID:EmWEVfWy 話が明後日の方向に行ってるけど
>>844の主点はVecを作るコストではなくVecに要素コピーするコストの方だぞ
filterで除外した要素をcollect内でVecにせっせとコピーするからちょっち時間かかる
ちなみにC(++)でベタに実装するとこんな感じでリスト作成、要素コピーするからドングリの背比べ
std::list<char*> filter_collect(std::list<char*> v) {
std::list<char*> new_v;
for (auto i = v.begin(); i != v.end(); i++) {
if (*i != NULL) {
new_v.push_back(*i);
}
}
return new_v;
}
std::list<char*> v{"Hello", NULL, "World"};
auto new_v = filter_collect(v);
モジラ/Rustネガキャン君とRustのコンパイルが通るならCを使えば良い君が
よりよいCコードを挙げてくれるのをちょっと待ってみようか, 流石にこれは汚すぎる
>>844の主点はVecを作るコストではなくVecに要素コピーするコストの方だぞ
filterで除外した要素をcollect内でVecにせっせとコピーするからちょっち時間かかる
ちなみにC(++)でベタに実装するとこんな感じでリスト作成、要素コピーするからドングリの背比べ
std::list<char*> filter_collect(std::list<char*> v) {
std::list<char*> new_v;
for (auto i = v.begin(); i != v.end(); i++) {
if (*i != NULL) {
new_v.push_back(*i);
}
}
return new_v;
}
std::list<char*> v{"Hello", NULL, "World"};
auto new_v = filter_collect(v);
モジラ/Rustネガキャン君とRustのコンパイルが通るならCを使えば良い君が
よりよいCコードを挙げてくれるのをちょっと待ってみようか, 流石にこれは汚すぎる
859デフォルトの名無しさん
2017/09/19(火) 01:57:29.08ID:yqqf+3Rr (そもそもの>>836が何をしたいのかいまいち分かっていないなんて言えない)
860デフォルトの名無しさん
2017/09/19(火) 09:23:52.82ID:b711gf7K これをCというか
いやまあC++としても酷いが
いやまあC++としても酷いが
861デフォルトの名無しさん
2017/09/19(火) 09:49:54.63ID:EmWEVfWy (大丈夫、俺も分かってない...多分>>841さんの実装例が期待コードだったんだろうと匙投げた)
862デフォルトの名無しさん
2017/09/19(火) 11:20:24.23ID:yHWjYg1H 仕様分からないのに実装しようとするRustの文化すげー
863デフォルトの名無しさん
2017/09/19(火) 18:29:28.71ID:zYSzUAzu そういえばRustってそもそもまだ言語仕様がなかったっけな(RFCが通ってない)
そんな言語を良しとするモジカスとそのお友達
そんな言語を良しとするモジカスとそのお友達
864デフォルトの名無しさん
2017/09/20(水) 07:39:00.40ID:D+wOfrtb RubyやLua等も商用でも使われているけど公式な言語仕様って存在しなかった気がする
865デフォルトの名無しさん
2017/09/20(水) 08:58:49.24ID:q1jVsKYV RFCが通るとはどういう意味だろう
まさかIETFの話ではないだろうな
まさかIETFの話ではないだろうな
866デフォルトの名無しさん
2017/09/20(水) 17:20:54.79ID:8IyKZYzR867デフォルトの名無しさん
2017/09/20(水) 17:30:21.92ID:KkNJUG2l https://github.com/rust-lang/rfcs/blob/master/text/2113-dyn-trait-syntax.md
さすがにこのSyntaxはダサいぞ?
さすがにこのSyntaxはダサいぞ?
868デフォルトの名無しさん
2017/09/20(水) 18:24:29.42ID:8IyKZYzR どうせならいっそ新しいepochでbare Traitのシンタックスでimpl Traitのセマンティクスを表すように変えて欲しくもあるけれど、motivationでも言われている通り互換性の観点からしてまあ無理だわな
理念には同意できるけど、うーむ……ダサい
理念には同意できるけど、うーむ……ダサい
869デフォルトの名無しさん
2017/09/20(水) 18:24:58.43ID:SerGpeBo じゃあ討論してるIssueに行って、ダセェからこうしようぜって具体例を提案してこい
良さげだったら(y)押してやんよ
良さげだったら(y)押してやんよ
870デフォルトの名無しさん
2017/09/20(水) 18:39:23.24ID:Yecv0E+U871デフォルトの名無しさん
2017/09/20(水) 18:42:43.35ID:DfdXTJVQ 誰か3行で
872デフォルトの名無しさん
2017/09/23(土) 12:28:08.72ID:47xDJ4SG rustの三文字文化好き
mut, str, len, vec, rev
mut, str, len, vec, rev
873デフォルトの名無しさん
2017/09/23(土) 13:46:38.85ID:Cgi1rfOq 変数名にしたかったのを予約しやがって!でもある
874デフォルトの名無しさん
2017/09/23(土) 14:49:56.77ID:ebiRk4qs Contextual keywordって書いてある
875デフォルトの名無しさん
2017/09/23(土) 15:11:25.15ID:aCorn/qh876デフォルトの名無しさん
2017/09/23(土) 19:15:33.07ID:nrpIGIl5 str, len, rev
あたりは変数名として結構使うかな。
str , vec あたりは s, v くらい短くすることもある。
あたりは変数名として結構使うかな。
str , vec あたりは s, v くらい短くすることもある。
877デフォルトの名無しさん
2017/09/24(日) 17:44:10.64ID:VL5Szw+L 比較演算子 ==, <, > 等って、同じ型同士でしか定義できないのか
878デフォルトの名無しさん
2017/09/24(日) 20:16:16.24ID:dG0lqnCY それはEqとOrdの話でしょ
PartialEqとPartialOrdは別の型同士でも定義できる
PartialEqとPartialOrdは別の型同士でも定義できる
879デフォルトの名無しさん
2017/09/24(日) 20:38:52.59ID:VL5Szw+L あ、ホントだ。出来たわありがとう。
use std::cmp::PartialEq;
struct Foo(i32);
impl PartialEq<i32> for Foo {
fn eq(&self, other: &i32) -> bool {
self.0 == *other
}
}
use std::cmp::PartialEq;
struct Foo(i32);
impl PartialEq<i32> for Foo {
fn eq(&self, other: &i32) -> bool {
self.0 == *other
}
}
880デフォルトの名無しさん
2017/09/27(水) 15:23:55.91ID:ENHC296h Firefox Quantumリリースだってよ
881デフォルトの名無しさん
2017/09/27(水) 23:11:15.94ID:r8V8UQwO Rust 1.20、関連定数などを追加
https://www.infoq.com/jp/news/2017/09/rust-1-20-released
https://www.infoq.com/jp/news/2017/09/rust-1-20-released
882デフォルトの名無しさん
2017/09/28(木) 00:21:45.83ID:FngsmGBk 時報が壊れたと思ってたら、常時一ヶ月遅れの情報サイトをソースに時刻通知がきたよ
本人じゃなく模倣者だろうけど次回からは一次ソースのサイトをトリガーにしような!
本人じゃなく模倣者だろうけど次回からは一次ソースのサイトをトリガーにしような!
883デフォルトの名無しさん
2017/09/28(木) 00:30:16.29ID:fGSoqmif 何でこの人こんなに怒ってるんだろ?
884デフォルトの名無しさん
2017/09/28(木) 00:53:16.99ID:FngsmGBk 1. 時報が壊れたことに怒っている
2. 一ヶ月遅れのinfoqをソースにしたことを怒っている
3. 模倣者であることに怒っている
4. その他
どれだと思う?
2. 一ヶ月遅れのinfoqをソースにしたことを怒っている
3. 模倣者であることに怒っている
4. その他
どれだと思う?
885デフォルトの名無しさん
2017/09/28(木) 02:25:57.30ID:uh95Bh7/ 一ヶ月入院でもしてたんだろ
許してやれ
許してやれ
886デフォルトの名無しさん
2017/09/29(金) 10:21:58.71ID:YdXqj+6X CもObjCもここ数年は仕様変更がないから、コンパイルはそのまま通る。
変なコード書いてなければ動作確認も問題なくパスする。
メンテナンスフリーって言われれば確かにそうかもな。
あとはフレームワークで非推奨にになったメソッド書き換える程度だけど、
これはSwiftと共通の作業だし、そもそもやらなくても動く。
とにかくSwift移行していない俺は毎年高みの見物してる。
変なコード書いてなければ動作確認も問題なくパスする。
メンテナンスフリーって言われれば確かにそうかもな。
あとはフレームワークで非推奨にになったメソッド書き換える程度だけど、
これはSwiftと共通の作業だし、そもそもやらなくても動く。
とにかくSwift移行していない俺は毎年高みの見物してる。
887デフォルトの名無しさん
2017/09/29(金) 10:22:21.88ID:YdXqj+6X すまん誤爆した
888デフォルトの名無しさん
2017/09/29(金) 11:26:40.22ID:YA9Keehz これが小学生のおっぱいかよ・・・
12歳の乳とは思えんな・・・
12歳の乳とは思えんな・・・
889デフォルトの名無しさん
2017/09/29(金) 11:51:24.12ID:2cPiFSeP 誤爆しすぎだろ。
890デフォルトの名無しさん
2017/09/29(金) 22:06:45.55ID:7WUGaaf4 rustの前にc++とhaskellぐらいはやっておくべき?
891デフォルトの名無しさん
2017/09/29(金) 23:43:36.68ID:w5CvkGV8 C++なんてやらんでいい。haskellよりOCaml寄りじゃね?
C++よりメモリ周りが「javaからgcとロック付きオブジェクトとモニタと
並列ライブラリがなくなった」代わりに低レベルなマルチスレッドコード書けば
型システムが守ってくれるモノが近い。
C++よりメモリ周りが「javaからgcとロック付きオブジェクトとモニタと
並列ライブラリがなくなった」代わりに低レベルなマルチスレッドコード書けば
型システムが守ってくれるモノが近い。
892デフォルトの名無しさん
2017/09/30(土) 00:20:49.42ID:BhtSjkD0 所有権の概念はC++のmove semantics回りが近いと思うけどな
まあゲーム作るとかじゃなければわざわざC++やらなくてもいいと思うけど
まあゲーム作るとかじゃなければわざわざC++やらなくてもいいと思うけど
893デフォルトの名無しさん
2017/09/30(土) 22:05:33.32ID:uuI0Lqz4 Rust言語による第一プロダクトのFirefox Quantumですが
ベータ版リリースの時点でアドオンがお亡くなりになったとか、不安定でどうしようもないとか、メモリ食い潰して落ちるとか
様々なお声が聞こえてきますね
これがRustという安全な言語で作ったプロダクトなんですってね
おめでとうございますモジラ信者と工作員の皆様
ベータ版リリースの時点でアドオンがお亡くなりになったとか、不安定でどうしようもないとか、メモリ食い潰して落ちるとか
様々なお声が聞こえてきますね
これがRustという安全な言語で作ったプロダクトなんですってね
おめでとうございますモジラ信者と工作員の皆様
894デフォルトの名無しさん
2017/09/30(土) 22:25:31.06ID:BhW5NZCu アドオンが不安定ってのはRust関係なくね?
895デフォルトの名無しさん
2017/09/30(土) 22:38:45.63ID:ATIH6GBG ベータ版の意味も知らないガイジやんけ
ガガイのガイw
ガガイのガイw
896デフォルトの名無しさん
2017/09/30(土) 22:39:37.33ID:ATIH6GBG あそれあそれガイジが出た出たよよいのよいw
897デフォルトの名無しさん
2017/10/01(日) 00:00:05.60ID:HKOr6Xa1 >>894
API鞍替えのせいだから全く関係ない。
メモリも関係ないし、むしろ最近はバージョン上がるたびに消費メモリ減ってる。
というかパフォーマンス良くなったのは設計が変わったからで言語は関係ない。
言語関係する部分はC++よりマシだから書きやすくなったこと。
API鞍替えのせいだから全く関係ない。
メモリも関係ないし、むしろ最近はバージョン上がるたびに消費メモリ減ってる。
というかパフォーマンス良くなったのは設計が変わったからで言語は関係ない。
言語関係する部分はC++よりマシだから書きやすくなったこと。
898デフォルトの名無しさん
2017/10/01(日) 00:42:35.99ID:5jXWEgsq >>897
設計の変更って具体的に何を変えたの?マルチスレッドに強いとか?gpuぜんていとか?
設計の変更って具体的に何を変えたの?マルチスレッドに強いとか?gpuぜんていとか?
899デフォルトの名無しさん
2017/10/01(日) 23:58:38.97ID:HtGiOKW4 >>898
HTMLの描画周りがマルチスレッド前提になっただけよ。
シングル前提でやるとHTML/CSSパース、DOM構築で同期取りまくりが減っただけ。
うちのmem 4g, 2core環境だとハードが足引っ張ってたから多分mem 8g, 4coreくらい要ると思う。
ここ数年のロースペックマシン以上が恩恵受けるんじゃ?
gpu前提はwebrenderだからまだ入ってないんじゃない。
HTMLの描画周りがマルチスレッド前提になっただけよ。
シングル前提でやるとHTML/CSSパース、DOM構築で同期取りまくりが減っただけ。
うちのmem 4g, 2core環境だとハードが足引っ張ってたから多分mem 8g, 4coreくらい要ると思う。
ここ数年のロースペックマシン以上が恩恵受けるんじゃ?
gpu前提はwebrenderだからまだ入ってないんじゃない。
900デフォルトの名無しさん
2017/10/02(月) 00:20:10.84ID:cuHSEpt/ あ、悪い。webrenderもう入ってるわ。
webrenderとstyloが入ってるからもうマルチスレッドにgpu前提。
webrenderとstyloが入ってるからもうマルチスレッドにgpu前提。
901デフォルトの名無しさん
2017/10/02(月) 11:21:20.04ID:pqkzvat0 Firefox爆速化件だけど、あのタイミングでRust化してればRustにも一気に注目集まったのにな。
もったいないな。
もったいないな。
902デフォルトの名無しさん
2017/10/02(月) 14:16:58.24ID:5q9eN7RZ w3mの代替になるコンソールブラウザがほしいところ
903デフォルトの名無しさん
2017/10/04(水) 00:06:33.86ID:eeE5kOTG lynks、links、EWW(Emacs)ではいかんかった?
904デフォルトの名無しさん
2017/10/04(水) 01:21:42.46ID:Eb49UXKr それよりAmayaの後継をwhatwgに作って欲しい
905デフォルトの名無しさん
2017/10/04(水) 09:33:38.58ID:xy+7bXnG >>901
cssはrustになったんだよね?
cssはrustになったんだよね?
906デフォルトの名無しさん
2017/10/04(水) 17:45:04.59ID:U/p5CYqb FizzBuzz を無駄にベンチマークしてみた By Nim、golang、Rust、Crystal、その他
http://wolfbash.hateblo.jp/entry/2017/07/25/232027
http://wolfbash.hateblo.jp/entry/2017/07/25/232027
907デフォルトの名無しさん
2017/10/04(水) 19:54:27.21ID:eSRFZM0D なんというか、、参考にならないベンチマークだな。
908デフォルトの名無しさん
2017/10/04(水) 23:17:46.14ID:aUT+fN/H 参考になるベンチマーク教えてくれ
909デフォルトの名無しさん
2017/10/05(木) 00:04:55.49ID:NTKdykpp http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=knucleotide
ここの諸々
久しぶりに見たらC gccがついに抜き返しててワロタ
C言語、頑張ったじゃん
ここの諸々
久しぶりに見たらC gccがついに抜き返しててワロタ
C言語、頑張ったじゃん
910デフォルトの名無しさん
2017/10/05(木) 01:11:32.12ID:froF/tdj >>909
6パターンだった頃は全部実行出来てたけど速度はバラバラでたしか#5が最速でC言語より速かった
きっと最適化を人間が制御するのは難しくて頑張らないとJavaやC#にも勝てない
現在7パターンあるけど4つがmake errorになるくらい言語仕様が不安定
実に参考になる
6パターンだった頃は全部実行出来てたけど速度はバラバラでたしか#5が最速でC言語より速かった
きっと最適化を人間が制御するのは難しくて頑張らないとJavaやC#にも勝てない
現在7パターンあるけど4つがmake errorになるくらい言語仕様が不安定
実に参考になる
911デフォルトの名無しさん
2017/10/05(木) 02:42:46.62ID:e0oopfTd >>909
mem順にしてもgz順にしてもcpu順にしてもD言語出てこないの悲しいな
mem順にしてもgz順にしてもcpu順にしてもD言語出てこないの悲しいな
912デフォルトの名無しさん
2017/10/05(木) 04:56:45.53ID:ovcMkddr d言語のメリットって何?
913デフォルトの名無しさん
2017/10/05(木) 06:07:45.62ID:eC/9GoxN C++ではないこと
914デフォルトの名無しさん
2017/10/05(木) 09:06:46.27ID:NTKdykpp915デフォルトの名無しさん
2017/10/05(木) 10:18:07.23ID:KYi0aOcC RustもJavaも血反吐吐くほど最適化してるんじゃないの?
ポインタ扱いにくい言語でそれやると逆にコードが汚くなるから、
C言語よりも酷いコードになってるかもしれんよ。
ポインタ扱いにくい言語でそれやると逆にコードが汚くなるから、
C言語よりも酷いコードになってるかもしれんよ。
916デフォルトの名無しさん
2017/10/05(木) 10:41:40.98ID:j9fazbko unsafe使ったらRustは更に早くなるのか・・・胸熱
取り敢えず、各コードを読んでから批評してはどうか
本家Rust Teamが改修して今のスコアだけど
彼らが直したのはI/Oにバッファ使おうぜってだけでそこまで変態的じゃないのよね
matchやmap, iterでクロージャー多用してるけど最適化コンパイルしたらif, forで書くのと同じ処理になるし
Option.mapは関数コールがあるから重たいかなと以前調べたら
LLVM中間コードの時点でインラインのif分岐(goto文)に展開されてベタコードと同じになるのかよと考えるのやめた
取り敢えず、各コードを読んでから批評してはどうか
本家Rust Teamが改修して今のスコアだけど
彼らが直したのはI/Oにバッファ使おうぜってだけでそこまで変態的じゃないのよね
matchやmap, iterでクロージャー多用してるけど最適化コンパイルしたらif, forで書くのと同じ処理になるし
Option.mapは関数コールがあるから重たいかなと以前調べたら
LLVM中間コードの時点でインラインのif分岐(goto文)に展開されてベタコードと同じになるのかよと考えるのやめた
917デフォルトの名無しさん
2017/10/05(木) 11:26:31.98ID:291DnPVM918デフォルトの名無しさん
2017/10/05(木) 12:31:31.21ID:mvbuHBBx ぼくも同じこと思った…
919デフォルトの名無しさん
2017/10/05(木) 12:49:03.43ID:i3OOJkl5 Javaは実行時最適化がはまれば速い感じ
でも、カリカリにチューニングされたJavaコードは、クラスをあまり使わずArrayだらけだっりしてつらい
でも、カリカリにチューニングされたJavaコードは、クラスをあまり使わずArrayだらけだっりしてつらい
920デフォルトの名無しさん
2017/10/05(木) 17:58:39.05ID:DY6JRVMF rlsもっと頑張って
replも提供して😭
replも提供して😭
921デフォルトの名無しさん
2017/10/05(木) 18:51:45.79ID:BHTkAY6s C言語の __func__ みたいなの無いのかよ〜
922デフォルトの名無しさん
2017/10/05(木) 23:04:07.77ID:arvYOnSy Javaやら.NET等のJIT系言語は速い速い言われるけど実際のアプリケーションでその速さを体感できたことは一度もないや・・・
923デフォルトの名無しさん
2017/10/05(木) 23:35:19.66ID:AzAoa99L >>909
rust#7はrayon使ってるから中身はcocoとfutureか。
ライブラリが頑張ってzero cost抽象化が効いてる感じかね。
javaはもうちょっと早くなるんだけどなぁ。
これ以上やるとjitとライブラリに丸投げして素直なコード書くことに
専念できなくなるからやりたくない感じ。
将来的にはconst arrayと、勝手にSIMD使ってもうちょっとマシになるかな。
>>919
連続してることが保証されないからカリカリにチューニングする時は配列には頼らないよ。
nio buffer使うことはあるけど。unsafe使わずに配列確保すると0クリアされて無駄に遅いし。
仮想関数テーブルなくしたほうが速いからメソッド検索>invokestaticのコストの時staticに変えるとか、
動的ディスパッチ自分で実装するときにconstant specific class bodyとtable switch組み合わせるとか。
>>921
ないけどrpすればすぐに入りそう。
rust#7はrayon使ってるから中身はcocoとfutureか。
ライブラリが頑張ってzero cost抽象化が効いてる感じかね。
javaはもうちょっと早くなるんだけどなぁ。
これ以上やるとjitとライブラリに丸投げして素直なコード書くことに
専念できなくなるからやりたくない感じ。
将来的にはconst arrayと、勝手にSIMD使ってもうちょっとマシになるかな。
>>919
連続してることが保証されないからカリカリにチューニングする時は配列には頼らないよ。
nio buffer使うことはあるけど。unsafe使わずに配列確保すると0クリアされて無駄に遅いし。
仮想関数テーブルなくしたほうが速いからメソッド検索>invokestaticのコストの時staticに変えるとか、
動的ディスパッチ自分で実装するときにconstant specific class bodyとtable switch組み合わせるとか。
>>921
ないけどrpすればすぐに入りそう。
924デフォルトの名無しさん
2017/10/06(金) 00:32:27.39ID:ckjydJIo925デフォルトの名無しさん
2017/10/06(金) 00:59:19.34ID:PVLgxPLf Dは仕様変更が多すぎた
926デフォルトの名無しさん
2017/10/06(金) 01:12:44.86ID:aJzo16CX >>923
javaの配列って連続領域の保証されてないの?
javaの配列って連続領域の保証されてないの?
927デフォルトの名無しさん
2017/10/06(金) 11:58:56.15ID:R7tcOQE1 スレチだけど、JVMの実装仕様なんてベンダー依存でしょ, OracleとGoogleでも当然違うわ
928デフォルトの名無しさん
2017/10/06(金) 22:14:03.16ID:aJzo16CX だから言語として仕様化されてないの?ってことだろ。
c++だって実装バラバラだけど連続領域な仕様だろ。
c++だって実装バラバラだけど連続領域な仕様だろ。
929デフォルトの名無しさん
2017/10/06(金) 22:51:58.93ID:R7tcOQE1 Cはポインタ I/F仕様に引きづられて配列仕様も必然として明確にせざる得ないからでしょ
JVMはbyte codeの解釈さえあってれば良くて、データ操作の実装仕様は知るかよって話だよ
VM上では連続領域に見せかけても、実態は数チャンクに分けた配列の持ち方だってあろうよ
JVMはbyte codeの解釈さえあってれば良くて、データ操作の実装仕様は知るかよって話だよ
VM上では連続領域に見せかけても、実態は数チャンクに分けた配列の持ち方だってあろうよ
930デフォルトの名無しさん
2017/10/07(土) 00:56:21.68ID:OPYXFct1 いやだから、データ構造としての「配列」のデータ操作の時間空間コストと
実装がズレてたらそれはもう「配列」じゃないから
実装がズレてたらそれはもう「配列」じゃないから
931デフォルトの名無しさん
2017/10/07(土) 02:30:16.92ID:tD6GhHlF 一般的に配列と呼ばれるオブジェクトがメモリアドレス上でも断片化しないことを保証される処理系ってほとんど無いのでは?
ミュータブルオブジェクトへ要素を継ぎ足していったらコードからは連続的に見えてもメモリ配置は断片化するだろう
ミュータブルオブジェクトへ要素を継ぎ足していったらコードからは連続的に見えてもメモリ配置は断片化するだろう
932デフォルトの名無しさん
2017/10/07(土) 04:32:31.86ID:OPYXFct1 「要素を継ぎ足していったら」がそもそもオカシイ
要素継ぎ足せるのはそもそも配列じゃなくてロープかなんかだから
要素継ぎ足せるのはそもそも配列じゃなくてロープかなんかだから
933デフォルトの名無しさん
2017/10/07(土) 08:20:38.57ID:PzpAWNqF 配列の要件ってインデックスで要素にアクセスすることくらいじゃないの?
要素のポインタをとって操作できる言語以外は実際の記憶領域が連続かそうでないか
判断する術はないと思うが。
要素のポインタをとって操作できる言語以外は実際の記憶領域が連続かそうでないか
判断する術はないと思うが。
934デフォルトの名無しさん
2017/10/07(土) 08:39:14.98ID:rgSj2Elc ポインタ操作だって処理系依存でどんな変態実装も理論上はあり得ると思うけど
C/C++の仕様を調べる気力がない
C/C++の仕様を調べる気力がない
935デフォルトの名無しさん
2017/10/07(土) 09:54:16.89ID:h9TjUWM8936デフォルトの名無しさん
2017/10/07(土) 12:18:14.74ID:bipqd+gM 配列だとインデックスのアクセスにO(1)を期待してるが
それが保証できるのかという話じゃないの
それが保証できるのかという話じゃないの
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- テレ朝本社から社外スタッフの男性が転落し死亡 テレビ朝日がコメント [ひかり★]
- 【米FRB】0.25%利下げ決定 3会合連続、雇用下支え [蚤の市★]
- 訪米認証「ESTA」、SNS利用情報の提出義務化へ 日本人観光客も対象に [蚤の市★]
- 「身を切る改革」どこへ? 維新「身内」への公金支出、地方でも続々 [蚤の市★]
- <櫻坂46松田里奈>ランジェリーカット公開 照れながらTシャツ脱ぐ [ひかり★]
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- 【画像】東京都民「助けて!満員電車もう無理いいぃぃいいぃぃぃいいいいいぃ😭」!!!! [732289945]
- (´・ω・`)おはよ
- お前らって議論できないよな
- 一般人「起きなきゃ…」 俺ら「寝ようかなzzz」
- 【画像】テレビ番組で女子アナの一軍下着を晒してしまい炎上
- 【高市逃げて!】 震度6強の地震で「NTT青森八戸ビル」で鉄塔が損傷、倒壊の恐れ。 国道通行止め & 住民に避難指示 [485983549]
