「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていう雑談スレ。
結局C++とRustってどっちが良いの? 4traits
https://mevius.5ch.net/test/read.cgi/tech/1686046386/
関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
探検
結局C++とRustってどっちが良いの? 5traits
■ このスレッドは過去ログ倉庫に格納されています
2023/06/30(金) 21:56:35.52ID:PDIJ4aZy
653デフォルトの名無しさん
2023/07/16(日) 21:48:38.53ID:MXLn+eQD 自分用言語だから、(世間評価が)どうなろうとかまわんぞ
廃れすぎてコンパイラがなくなるとかまでいくと困るが…そこまではないだろ…haha
廃れすぎてコンパイラがなくなるとかまでいくと困るが…そこまではないだろ…haha
654デフォルトの名無しさん
2023/07/17(月) 04:32:46.63ID:6nWUTG61 しかし実際は、日本語プログラミング言語なでしこ
の作者みたいな恐らく高齢者がRust信者で
あったりするのだよなぁ。
の作者みたいな恐らく高齢者がRust信者で
あったりするのだよなぁ。
655デフォルトの名無しさん
2023/07/17(月) 09:43:25.24ID:tnTatiuh Rustは難しいと文句言う人はwebでスクリプトしか書いてこなかったひと
https://zenn.dev/helloyuki/scraps/94c1dd0822c54f
https://zenn.dev/mabe/articles/936b788cd2b4d4
フーン
https://zenn.dev/khale/articles/rust-beginners-catchup
https://zenn.dev/helloyuki/scraps/94c1dd0822c54f
https://zenn.dev/mabe/articles/936b788cd2b4d4
フーン
https://zenn.dev/khale/articles/rust-beginners-catchup
656デフォルトの名無しさん
2023/07/17(月) 09:45:14.52ID:tnTatiuh657デフォルトの名無しさん
2023/07/17(月) 09:46:49.09ID:tnTatiuh >>650
そんな心配は unsafe {} で全て解決
そんな心配は unsafe {} で全て解決
658デフォルトの名無しさん
2023/07/17(月) 09:47:54.55ID:tnTatiuh659デフォルトの名無しさん
2023/07/17(月) 10:03:55.54ID:afOmWYlK マスク氏がAI規制しようとしたのも有名人が匿名性を規制しようとするのも
自分が持ってない力を他人が持つことを最優先で規制したいんだろうと思う
だからリスクの大きさと優先順位は比例しない
自信の大きさにも比例しない
しかし誰でもコピーできるオープンソースについては
自分が持ってないと感じた物は一体何なんだろう
自分が持ってない力を他人が持つことを最優先で規制したいんだろうと思う
だからリスクの大きさと優先順位は比例しない
自信の大きさにも比例しない
しかし誰でもコピーできるオープンソースについては
自分が持ってないと感じた物は一体何なんだろう
660デフォルトの名無しさん
2023/07/17(月) 10:18:03.63ID:j0Vw12Lc >>654
それはただの偏見では?自分は学生だけど、Rustは大好きですよ。と言っても必要に応じて別の言語も普通に使うけど。絶対的に嫌いなのがJavaですかね。なぜか全く好きになれなかった。C, C++はまあ、嫌いではないですよ。
それはただの偏見では?自分は学生だけど、Rustは大好きですよ。と言っても必要に応じて別の言語も普通に使うけど。絶対的に嫌いなのがJavaですかね。なぜか全く好きになれなかった。C, C++はまあ、嫌いではないですよ。
661デフォルトの名無しさん
2023/07/17(月) 10:33:38.53ID:1MjL2U0C662デフォルトの名無しさん
2023/07/17(月) 11:20:26.14ID:8CmoCsnZ 浅く広くさくっと読みたい初心者向けの本の方が売れるんだよ
一般書店に並ぶから
一般書店に並ぶから
663デフォルトの名無しさん
2023/07/17(月) 12:14:44.74ID:galtzlSN 普通は公式ドキュメントか、ソースからだよな
クリエイティブツールだと、ようつべで操作してんのみたりもせんではないけど
クリエイティブツールだと、ようつべで操作してんのみたりもせんではないけど
664デフォルトの名無しさん
2023/07/17(月) 14:41:33.79ID:+IbP7SE4 日本語プログラミング言語なでしこ作者、クジラ飛行机:
「手軽に音データを扱えるのもRustの魅力です。
Rustで自作シンセ開発ブーム到来目前?!」
と書いてるけど、いわゆるブーム捏造なんじゃないの。
「手軽に音データを扱えるのもRustの魅力です。
Rustで自作シンセ開発ブーム到来目前?!」
と書いてるけど、いわゆるブーム捏造なんじゃないの。
665デフォルトの名無しさん
2023/07/17(月) 14:49:29.12ID:tRotVpCU あいつのはどれも30分立ち読みで十分な内容だからタイパがいい
まとめサイトみたいなもの
買わないけどね
まとめサイトみたいなもの
買わないけどね
666デフォルトの名無しさん
2023/07/18(火) 02:50:07.52ID:ArV4bzaH 苦心して漸く多次元配列構造体のイテレータやインデックスとか大体の演算が実装できた。ただし、今の所、全くマルチスレッド対応ではにいし、GPUの抽象化もできてない。
requires_gradも実装できてない。まだ、大分、長い道のりって感じだわ。
requires_gradも実装できてない。まだ、大分、長い道のりって感じだわ。
667デフォルトの名無しさん
2023/07/18(火) 04:44:55.78ID:20jZ4czG オープンソースは、暴力と同じ。
暴力を振るうことは人間の能力の一つではあるが、
それだと社会が成り立たなくなるので近代社会では禁止
されているのと同様、オープンソースは禁止すべきだ。
暴力を振るうことは人間の能力の一つではあるが、
それだと社会が成り立たなくなるので近代社会では禁止
されているのと同様、オープンソースは禁止すべきだ。
668デフォルトの名無しさん
2023/07/18(火) 04:47:39.80ID:20jZ4czG >>667
発展途上国で低賃金でミシン労働者を使うのは搾取なので
禁止すべきと言われているが、それとオープンソースは同じ。
逆に、ミシンの方だけ禁止してオープンソースは許容
するのは差別。
LGBTやジェンダーだけ問題視するのもおかしい。
オープンソースは人権侵害だ。
発展途上国で低賃金でミシン労働者を使うのは搾取なので
禁止すべきと言われているが、それとオープンソースは同じ。
逆に、ミシンの方だけ禁止してオープンソースは許容
するのは差別。
LGBTやジェンダーだけ問題視するのもおかしい。
オープンソースは人権侵害だ。
669デフォルトの名無しさん
2023/07/18(火) 08:55:35.36ID:D1xcke2e 情報工学系ニキに聞いてみたい
volatileと書いたら、ついついatomicも付いてくると考えがちなのは、何の誤謬なのかな
volatileと書いたら、ついついatomicも付いてくると考えがちなのは、何の誤謬なのかな
670デフォルトの名無しさん
2023/07/18(火) 10:13:13.27ID:xpmB4AL6 イメージとしては両者は逆だな
volatileはIOメモリなどアクセスのためメモリ直接演算の最適化せずに律儀に値の読み込み→値の演算→値の書き込み
atomicはマルチスレッドなど競合に対処するためアトミック指定のメモリ直接演算
volatileはIOメモリなどアクセスのためメモリ直接演算の最適化せずに律儀に値の読み込み→値の演算→値の書き込み
atomicはマルチスレッドなど競合に対処するためアトミック指定のメモリ直接演算
671デフォルトの名無しさん
2023/07/18(火) 11:09:47.82ID:8SlkaJNb672デフォルトの名無しさん
2023/07/18(火) 14:01:35.52ID:Jy8oOC40 高速に動くプログラムを作るには極力if文を減らす、コピーを減らす等のキャッシュ効率の向上、+=, -=, *=, /=等の演算子でできるだけ四則演算を回していく。ここら辺か。
Rustでこの様な工夫をしたところ、かなりサイズの大きい配列の計算が速くなった。
Rustでこの様な工夫をしたところ、かなりサイズの大きい配列の計算が速くなった。
673デフォルトの名無しさん
2023/07/18(火) 15:28:04.66ID:FdSfzeLG >>672
本当はどんなマシン語(アセンブリコード)になるかを
知っていないと十分な高速化は難しいことがある。
それと、それ以上にアルゴリズムの
O(1)、O(log N)、O(N)、O(N logN)、
O(N^2)などの違いの方が遥かに重要だったりする。
数学が出来ない人は、後者が理解できない。
B.J.Stroustrup 氏もその辺が全く理解できて無い。
本当はどんなマシン語(アセンブリコード)になるかを
知っていないと十分な高速化は難しいことがある。
それと、それ以上にアルゴリズムの
O(1)、O(log N)、O(N)、O(N logN)、
O(N^2)などの違いの方が遥かに重要だったりする。
数学が出来ない人は、後者が理解できない。
B.J.Stroustrup 氏もその辺が全く理解できて無い。
674デフォルトの名無しさん
2023/07/18(火) 15:40:09.79ID:Jy8oOC40 >>673
アルゴリズムの最適化は当然だろ。それはやった上での話だよ。
アルゴリズムの最適化は当然だろ。それはやった上での話だよ。
675デフォルトの名無しさん
2023/07/18(火) 15:42:48.20ID:FdSfzeLG676デフォルトの名無しさん
2023/07/18(火) 15:55:20.63ID:Jy8oOC40 >>675
Stroustrupって誰だよ。自分は全然知らないな。普通はアルゴリズムの最適化を行い、プログラム自体の最適化を行うもんだろ。
Stroustrupって誰だよ。自分は全然知らないな。普通はアルゴリズムの最適化を行い、プログラム自体の最適化を行うもんだろ。
677デフォルトの名無しさん
2023/07/18(火) 16:06:28.75ID:fggT64M6 遅くなるの判ってても
.clone() しまくりたくなる誘惑
.clone() しまくりたくなる誘惑
678デフォルトの名無しさん
2023/07/18(火) 16:12:19.35ID:Jy8oOC40 >>677
できる限り参照返しにしてる。
できる限り参照返しにしてる。
679デフォルトの名無しさん
2023/07/18(火) 16:23:03.42ID:fggT64M6680デフォルトの名無しさん
2023/07/18(火) 16:26:10.43ID:fggT64M6 >>678
hoge.clone() したくなる場面(というかRustcがシレっとhoge.clone()しろって薦めてくるとき)
&hoge[..] とするだけで済むケースが結構あるけどこれ速くなってるよね?
hoge.clone() したくなる場面(というかRustcがシレっとhoge.clone()しろって薦めてくるとき)
&hoge[..] とするだけで済むケースが結構あるけどこれ速くなってるよね?
681デフォルトの名無しさん
2023/07/18(火) 16:53:51.58ID:fFSHFUc1 仕事でやってるやつでアルゴリズムの単純なオーダーを理解できないやつなんていないだろ
amortizedを理解できないとかそういう話ならまだわからなくもないが
amortizedを理解できないとかそういう話ならまだわからなくもないが
682デフォルトの名無しさん
2023/07/18(火) 17:12:16.37ID:FdSfzeLG >>681
アメリカ人は学者ですらちゃんと理解できて無い。
アメリカ人は学者ですらちゃんと理解できて無い。
683デフォルトの名無しさん
2023/07/18(火) 18:33:02.09ID:ArV4bzaH684デフォルトの名無しさん
2023/07/19(水) 00:05:33.03ID:OLP4lycj >>676
StroustrupはC++を作った人で少し前にその人の書いた記事が話題になってた
要約すると↓みたいな流れだったと思う
記事(英語)の内容
ファームウェアみたいにメモリアクセスが高価な環境では多少非効率でも
vectorを使った方がキャッシュ等の関係でパフォーマンスがよくなる
実測データでも数万件程度(うろ覚え)ではvectorが優位だった
記事に対するこのスレでの批判
何にでもvectorを使うように推奨するのはアルゴリズムを理解できてないからだ
StroustrupはC++を作った人で少し前にその人の書いた記事が話題になってた
要約すると↓みたいな流れだったと思う
記事(英語)の内容
ファームウェアみたいにメモリアクセスが高価な環境では多少非効率でも
vectorを使った方がキャッシュ等の関係でパフォーマンスがよくなる
実測データでも数万件程度(うろ覚え)ではvectorが優位だった
記事に対するこのスレでの批判
何にでもvectorを使うように推奨するのはアルゴリズムを理解できてないからだ
685デフォルトの名無しさん
2023/07/19(水) 00:22:21.27ID:A8l3aPdJ 算数100点大先生がcache localityを理解できないという話をまたやるのか
686デフォルトの名無しさん
2023/07/19(水) 00:38:56.49ID:BVUrsxWl >>680
どういうコードでhoge.clone()をお勧めされるんですか?
どういうコードでhoge.clone()をお勧めされるんですか?
687デフォルトの名無しさん
2023/07/19(水) 01:09:55.37ID:uHB1pLL3 ハッシュテーブルが遅くなる攻撃を思いつくような奴は確率を信じてない
というかこのラインをこえたら信じないというローカルルールがある
そもそもローカルがグローバルより劣っているみたいな考えは数学で扱わないので
そんなものを信じる義理はない
というかこのラインをこえたら信じないというローカルルールがある
そもそもローカルがグローバルより劣っているみたいな考えは数学で扱わないので
そんなものを信じる義理はない
688デフォルトの名無しさん
2023/07/19(水) 01:44:50.95ID:I9n1c/oL >>685
理解できて無いのはこのスレの馬鹿どもとStroustrup氏の法だ。
理解できて無いのはこのスレの馬鹿どもとStroustrup氏の法だ。
689デフォルトの名無しさん
2023/07/19(水) 04:04:32.47ID:hoAEd/Nt 文脈が全くわからないのだがStroustrupの記事ってどれ?
690デフォルトの名無しさん
2023/07/19(水) 08:41:42.67ID:fSe9gnNy691デフォルトの名無しさん
2023/07/19(水) 09:52:37.73ID:R6hIykH/ ハゲは>>684記事で実測を示したんでしょ?
692デフォルトの名無しさん
2023/07/19(水) 11:34:57.60ID:x9es5cRL >>676
C/C++ スレでハゲと描かれていたらそいつのことだ
C/C++ スレでハゲと描かれていたらそいつのことだ
693デフォルトの名無しさん
2023/07/19(水) 11:37:33.24ID:x9es5cRL694デフォルトの名無しさん
2023/07/19(水) 12:59:18.29ID:j0DQe/l9 >>690
「ほとんどの」というのが嘘だ。
「ほとんどの」というのが嘘だ。
695デフォルトの名無しさん
2023/07/19(水) 13:00:42.03ID:j0DQe/l9 この板は馬鹿ばっかりで、それで納得してしまうのかも
知れんが、海外のサイトだと、ちゃんと、リンクリストが
有利な場合が沢山あげられている。
知れんが、海外のサイトだと、ちゃんと、リンクリストが
有利な場合が沢山あげられている。
697デフォルトの名無しさん
2023/07/19(水) 13:07:03.89ID:j0DQe/l9698デフォルトの名無しさん
2023/07/19(水) 13:15:37.13ID:R6hIykH/699デフォルトの名無しさん
2023/07/19(水) 14:05:33.79ID:uHB1pLL3 価値観を押し付け合うのは実は平和的だよな
相手の価値観に合わせる柔軟なタイプが最も危険で
相手が戦争嫌いではないと知ったら嫌いになるまで戦争をやめない
相手の価値観に合わせる柔軟なタイプが最も危険で
相手が戦争嫌いではないと知ったら嫌いになるまで戦争をやめない
700デフォルトの名無しさん
2023/07/19(水) 14:24:01.78ID:+s9cgmAB Stroustrup師って、一人でさらさらって書いて出しちゃう御仁なのかな
こーゆうツッコミが入るのはわかるだろうにね やっぱ原著見ないとか
こーゆうツッコミが入るのはわかるだろうにね やっぱ原著見ないとか
701デフォルトの名無しさん
2023/07/19(水) 14:45:35.26ID:x9es5cRL >>699
なるほど折伏ですね判ります
なるほど折伏ですね判ります
702デフォルトの名無しさん
2023/07/19(水) 15:39:26.34ID:ZB5rrH9Z703デフォルトの名無しさん
2023/07/19(水) 16:11:16.93ID:KlTfFVa+704デフォルトの名無しさん
2023/07/19(水) 16:21:05.94ID:izSWunkt705デフォルトの名無しさん
2023/07/19(水) 20:59:38.09ID:OLP4lycj 興味ある人のためにStroustrup氏の記事のリンク(Rust本スレのPart18で議論されてた)
https://www.stroustrup.com/Software-for-infrastructure.pdf
URLからも分かるけど記事のタイトルは「Software Development of Infrastracture」で内容は少しハード寄り
https://www.stroustrup.com/Software-for-infrastructure.pdf
URLからも分かるけど記事のタイトルは「Software Development of Infrastracture」で内容は少しハード寄り
706デフォルトの名無しさん
2023/07/19(水) 21:18:14.58ID:Ss9DWb65 >>702
スゲーCOBOLに勝ててるんじゃん
スゲーCOBOLに勝ててるんじゃん
707デフォルトの名無しさん
2023/07/19(水) 21:21:56.85ID:L5673Vn2 >>705
ハゲの言うinfrastructure softwareはハードよりかどうかは関係ない
ハゲの言うinfrastructure softwareはハードよりかどうかは関係ない
708デフォルトの名無しさん
2023/07/19(水) 22:58:56.01ID:hoAEd/Nt 俺はハゲに同意かな
LinkedListはもはや古いデータ構造だと思う
現代のアーキテクチャにおいてはキャッシュメモリに乗せることがめちゃくちゃ重要なんだよ
LinkedListは挿入や削除を繰り返すとメモリアドレスがめちゃくちゃになりがちだし
ポインタを辿るという操作もページアウトなどを引き起こす
普通にポインタ配列のvectorが良い
もちろんreallocのコストが無視できない環境だと有効であるのは間違いない
LinkedListはもはや古いデータ構造だと思う
現代のアーキテクチャにおいてはキャッシュメモリに乗せることがめちゃくちゃ重要なんだよ
LinkedListは挿入や削除を繰り返すとメモリアドレスがめちゃくちゃになりがちだし
ポインタを辿るという操作もページアウトなどを引き起こす
普通にポインタ配列のvectorが良い
もちろんreallocのコストが無視できない環境だと有効であるのは間違いない
709デフォルトの名無しさん
2023/07/19(水) 23:21:25.02ID:hoAEd/Nt キャッシュメモリがゴミカスレベルのサイズ
もしくは存在しないレベル
メモリアロケーションのコストが高い
追加削除が頻繁に起きまくるようなソフトウェア
これらの場合はLinkedListで良いかも
もしくは存在しないレベル
メモリアロケーションのコストが高い
追加削除が頻繁に起きまくるようなソフトウェア
これらの場合はLinkedListで良いかも
710デフォルトの名無しさん
2023/07/19(水) 23:33:20.68ID:/VZakDHW コンパイラとかもろもろ最適化して計測するとndarrayクレートのArrayのイテレータよりも自分の作った多次元構造体のイテレータの方がまだ10倍くらい遅い。nextメソッドで呼び出される自作の外部関数の呼び出しがコストになってるっぽい。
711デフォルトの名無しさん
2023/07/20(木) 02:38:53.91ID:w+pPERAN 馬鹿な人ほど、LinkedListを嫌う傾向がある。
712デフォルトの名無しさん
2023/07/20(木) 02:50:37.46ID:o+4teY+W ほとんどのケースでLinkedListが使われないのは遅いしメモリも余分に食うためだ
次の位置のアドレスを得るためにメモリアクセスが必要となり遅い
Vectorなら次の位置のアドレスはインクリメントするだけだ
前の位置も辿りたいならLinkedListだと双方向リンクでさらにメモリ使用量も増える
次の位置のアドレスを得るためにメモリアクセスが必要となり遅い
Vectorなら次の位置のアドレスはインクリメントするだけだ
前の位置も辿りたいならLinkedListだと双方向リンクでさらにメモリ使用量も増える
713デフォルトの名無しさん
2023/07/20(木) 03:04:02.05ID:w+pPERAN714デフォルトの名無しさん
2023/07/20(木) 03:09:08.59ID:w+pPERAN >>713
>次のアドレスを得るのはどちらも mov 命令1つで、
>どちらも1クロックで時間に差は無い。
間違えた。
正しくは、
「インクリメントは、add、次のアドレスを得るのは movだが、
どちらも1クロックで必要時間に差は無い。」
>次のアドレスを得るのはどちらも mov 命令1つで、
>どちらも1クロックで時間に差は無い。
間違えた。
正しくは、
「インクリメントは、add、次のアドレスを得るのは movだが、
どちらも1クロックで必要時間に差は無い。」
715デフォルトの名無しさん
2023/07/20(木) 03:15:52.51ID:zPjslGgC いやだからメモリアクセスが支配的になるという話なのだが?
キャッシュメモリに乗ってないと致命的な速度低下となる
キャッシュメモリに乗ってないと致命的な速度低下となる
716デフォルトの名無しさん
2023/07/20(木) 03:18:02.86ID:o+4teY+W >>713
メモリアクセスに時間がかかることすら知らないならコンピューターの入門レベルからやり直せ
メモリアクセスに時間がかかることすら知らないならコンピューターの入門レベルからやり直せ
717デフォルトの名無しさん
2023/07/20(木) 03:22:57.78ID:w+pPERAN >>716
キャッシュメモリに乗っている場合の話だ。
乗っていない場合には、もちろんペナルティーが発生する。
ただ、ArrayListは、途中への挿入や削除がO(N)かかるが、
LinkedListは、O(1)だから、Nが10万の時には10万倍
の時間差となる。
一方、キャッシュのペナルティーは15(ns)くらいだから、
現在のCPUでは、45クロック位。
これだと、最悪のケースでも9倍程度だから、圧倒的に
LinkedListの方が時間的に安定。
キャッシュメモリに乗っている場合の話だ。
乗っていない場合には、もちろんペナルティーが発生する。
ただ、ArrayListは、途中への挿入や削除がO(N)かかるが、
LinkedListは、O(1)だから、Nが10万の時には10万倍
の時間差となる。
一方、キャッシュのペナルティーは15(ns)くらいだから、
現在のCPUでは、45クロック位。
これだと、最悪のケースでも9倍程度だから、圧倒的に
LinkedListの方が時間的に安定。
718デフォルトの名無しさん
2023/07/20(木) 03:25:15.25ID:w+pPERAN はっきりいって、ここの数学的才能の無い連中にも
俺は説得できる説明が出来る自信は有るが、敢えて
やってない。なぜなら、それを論文にしてステップアップ
に利用すると言うずるがしこい連中を多く見てきた
からだ。
俺は説得できる説明が出来る自信は有るが、敢えて
やってない。なぜなら、それを論文にしてステップアップ
に利用すると言うずるがしこい連中を多く見てきた
からだ。
719デフォルトの名無しさん
2023/07/20(木) 03:29:46.06ID:w+pPERAN この板の人は、数学的才能の無い人ばっかなので
異常に馬鹿丁寧に説明しないと理解できない。
今回の説明でも馬鹿丁寧だが、経験上、この程度の
丁寧さでは理解できないだろう。
もっとアセンブリコードまで徹底して書いて、
キャッシュとメインメモリの関係の図を書いて、
大量の比較コードを提示して、やっと僅かに理解できる人が
一人現れる程度だ。
それなのに、自分は賢いと思い込んでいる。
また、文書が読めない人が多い。
音声で言わないと理解できないらしい。
だから、掲示板では無理。
異常に馬鹿丁寧に説明しないと理解できない。
今回の説明でも馬鹿丁寧だが、経験上、この程度の
丁寧さでは理解できないだろう。
もっとアセンブリコードまで徹底して書いて、
キャッシュとメインメモリの関係の図を書いて、
大量の比較コードを提示して、やっと僅かに理解できる人が
一人現れる程度だ。
それなのに、自分は賢いと思い込んでいる。
また、文書が読めない人が多い。
音声で言わないと理解できないらしい。
だから、掲示板では無理。
720デフォルトの名無しさん
2023/07/20(木) 05:22:45.38ID:ShEsV12p はよ賢い人たちに説明しにいって、出禁にされてこい
721デフォルトの名無しさん
2023/07/20(木) 06:31:51.97ID:zPjslGgC722デフォルトの名無しさん
2023/07/20(木) 06:47:19.72ID:WN56tjQW LinkedListすらまともに作れない言語ってどうなんだろうなw
723デフォルトの名無しさん
2023/07/20(木) 07:29:26.02ID:o+4teY+W >>717
キャッシュメモリに載っていてもいなくてもメモリアクセスのペナルティが発生する
キャッシュに載っていないメインメモリならレジスタの数百倍
L3キャッシュに載っていればレジスタの数十倍
L2キャッシュに載っていればレジスタの十数倍
L1キャッシュに載っていてもレジスタの数倍かかる
メモリアクセスはこのようにとても遅い
したがってレジスタのインクリメントだけでアドレスを得られるVectorの方が有利になる
さらにVectorなら次の要素はほぼ必ずL1キャッシュに載っている恩恵も加わる
ほとんどのケースでVectorが速いのはこれらメモリアクセスの観点も効いている
キャッシュメモリに載っていてもいなくてもメモリアクセスのペナルティが発生する
キャッシュに載っていないメインメモリならレジスタの数百倍
L3キャッシュに載っていればレジスタの数十倍
L2キャッシュに載っていればレジスタの十数倍
L1キャッシュに載っていてもレジスタの数倍かかる
メモリアクセスはこのようにとても遅い
したがってレジスタのインクリメントだけでアドレスを得られるVectorの方が有利になる
さらにVectorなら次の要素はほぼ必ずL1キャッシュに載っている恩恵も加わる
ほとんどのケースでVectorが速いのはこれらメモリアクセスの観点も効いている
724デフォルトの名無しさん
2023/07/20(木) 08:26:57.52ID:uyFqK2iH ランダムアクセスになる場合なんかはlinkedlistなんかメチャクチャ遅くなる
例えばバッファサイズが8のフーリエ変換だと
1-5,2-6,3-7,4-8,
1-3,2-4,5-7-6-8,
1-2,3-4,5-6,7-8
とアクセスする
頭から読んでいくとものすごいコストがかかる
例えばバッファサイズが8のフーリエ変換だと
1-5,2-6,3-7,4-8,
1-3,2-4,5-7-6-8,
1-2,3-4,5-6,7-8
とアクセスする
頭から読んでいくとものすごいコストがかかる
725デフォルトの名無しさん
2023/07/20(木) 08:40:23.30ID:WN56tjQW そのレベルで速度気にするんならCやC++の方がよくね?
726デフォルトの名無しさん
2023/07/20(木) 09:05:41.95ID:o+4teY+W 全員がプログラミング言語に全く依存しない話をしてるところで唐突だな
727デフォルトの名無しさん
2023/07/20(木) 09:35:16.93ID:2+rEEHlb728デフォルトの名無しさん
2023/07/20(木) 11:05:22.25ID:397DPwdK ハゲの書いてることは00年代中盤にはCSでは一般常識化してた内容
実測すれば答えすぐ出るから
実測すれば答えすぐ出るから
729デフォルトの名無しさん
2023/07/20(木) 12:39:51.73ID:OPngbi2z >>720
出禁にされた結果がこのスレや
出禁にされた結果がこのスレや
730デフォルトの名無しさん
2023/07/20(木) 12:47:25.92ID:6BSTmMYa cargo は便利だけど crates.io の複数のモジュール同時使用で衝突するケースがあるよな
それぞれ単独で使うと問題起きないのに組み合わせて使うと死ねる
それぞれの開発者はたぶんお互いを認知してないかあるいは
どうなろうと知ったこっちゃないんだろ
それぞれ単独で使うと問題起きないのに組み合わせて使うと死ねる
それぞれの開発者はたぶんお互いを認知してないかあるいは
どうなろうと知ったこっちゃないんだろ
731デフォルトの名無しさん
2023/07/20(木) 12:56:38.69ID:6BSTmMYa732デフォルトの名無しさん
2023/07/20(木) 13:00:04.58ID:6BSTmMYa733デフォルトの名無しさん
2023/07/20(木) 13:03:06.20ID:6BSTmMYa >>721
明らかに君が可笑しい
明らかに君が可笑しい
734デフォルトの名無しさん
2023/07/20(木) 14:30:33.52ID:LhjzUCmo バランスを考えるのをやめろ
両極端の宗派はそのままにしておけ
統一するな
両極端の宗派はそのままにしておけ
統一するな
735デフォルトの名無しさん
2023/07/20(木) 15:21:54.49ID:zPjslGgC736デフォルトの名無しさん
2023/07/20(木) 15:33:00.56ID:E8mUVG43737デフォルトの名無しさん
2023/07/20(木) 15:43:18.38ID:7U3pGa9H LinkedListが一直線のリンクで実現してるのか、二分木とか赤黒木とかまで含んでるのかで話が変わる
738デフォルトの名無しさん
2023/07/20(木) 15:51:48.08ID:zPjslGgC >>736
うーん、じゃあもういいやw
うーん、じゃあもういいやw
739デフォルトの名無しさん
2023/07/20(木) 16:09:51.27ID:+MYe1bAK 同じO(N)でも性能は全く違うって話なのは理解してる?
740デフォルトの名無しさん
2023/07/20(木) 16:12:38.55ID:zPjslGgC このスレではLinkedListは常にO(1)ってことにしようw
よし使いまくるぞ!w
よし使いまくるぞ!w
741デフォルトの名無しさん
2023/07/20(木) 17:35:21.34ID:E8mUVG43742デフォルトの名無しさん
2023/07/20(木) 18:03:33.53ID:7Xbf5imk なおRust標準ライブラリのLinkedListの扱い
(https://doc.rust-lang.org/std/collections/index.html)
Use a `LinkedList` when:
* You want a `Vec` or `VecDeque` of unknown size, and can't tolerate amortization.
* You want to efficiently split and append lists.
* You are *absolutely* certain you *really*, *truly*, want a doubly linked list.
(https://doc.rust-lang.org/std/collections/index.html)
Use a `LinkedList` when:
* You want a `Vec` or `VecDeque` of unknown size, and can't tolerate amortization.
* You want to efficiently split and append lists.
* You are *absolutely* certain you *really*, *truly*, want a doubly linked list.
743デフォルトの名無しさん
2023/07/20(木) 18:32:16.87ID:zPjslGgC744デフォルトの名無しさん
2023/07/20(木) 18:57:14.98ID:KJVi0UK+ 1. ソートされた状態でデータを管理したい
2. 走査は激遅でいいけどキーに対応する値1件の取得/挿入/削除は高速に行いたい
3. 取得/挿入/削除時に先頭末尾以外位置はリストにアクセスしなくても分かる
これらを満たしてる場合にのみLinkedListが候補の1つに上がる
2. 走査は激遅でいいけどキーに対応する値1件の取得/挿入/削除は高速に行いたい
3. 取得/挿入/削除時に先頭末尾以外位置はリストにアクセスしなくても分かる
これらを満たしてる場合にのみLinkedListが候補の1つに上がる
745デフォルトの名無しさん
2023/07/20(木) 20:29:35.29ID:2+rEEHlb 数学の人とオープンソースの人はひょっとして同じ人?
746デフォルトの名無しさん
2023/07/20(木) 21:52:17.16ID:aEdleXCL ひょっとしなくても同じやつだろ
747デフォルトの名無しさん
2023/07/20(木) 21:57:32.90ID:neDY19sM >>744
>> 3. 取得/挿入/削除時に先頭末尾以外位置はリストにアクセスしなくても分かる
それはLinkedList全ての要素へのポインタ一覧を持っていないと無理だな
それをベクタで持つならその削除問題が発生してLinkedList利用の唯一の利点が消える
別のLinkedListで持つなら再び激遅な走査問題が起きる
>> 3. 取得/挿入/削除時に先頭末尾以外位置はリストにアクセスしなくても分かる
それはLinkedList全ての要素へのポインタ一覧を持っていないと無理だな
それをベクタで持つならその削除問題が発生してLinkedList利用の唯一の利点が消える
別のLinkedListで持つなら再び激遅な走査問題が起きる
748デフォルトの名無しさん
2023/07/20(木) 23:49:45.08ID:KJVi0UK+ >>747
一般的にはLinkedListとHashMapを組み合わせる
一部の言語に実装されてるLinkedHashMap/OrderedDictionaryや
基本的なLRUキャッシュの実装でその組み合わせが使われてる
一般的にはLinkedListとHashMapを組み合わせる
一部の言語に実装されてるLinkedHashMap/OrderedDictionaryや
基本的なLRUキャッシュの実装でその組み合わせが使われてる
749デフォルトの名無しさん
2023/07/21(金) 00:53:33.35ID:JyRjpbQR 一般的なLinkedListはともかくとしてRustに標準に実装されてる
use std::collections::LinkedList;
は前後のノードへのポインタで実現してるらしい
赤黒木がどうこうとかいうものではとてもなさそう
ランダムアクセスなんか劇遅やろ
そもそもLinkedListのくせに
「リストの中間地点に要素を追加したり、削除する操作が効率的にできるのも連結リストの特徴ですが、Rust1.26の時点では、そのような操作のためのメソッドが用意されていません」
とはどういうつもりなんやと
https://qiita.com/garkimasera/items/a6df4d1cd99bc5010a5e
use std::collections::LinkedList;
は前後のノードへのポインタで実現してるらしい
赤黒木がどうこうとかいうものではとてもなさそう
ランダムアクセスなんか劇遅やろ
そもそもLinkedListのくせに
「リストの中間地点に要素を追加したり、削除する操作が効率的にできるのも連結リストの特徴ですが、Rust1.26の時点では、そのような操作のためのメソッドが用意されていません」
とはどういうつもりなんやと
https://qiita.com/garkimasera/items/a6df4d1cd99bc5010a5e
750デフォルトの名無しさん
2023/07/21(金) 02:25:21.34ID:bXmgkOZk LinkedList単体で使おうとするとベクタ系での実装に対するアドバンテージがほとんどのケースで存在しない
またソートを維持したいならLinkedListよりもBTreeMapが有利
他にもそれぞれ目的別に有利なデータ構造がある
>>748
Rustにも毎日10万ダウンロードされているLinkedHashMapがある
https://crates.io/crates/linked-hash-map
またソートを維持したいならLinkedListよりもBTreeMapが有利
他にもそれぞれ目的別に有利なデータ構造がある
>>748
Rustにも毎日10万ダウンロードされているLinkedHashMapがある
https://crates.io/crates/linked-hash-map
751デフォルトの名無しさん
2023/07/21(金) 02:46:28.99ID:yV1TyWhB アルゴリズムやデータ構造の性能を評価する上で、
よく使われてきた計算量という指標の実用性も微妙になっちゃったな
よく使われてきた計算量という指標の実用性も微妙になっちゃったな
752デフォルトの名無しさん
2023/07/21(金) 03:01:04.83ID:2VYXkkOH >>724
そのように番号で場所にアクセスするような
事に使用するにはArrayが有利。
単純なLinkedListは、番号でアクセスする用途には向いていない。
LinkedListを効率よく利用するには番号ではなくアドレスでアクセスする。
アドレスとは、ノードに付けられた唯一無二の名前。
この板の人達はその概念が全く理解できず、
いつまでも番号によるアクセスから頭が切り替えられないでいる。
そのように番号で場所にアクセスするような
事に使用するにはArrayが有利。
単純なLinkedListは、番号でアクセスする用途には向いていない。
LinkedListを効率よく利用するには番号ではなくアドレスでアクセスする。
アドレスとは、ノードに付けられた唯一無二の名前。
この板の人達はその概念が全く理解できず、
いつまでも番号によるアクセスから頭が切り替えられないでいる。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【悲報】維新の政治資金でガールズバー、高市首相「良いか悪いかは国民の皆さまが判断されること」 [115996789]
- 【マギレコ】VIPでマギアレコード&マギアエクセドラ【まどドラ】
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【速報】俳優の三浦春馬さん、自宅で死亡 自殺とみられる←この衝撃を超える速報テロ、いまだない
- 衛生的に気持ち悪くて性風俗店行ったこと無いんだ
- 【悲報】タンパク質さん、寿命を縮めることが判明
