「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていうスレ。
前スレ: 結局C++とRustってどっちが良いの?
https://mevius.5ch.net/test/read.cgi/tech/1677286186/
探検
結局C++とRustってどっちが良いの? 2traits
■ このスレッドは過去ログ倉庫に格納されています
2023/04/02(日) 00:42:57.53ID:W9/nq+tL
705デフォルトの名無しさん
2023/04/29(土) 01:18:03.83ID:yAVCYP8x そうじゃなくて頭から最後まで要素を一回走査して挿入削除する場合は一回当たりのコスとはvectorより有利
何度も何度も繰り返し頭から走査する条件下では不利
ここでのベンチ結果は後ろのパターンばかりで不利になるのは当然
コード書いてる人が意図的に間違えてるのかセンスがないかのどちらか
アルゴリズムの意味が理解できてないと言う話
何度も何度も繰り返し頭から走査する条件下では不利
ここでのベンチ結果は後ろのパターンばかりで不利になるのは当然
コード書いてる人が意図的に間違えてるのかセンスがないかのどちらか
アルゴリズムの意味が理解できてないと言う話
706デフォルトの名無しさん
2023/04/29(土) 01:21:50.87ID:yAVCYP8x コードを書く人間として常識的に考えればわかる
挿入時に一部だけ鎖つなぎなおすのが低コストか
毎回全部後ろまでずらすのが低コストか
削除時に一部だけ鎖つなぎなおすのが低コストか
毎回全部後ろの要素を前へずらすのが低コストか
挿入時に一部だけ鎖つなぎなおすのが低コストか
毎回全部後ろまでずらすのが低コストか
削除時に一部だけ鎖つなぎなおすのが低コストか
毎回全部後ろの要素を前へずらすのが低コストか
707デフォルトの名無しさん
2023/04/29(土) 01:28:22.06ID:7kLNqYqu ほっといて勘違いしたままにしとけばいいのに
708デフォルトの名無しさん
2023/04/29(土) 01:52:27.12ID:QawJMl68 実際に色んな仕事をしたことある人たちがvector派という感じ
現実は挿入することが目的ではなくその後に使うところが本場でvectorが有利
稀に比較挿入が主たる場合もあるけど効率の悪いlinked listではなくbinary treeなどを使う
現実は挿入することが目的ではなくその後に使うところが本場でvectorが有利
稀に比較挿入が主たる場合もあるけど効率の悪いlinked listではなくbinary treeなどを使う
709デフォルトの名無しさん
2023/04/29(土) 02:46:40.88ID:KFapNhiM メモリに余裕があるなら
hash一択だな
hash一択だな
710デフォルトの名無しさん
2023/04/29(土) 06:10:16.91ID:g1O4sC7f >>705
> 頭から最後まで要素を一回走査して挿入削除する場合は一回当たりのコスとはvectorより有利
そのような走査して挿入する利用で最も多いのが何かの順序に並べるケース
その場合は結果的にソートをしていることになるがオーダーO(n^2)となり効率が悪い
効率が良い方法はvectorを利用してまずは順序関係なく要素を追加してしまい
その格納された各要素へのポインタを対象に一気にO(n·log(n))の速いソートするとよい
ソートを必要とする多くのデータ処理はそのようにvectorを利用する形になる
> 頭から最後まで要素を一回走査して挿入削除する場合は一回当たりのコスとはvectorより有利
そのような走査して挿入する利用で最も多いのが何かの順序に並べるケース
その場合は結果的にソートをしていることになるがオーダーO(n^2)となり効率が悪い
効率が良い方法はvectorを利用してまずは順序関係なく要素を追加してしまい
その格納された各要素へのポインタを対象に一気にO(n·log(n))の速いソートするとよい
ソートを必要とする多くのデータ処理はそのようにvectorを利用する形になる
711デフォルトの名無しさん
2023/04/29(土) 06:57:32.23ID:DIPSnmX9 なんでソート済みのなかに挿入するのにまたソートするの?
頭悪そう。
頭悪そう。
712デフォルトの名無しさん
2023/04/29(土) 06:58:38.69ID:x0nehzJt だってほら、ソート済みのオブジェクトをひっかきまわす別スレッドがあったり?w (ひっかきまわし
713デフォルトの名無しさん
2023/04/29(土) 07:43:01.19ID:7W8CIlYn Linked Listをソートに使うのはアホ
計算量オーダーを知らないアホ
既に順に並んでるところへ挿入していくから速そうだと勘違いするアホ発見器
計算量オーダーを知らないアホ
既に順に並んでるところへ挿入していくから速そうだと勘違いするアホ発見器
714デフォルトの名無しさん
2023/04/29(土) 08:07:10.82ID:qQ47Kbbt >>703
節約できてねーよw
節約できてねーよw
715デフォルトの名無しさん
2023/04/29(土) 08:11:13.42ID:zSimqKUs >>706
そこはみんなわかってるよ
挿入時や削除時に挿入位置と削除位置を見つけるために
LinkedListの走査が必要な使い方をしたら
性能的にはLinkedListを使う価値がなくなるという話をみんなしてるんだよ
そこはみんなわかってるよ
挿入時や削除時に挿入位置と削除位置を見つけるために
LinkedListの走査が必要な使い方をしたら
性能的にはLinkedListを使う価値がなくなるという話をみんなしてるんだよ
716デフォルトの名無しさん
2023/04/29(土) 10:06:18.64ID:UrxTzFiy VectorとlinkedListってどっちが良いの?スレでやってください
717デフォルトの名無しさん
2023/04/29(土) 10:27:01.32ID:PZBsfh3E Rustユーザは何も書かないのな
こういうのには感心がない人達なのかな?
こういうのには感心がない人達なのかな?
718デフォルトの名無しさん
2023/04/29(土) 10:31:22.19ID:7o70JIXk 自分の無知を知らずシッタカするド素人と
自分の無知を察して慎重にシッタカするド素人
自分の無知を察して口をつぐむ慎ましいド素人
三番目なのがRustユーザ
自分の無知を察して慎重にシッタカするド素人
自分の無知を察して口をつぐむ慎ましいド素人
三番目なのがRustユーザ
719デフォルトの名無しさん
2023/04/29(土) 11:02:19.50ID:YiZx6les QiitaなんかでRustポエムがいいね入れ食いなのから察するに
Rustユーザは>>563みたいな数独パズル状態でどん詰まり傾向かな?
Rustユーザは>>563みたいな数独パズル状態でどん詰まり傾向かな?
720デフォルトの名無しさん
2023/04/29(土) 11:12:39.77ID:ohv1w+T9 結局、ここに溜まるような奴はみんな、やれといわれたら(どっちもちゃんと)やる人間だろうしね
でも好きずきはある やっぱ俺はC++が好き
でも好きずきはある やっぱ俺はC++が好き
721デフォルトの名無しさん
2023/04/29(土) 11:22:17.96ID:dmw04PPX いやmoveを分かってないレベルのRustユーザがいる
おそらくQiitaでRustポエムをいいねしてる?
一方、C++ユーザは実動コードやらベンチ結果を晒して議論するのを面白がってる様子
どっちも無知でも、どっちが成長するのか目に見えてるなw
おそらくQiitaでRustポエムをいいねしてる?
一方、C++ユーザは実動コードやらベンチ結果を晒して議論するのを面白がってる様子
どっちも無知でも、どっちが成長するのか目に見えてるなw
722デフォルトの名無しさん
2023/04/29(土) 11:34:15.28ID:20ghSNY5 >>717
スレタイがアホ過ぎるので興味持って貰えんだろw
スレタイがアホ過ぎるので興味持って貰えんだろw
723デフォルトの名無しさん
2023/04/29(土) 11:36:22.20ID:7o70JIXk 言語としてはある種似てるとは思うわ
言語仕様としてではなくてね
HaskellとC++とRustはいっしょのカテゴリに入ってる
シッタカしたいタイプのド素人がドヤるための言語
JavaとかPHPをドカタ言語といって蔑むのといっしょ
女さんが自分を飾るブランドを選ぶのといっしょ
言語仕様としてではなくてね
HaskellとC++とRustはいっしょのカテゴリに入ってる
シッタカしたいタイプのド素人がドヤるための言語
JavaとかPHPをドカタ言語といって蔑むのといっしょ
女さんが自分を飾るブランドを選ぶのといっしょ
724デフォルトの名無しさん
2023/04/29(土) 11:42:46.52ID:yAVCYP8x725デフォルトの名無しさん
2023/04/29(土) 11:49:34.55ID:XsrXxFON726デフォルトの名無しさん
2023/04/29(土) 11:52:16.10ID:yAVCYP8x >>710
> そのような走査して挿入する利用で最も多いのが何かの順序に並べるケース
頭から走査する回数が増えるとlinkedlistが極端に不利になるって常識的に分かるよね
そういう条件でソートをlinkedlistでやるやつは馬鹿だろ
それなのに何で頭から操作繰り返すアルゴリズムを選ぶのか?
意味分かってないのか?
> そのような走査して挿入する利用で最も多いのが何かの順序に並べるケース
頭から走査する回数が増えるとlinkedlistが極端に不利になるって常識的に分かるよね
そういう条件でソートをlinkedlistでやるやつは馬鹿だろ
それなのに何で頭から操作繰り返すアルゴリズムを選ぶのか?
意味分かってないのか?
727デフォルトの名無しさん
2023/04/29(土) 11:59:53.23ID:yAVCYP8x >>725
結果見れば分かるだろ
結果から見るとlinkedlistで単体の件で条件マッチするまでソートはランダムソートのコスト+比較だから
a[x] で仮に条件が合うのがkだとしてそこまでは実際ランダムアクセスでそこまで行ってるのと変わらない
数学の素養がないのは君なんだけど…
多分これを書いても理解できてないよね…
結果見れば分かるだろ
結果から見るとlinkedlistで単体の件で条件マッチするまでソートはランダムソートのコスト+比較だから
a[x] で仮に条件が合うのがkだとしてそこまでは実際ランダムアクセスでそこまで行ってるのと変わらない
数学の素養がないのは君なんだけど…
多分これを書いても理解できてないよね…
728デフォルトの名無しさん
2023/04/29(土) 12:00:11.90ID:XcHaQTov >>710
O(n log n) のコムソートはlinked listと相性悪くないよ。
O(n log n) のコムソートはlinked listと相性悪くないよ。
729デフォルトの名無しさん
2023/04/29(土) 12:01:45.44ID:PZBsfh3E730デフォルトの名無しさん
2023/04/29(土) 12:02:00.77ID:FImI31+H 結局linkedlistが役立つケースは非常に限定的に限られるわけだ
731デフォルトの名無しさん
2023/04/29(土) 12:03:17.50ID:yAVCYP8x ランダムアクセスが苦手なのに挿入のたびに実質ランダムアクセスさせられてる
それに気が付いてない人の多いこと
全件を一度走査するのと実質ちまちまランダムアクセスを繰り返す挿入ソートの違いが理解できない馬鹿頭
数学が出来ない人間と話をしても無駄なんだよな…
馬鹿は水掛け論だと誤解してるから…
それに気が付いてない人の多いこと
全件を一度走査するのと実質ちまちまランダムアクセスを繰り返す挿入ソートの違いが理解できない馬鹿頭
数学が出来ない人間と話をしても無駄なんだよな…
馬鹿は水掛け論だと誤解してるから…
732デフォルトの名無しさん
2023/04/29(土) 12:04:14.42ID:yAVCYP8x 論理的思考が出来ない馬鹿がプログラムを語るな
733デフォルトの名無しさん
2023/04/29(土) 12:06:39.68ID:ZsgLmn44 >>728
コムソートは離れたm番目とn番目の要素の比較を頻繁にするからlinked listで不利
コムソートは離れたm番目とn番目の要素の比較を頻繁にするからlinked listで不利
734デフォルトの名無しさん
2023/04/29(土) 12:07:03.97ID:OSQfAzE+ 何がしたいの
735デフォルトの名無しさん
2023/04/29(土) 12:07:35.56ID:yAVCYP8x ここまで書いてもまだお前ら理解してないだろ?
736デフォルトの名無しさん
2023/04/29(土) 12:11:44.15ID:MIzfr5va ようやく理解できた
局所的に見るとlistが速い部分もあるんだけど
作業全体で比較するとvectorが速くなるってことか
局所的に見るとlistが速い部分もあるんだけど
作業全体で比較するとvectorが速くなるってことか
737デフォルトの名無しさん
2023/04/29(土) 12:13:24.42ID:yAVCYP8x 変な話だけど多分この議論の勝者は俺なんじゃないかな
数学的素養のない人間に衝撃を与えてる
数学的素養のない人間に衝撃を与えてる
738デフォルトの名無しさん
2023/04/29(土) 12:13:33.38ID:UrxTzFiy 自転車置き場の議論が酷すぎますね
739デフォルトの名無しさん
2023/04/29(土) 12:16:18.44ID:XcHaQTov >>733
nとmの2つのポインタを持って隣に一つずつ走査するだけ。
nとmの2つのポインタを持って隣に一つずつ走査するだけ。
740デフォルトの名無しさん
2023/04/29(土) 12:19:38.06ID:kVhUTSNT リスト使うのに挿入時に探索やソートするのは設計ミスってる
741デフォルトの名無しさん
2023/04/29(土) 12:25:50.80ID:OSQfAzE+ ちょっと再帰型の例として単方向連結リストが出ただけでここまで話を脱線させることができる集団
742デフォルトの名無しさん
2023/04/29(土) 12:35:51.92ID:L+mlGJh3743デフォルトの名無しさん
2023/04/29(土) 12:36:29.75ID:KbUa2LZd 集団ひとり
744デフォルトの名無しさん
2023/04/29(土) 13:08:56.23ID:cwi8dy59 >話を脱線させることができる集団
やっぱり、LinkedListの無理問答は脱線の仕掛けだったんだ
やっぱり、LinkedListの無理問答は脱線の仕掛けだったんだ
745デフォルトの名無しさん
2023/04/29(土) 13:33:17.72ID:Tjp8jVNl 論理的思考というワードを見るとなぜかテンションが上がる
所有権複製と同じぐらい
プログラムが論理的かどうかを判断するだけなら思考を研究しなくていい
最近のAI界隈が脳科学の研究をしないのと同じ
所有権複製と同じぐらい
プログラムが論理的かどうかを判断するだけなら思考を研究しなくていい
最近のAI界隈が脳科学の研究をしないのと同じ
746デフォルトの名無しさん
2023/04/29(土) 13:39:38.26ID:Rza2c1AG 問: 何からの話題そらしなのか考察せよ
ヒント1: 専ブラの勢いグラフ
ヒント1: 専ブラの勢いグラフ
747デフォルトの名無しさん
2023/04/29(土) 14:41:05.09ID:20ghSNY5748デフォルトの名無しさん
2023/04/29(土) 14:43:15.45ID:Ne58Utkw 糖質感じるワードサラダ
749デフォルトの名無しさん
2023/04/29(土) 16:48:28.13ID:ohv1w+T9 本質的に雑スレなので、C++ vs Rust みたいな話題が好きそうな人が好きそうな話題ならなんでもいいや
750デフォルトの名無しさん
2023/04/29(土) 16:53:25.69ID:Tjp8jVNl どんな暴言でも論理は論理ーとはならんだろ
751デフォルトの名無しさん
2023/04/29(土) 17:04:51.89ID:LRGNcJXi 正直リンクドリストなんて一生使わないので興味ないのは図星
752デフォルトの名無しさん
2023/04/29(土) 19:05:39.22ID:805CSB5r >>739
そのコムソートのためにnとmの2つのポインタを持って、
双方向リストでmとnの入れ替えをしようとしたら、
ノードの入れ替えだけでとんでもないコストになった。
読み出しが4回と書き込みが8回もかかる
# mの前後がnを指すようにする
読 m_prev = m->prev
書 m_prev->next = n
読 m_next = n->next
書 m_next->prev = n
# nの前後がmを指すようにする
読 n_prev = n->prev
書 n_prev-> next = m
読 n_next = n->next
書 n_next->prev = m
# mがnの前後を指すようにする
書 m->prev = n_prev
書 m->next = n_next
# nがmの前後を指すようにする
書 n->prev = m_prev
書 n->next = m_next
リストのノードの入れ替えがこれだけ高コストだと、
ノードを入れ替えずに格納している要素の入れ替えをしたほうがよくて、
要素のサイズが大きければポインタのみ収容したほうがよくて、
ベクタが有利になるポインタのみ収容に行き着いてしまう?
そのコムソートのためにnとmの2つのポインタを持って、
双方向リストでmとnの入れ替えをしようとしたら、
ノードの入れ替えだけでとんでもないコストになった。
読み出しが4回と書き込みが8回もかかる
# mの前後がnを指すようにする
読 m_prev = m->prev
書 m_prev->next = n
読 m_next = n->next
書 m_next->prev = n
# nの前後がmを指すようにする
読 n_prev = n->prev
書 n_prev-> next = m
読 n_next = n->next
書 n_next->prev = m
# mがnの前後を指すようにする
書 m->prev = n_prev
書 m->next = n_next
# nがmの前後を指すようにする
書 n->prev = m_prev
書 n->next = m_next
リストのノードの入れ替えがこれだけ高コストだと、
ノードを入れ替えずに格納している要素の入れ替えをしたほうがよくて、
要素のサイズが大きければポインタのみ収容したほうがよくて、
ベクタが有利になるポインタのみ収容に行き着いてしまう?
753デフォルトの名無しさん
2023/04/29(土) 19:15:52.32ID:XcHaQTov754デフォルトの名無しさん
2023/04/29(土) 19:31:19.50ID:s2+5kMs9 ベクタでソートする時は要素を動かす必要はなく各要素を指すポインタをソートする
リストでも同じ方法が可能だがリンクを毎回たどる分だけ不利
領域分割のクイックソートなどもリストでは使えない
リストでも同じ方法が可能だがリンクを毎回たどる分だけ不利
領域分割のクイックソートなどもリストでは使えない
755デフォルトの名無しさん
2023/04/29(土) 19:41:23.91ID:IKRrkEkG なんでソートする必要のあるデータを連結リストにぶち込もうと思ったんですか?
756デフォルトの名無しさん
2023/04/29(土) 20:12:09.35ID:XcHaQTov757デフォルトの名無しさん
2023/04/29(土) 20:20:23.48ID:Tjp8jVNl >>755
「おれじゃない。あいつがやった」と登場人物全員が思ってるから
「おれじゃない。あいつがやった」と登場人物全員が思ってるから
758デフォルトの名無しさん
2023/04/29(土) 20:34:27.32ID:bSGgHj8h759デフォルトの名無しさん
2023/04/29(土) 20:58:27.38ID:KFapNhiM もうないよ
Lispが持っていた機能が延々と引き継がれているだけ
Lispが持っていた機能が延々と引き継がれているだけ
760デフォルトの名無しさん
2023/04/29(土) 21:28:35.35ID:OSQfAzE+ 最悪計算量がO(1)の両端キューがどうしても欲しい場合にでも使えばいいんじゃないでしょうか
761デフォルトの名無しさん
2023/04/29(土) 21:36:10.77ID:ohv1w+T9 まあ、linked list でいっかあ、ってとき。簡単なのはメリット。
おいおい、ちゃんとしたコンテナに替えてもよし。
おいおい、ちゃんとしたコンテナに替えてもよし。
762デフォルトの名無しさん
2023/04/29(土) 21:52:36.29ID:8bsno8eR 両端キュー(deque)はリストではなくベクタ系による実装の方が好まれて使われる
std::dequeue、JavaのArrayDequeue、RustのVecDequeなど
std::dequeue、JavaのArrayDequeue、RustのVecDequeなど
763デフォルトの名無しさん
2023/04/29(土) 22:13:48.24ID:fyMAdwwx chatgptにlinked listがいい例を挙げてもらった
テキストエディタ、ジョブスケジューラ、メモリ管理、ハッシュテーブル
テキストエディタ、ジョブスケジューラ、メモリ管理、ハッシュテーブル
764デフォルトの名無しさん
2023/04/29(土) 22:15:45.27ID:2xE5oJ1V765デフォルトの名無しさん
2023/04/29(土) 22:23:38.61ID:XcHaQTov >>755
ベクタ/リストをソートするのに計算量的な差は特にない。
ソート済みのものに要素を挿入するのは一長一短あるが一般にはリストが有利な場合が多いな。
挿入自体のパフォーマンスに特化するなら場合はヒープのような木構造を使うのがベストだろうが。
ベクタ/リストをソートするのに計算量的な差は特にない。
ソート済みのものに要素を挿入するのは一長一短あるが一般にはリストが有利な場合が多いな。
挿入自体のパフォーマンスに特化するなら場合はヒープのような木構造を使うのがベストだろうが。
766デフォルトの名無しさん
2023/04/29(土) 22:25:57.31ID:XcHaQTov >>764
リンクで隣の要素をたどるだけならなんも不利なことないじゃん。
リンクで隣の要素をたどるだけならなんも不利なことないじゃん。
767デフォルトの名無しさん
2023/04/29(土) 22:26:27.79ID:RlwUT4Ts768デフォルトの名無しさん
2023/04/29(土) 22:39:43.93ID:7o70JIXk なんか偶然ソートの話になってるけど
流れを読んでからこれ書いたんじゃなくて
「ところでインサーションソートなんてベクタじゃ苦しいだろうけど
リストならすごく効率がいいんではないか? を確かめようとしたら
list::sortがおそらくすでに十分に効率的に書かれてることが分かって
インサーションソートを自分で実装する気が萎えた
(いちおう拾ったコードは乗せてあるけどクッソ遅い)」という別の話
https://ideone.com/D9ljA7
function asc desc shuf
std::sort(v) 16 13 72
list::sort 43 60 332 ←十分早い
std::qsort(v) 47 45 144 ←参考
流れを読んでからこれ書いたんじゃなくて
「ところでインサーションソートなんてベクタじゃ苦しいだろうけど
リストならすごく効率がいいんではないか? を確かめようとしたら
list::sortがおそらくすでに十分に効率的に書かれてることが分かって
インサーションソートを自分で実装する気が萎えた
(いちおう拾ったコードは乗せてあるけどクッソ遅い)」という別の話
https://ideone.com/D9ljA7
function asc desc shuf
std::sort(v) 16 13 72
list::sort 43 60 332 ←十分早い
std::qsort(v) 47 45 144 ←参考
769デフォルトの名無しさん
2023/04/29(土) 22:50:51.62ID:hqB48CC6770デフォルトの名無しさん
2023/04/29(土) 22:57:10.41ID:XcHaQTov771デフォルトの名無しさん
2023/04/29(土) 22:58:20.16ID:XcHaQTov >>756か。
772デフォルトの名無しさん
2023/04/29(土) 23:51:59.24ID:pbxO8SrY Senior Microsoft exec says Windows 11 kernel will soom be booting with Rust inside
https://www.neowin.net/news/senior-microsoft-exec-says-windows-11-kernel-will-soon-be-booting-with-rust-inside/
うおおおおおお!!
https://www.neowin.net/news/senior-microsoft-exec-says-windows-11-kernel-will-soon-be-booting-with-rust-inside/
うおおおおおお!!
773デフォルトの名無しさん
2023/04/30(日) 00:02:56.42ID:0nNhKOfm Microsoft's adoration of Rust does have limits.
"Rewriting Windows in Rust probably isn't going to happen anytime soon," said Weston,
"so while we love Rust, we need a strategy that also includes securing more of our native code."
"Rewriting Windows in Rust probably isn't going to happen anytime soon," said Weston,
"so while we love Rust, we need a strategy that also includes securing more of our native code."
774デフォルトの名無しさん
2023/04/30(日) 00:09:47.59ID:W+TV1tj5 コンパイラはどうすんのかな?
社内に自社製のがあるのかな?
社内に自社製のがあるのかな?
775デフォルトの名無しさん
2023/04/30(日) 01:22:44.98ID:bU1qZ3nv >>769
LinkedListにおいて、キャッシュに載っていれば隣の要素は、1クロックで
辿れるから何の問題もない。アセンブリコードは、
mov rbx,[rbx + pNext]
みたいになり、キャッシュに載っていれば1クロック。
多くの場合、キャッシュに載っていることが多い。
乗っていない場合は、prefetch 命令で載せることができる。
LinkedListにおいて、キャッシュに載っていれば隣の要素は、1クロックで
辿れるから何の問題もない。アセンブリコードは、
mov rbx,[rbx + pNext]
みたいになり、キャッシュに載っていれば1クロック。
多くの場合、キャッシュに載っていることが多い。
乗っていない場合は、prefetch 命令で載せることができる。
776デフォルトの名無しさん
2023/04/30(日) 01:28:36.62ID:bU1qZ3nv Stroustrup氏は、キャッシュミス時のハードウェアによる自動 prefetch が
数百クロックかかると書いていたが、それは過去の話で、
現在の DDR4-SDRAM だと、15クロックだと聞いた。
だから、キャッシュに載ってなくても15クロックのペナルティーで済む。
また、pNext を読む前に prefetch 命令で pNext の部分をキャッシュに読み込ます
ようにしておけば、ペナルティーは 1 クロック以下に近くなる。
「以下」と書いたのは、いまの CPU は複数命令の同時命令実行機能が有るので
prefetch命令自体は0クロックで実行できることがあるから。
数百クロックかかると書いていたが、それは過去の話で、
現在の DDR4-SDRAM だと、15クロックだと聞いた。
だから、キャッシュに載ってなくても15クロックのペナルティーで済む。
また、pNext を読む前に prefetch 命令で pNext の部分をキャッシュに読み込ます
ようにしておけば、ペナルティーは 1 クロック以下に近くなる。
「以下」と書いたのは、いまの CPU は複数命令の同時命令実行機能が有るので
prefetch命令自体は0クロックで実行できることがあるから。
777デフォルトの名無しさん
2023/04/30(日) 01:38:31.10ID:RN/WMs5a ほんと頭悪すぎだろ
数学的に
数学的に
778デフォルトの名無しさん
2023/04/30(日) 01:38:51.52ID:bU1qZ3nv なお、LinkedListでも多くの場合は、次のノードは、アドレスがほぼ隣接しているので
キャッシュに載っている確率が高い。ほぼ連続的なアドレスを次々に辿っていくので
ほとんどの場合、LinkedListのノードは読み込み時にキャッシュに載り続けている。
10万個の要素があった時、その内、2つの要素を10回交換したとしても、
キャッシュの乱れは、40回程度。10万要素の内の40回程度、キャッシュ
ナルティーが生じるだけ。
それぞれが15クロックほど遅くなるだけだから、10万個の要素を辿っても、
全体として、600クロックほど、キャッシュ読み込みの時間が追加されるだけ
のはず。ただし、キャッシュミス時の自動prefetchの時間が15クロック
かどうかは不明。
なお、ソフトウェア的にprefetch命令をマシン語で書いておけば、他の命令を
実行中にprefetch動作が入るので、キャッシュペナルティーを実質0クロック
にできる。
キャッシュに載っている確率が高い。ほぼ連続的なアドレスを次々に辿っていくので
ほとんどの場合、LinkedListのノードは読み込み時にキャッシュに載り続けている。
10万個の要素があった時、その内、2つの要素を10回交換したとしても、
キャッシュの乱れは、40回程度。10万要素の内の40回程度、キャッシュ
ナルティーが生じるだけ。
それぞれが15クロックほど遅くなるだけだから、10万個の要素を辿っても、
全体として、600クロックほど、キャッシュ読み込みの時間が追加されるだけ
のはず。ただし、キャッシュミス時の自動prefetchの時間が15クロック
かどうかは不明。
なお、ソフトウェア的にprefetch命令をマシン語で書いておけば、他の命令を
実行中にprefetch動作が入るので、キャッシュペナルティーを実質0クロック
にできる。
779デフォルトの名無しさん
2023/04/30(日) 01:39:45.77ID:bU1qZ3nv >>777
俺の方があんたより数学的才能に恵まれてると思うぞ。
俺の方があんたより数学的才能に恵まれてると思うぞ。
780デフォルトの名無しさん
2023/04/30(日) 01:44:17.33ID:bU1qZ3nv ここの人は何か勘違いしてるようだが、LinkedListで隣のノードに辿るのは、
C で書くと
pNode = pNode->pNext;
という1行で書けるが、アセンブリだと、
mov rbx,[rbx + (pNextのオフセットアドレス)]
という 1命令になって、1クロックに過ぎない。
一方、配列の場合の、++ptr は、
add rbx,(1要素のバイト数)
という1命令で書けて、これも1クロック。
なので、キャッシュミスがない限り、LinkedListも配列と同じ速度で
ノードを辿っていける。
C で書くと
pNode = pNode->pNext;
という1行で書けるが、アセンブリだと、
mov rbx,[rbx + (pNextのオフセットアドレス)]
という 1命令になって、1クロックに過ぎない。
一方、配列の場合の、++ptr は、
add rbx,(1要素のバイト数)
という1命令で書けて、これも1クロック。
なので、キャッシュミスがない限り、LinkedListも配列と同じ速度で
ノードを辿っていける。
781デフォルトの名無しさん
2023/04/30(日) 01:48:48.78ID:bU1qZ3nv782デフォルトの名無しさん
2023/04/30(日) 01:49:24.07ID:HMPc/FQf 1クロックw
数学的だねェ
数学的だねェ
783デフォルトの名無しさん
2023/04/30(日) 01:54:42.21ID:VXiDua15 1クロックが何MHzだった時代のお話ですか?
784デフォルトの名無しさん
2023/04/30(日) 01:58:54.26ID:p1baMidH LinkedList指向アーキテクチャを使ってるんだろ
785デフォルトの名無しさん
2023/04/30(日) 01:59:20.86ID:bU1qZ3nv >>778
>キャッシュの乱れは、40回程度。10万要素の内の40回程度、キャッシュ
>ナルティーが生じるだけ。
>それぞれが15クロックほど遅くなるだけだから、10万個の要素を辿っても、
>全体として、600クロックほど、キャッシュ読み込みの時間が追加されるだけ
>のはず。
訂正します。
実際には、AAAABAAACAAADAAA・・・
のようになるので、「行き」はキャッシュミスが生じますが、「帰り」は
キャッシュに載っているものを再度使うだけなので、キャッシュの乱れは
20回程度となり、キャッシュロードに掛かる追加時間は、全体で300クロックで
済むと考えられます。
>キャッシュの乱れは、40回程度。10万要素の内の40回程度、キャッシュ
>ナルティーが生じるだけ。
>それぞれが15クロックほど遅くなるだけだから、10万個の要素を辿っても、
>全体として、600クロックほど、キャッシュ読み込みの時間が追加されるだけ
>のはず。
訂正します。
実際には、AAAABAAACAAADAAA・・・
のようになるので、「行き」はキャッシュミスが生じますが、「帰り」は
キャッシュに載っているものを再度使うだけなので、キャッシュの乱れは
20回程度となり、キャッシュロードに掛かる追加時間は、全体で300クロックで
済むと考えられます。
786デフォルトの名無しさん
2023/04/30(日) 02:00:53.22ID:bU1qZ3nv >>784
LinkedListでも効率の良い新しいソートアルゴリズムを独自に発見してます。
LinkedListでも効率の良い新しいソートアルゴリズムを独自に発見してます。
787デフォルトの名無しさん
2023/04/30(日) 05:06:03.85ID:hShyWiBx788デフォルトの名無しさん
2023/04/30(日) 07:14:18.58ID:8jzds4J3 >>772
貼るんなら極力元ネタにしようぜ 字幕でおk
https://youtu.be/8T6ClX-y2AE?t=3100
ブートローダはプログラムであって、ライブラリじゃないんだよな
はやくAPIをRust化してほしい そうすれば、C++も恩恵を受ける
貼るんなら極力元ネタにしようぜ 字幕でおk
https://youtu.be/8T6ClX-y2AE?t=3100
ブートローダはプログラムであって、ライブラリじゃないんだよな
はやくAPIをRust化してほしい そうすれば、C++も恩恵を受ける
789デフォルトの名無しさん
2023/04/30(日) 07:28:55.12ID:8jzds4J3 AIにコードを書いてもらえないかってのが研究されだして久しいけど、
Rustは(書いてもらうのに)向いてるかもね
Rustは人の仕事を奪うかもよ?w
Rustは(書いてもらうのに)向いてるかもね
Rustは人の仕事を奪うかもよ?w
790デフォルトの名無しさん
2023/04/30(日) 09:22:37.96ID:YN4uZc/s ただの人を目標にしているから月に行けなくなった
791デフォルトの名無しさん
2023/04/30(日) 09:46:01.58ID:36fy/qId792デフォルトの名無しさん
2023/04/30(日) 09:55:02.85ID:T8NwKiLb 隣へたどる方法比較
https://ideone.com/sVvoxX
p++ 28
v ++it 29
v next(it) 30
l next(it) 151
最初の三つに数字の上では差が付いてるが本質的ではない
書いてる最中にここの数字入れ替わったりしてるので誤差
リストは遅いっちゃあ遅いけど致命的に遅いわけでもない
リストにとっては有利なメモリ配置にはなってると思うけど
https://ideone.com/sVvoxX
p++ 28
v ++it 29
v next(it) 30
l next(it) 151
最初の三つに数字の上では差が付いてるが本質的ではない
書いてる最中にここの数字入れ替わったりしてるので誤差
リストは遅いっちゃあ遅いけど致命的に遅いわけでもない
リストにとっては有利なメモリ配置にはなってると思うけど
793デフォルトの名無しさん
2023/04/30(日) 10:14:47.83ID:YN4uZc/s 中立ぶってリストを擁護する人も、中立やめてリスト推しになるかといえば
ならないだろう
結局、誰も推してないのに誰かが推しているように偽装することを
中立という綺麗事で正当化しているだけだ
ならないだろう
結局、誰も推してないのに誰かが推しているように偽装することを
中立という綺麗事で正当化しているだけだ
794デフォルトの名無しさん
2023/04/30(日) 10:19:43.94ID:BMHs5g0C >>792
ideoneはコンパイラバージョンが古いしマシンも古いと思う
ただしWS級だからメモリ帯域は大きそう(オンザフライ数が大きい)
vectorならDT級マシンでもHWプリフェッチがうまくやってくれる
p++ 6
v ++it 6
v next(it) 6
l next(it) 241 <- 致命的に遅い、よね?
ideoneはコンパイラバージョンが古いしマシンも古いと思う
ただしWS級だからメモリ帯域は大きそう(オンザフライ数が大きい)
vectorならDT級マシンでもHWプリフェッチがうまくやってくれる
p++ 6
v ++it 6
v next(it) 6
l next(it) 241 <- 致命的に遅い、よね?
795デフォルトの名無しさん
2023/04/30(日) 10:21:32.29ID:YAk30VeP >>768
偶然ソートの話になってるんじゃなくて誰かが書いたコードが
linkedlistに不利なソートを取り上げてたから荒れてるだけなんだ
原因はその誰かなんだ
上に書かれてるように挿入ソートは実質ランダムアクセスよりlinkedlistに不利になるんだから
そういうのをテーマに選んだ時点でちょっとセンスがないと思う
偶然ソートの話になってるんじゃなくて誰かが書いたコードが
linkedlistに不利なソートを取り上げてたから荒れてるだけなんだ
原因はその誰かなんだ
上に書かれてるように挿入ソートは実質ランダムアクセスよりlinkedlistに不利になるんだから
そういうのをテーマに選んだ時点でちょっとセンスがないと思う
796デフォルトの名無しさん
2023/04/30(日) 10:24:45.00ID:YN4uZc/s 原因はどうでもいい
因果関係に縛られた機械では人間に勝てない
因果関係に縛られた機械では人間に勝てない
797デフォルトの名無しさん
2023/04/30(日) 10:27:36.27ID:8jzds4J3 人間も因果に縛られてるんだから、巨視的にはどっこいどっこいかもよw
798デフォルトの名無しさん
2023/04/30(日) 10:53:23.23ID:loPobIHT799デフォルトの名無しさん
2023/04/30(日) 10:56:20.23ID:RO3CktaP bindgenでC/C++のheader変換させると
warning: type `ho_ge` should have an upper camel case name
help: convert the identifier to upper camel case: `HoGe`
みたいな余計な御世話なメッセージが出捲るんだが
これを抑制する方法って無い?
warning: type `ho_ge` should have an upper camel case name
help: convert the identifier to upper camel case: `HoGe`
みたいな余計な御世話なメッセージが出捲るんだが
これを抑制する方法って無い?
800デフォルトの名無しさん
2023/04/30(日) 11:30:23.83ID:T8NwKiLb801デフォルトの名無しさん
2023/04/30(日) 14:46:52.74ID:eJ3rvh+g .to_string() とか
.to_str() とか
.to_str().expect("やりなおせ") とか
.to_str()? とか
.as_str() とか
一貫性がないな
.to_str() とか
.to_str().expect("やりなおせ") とか
.to_str()? とか
.as_str() とか
一貫性がないな
802デフォルトの名無しさん
2023/04/30(日) 14:50:03.03ID:xL1w2Uvw >>799
抑制する方法もエラーメッセージに出てなかったっけ?
抑制する方法もエラーメッセージに出てなかったっけ?
803デフォルトの名無しさん
2023/04/30(日) 16:01:15.73ID:RO3CktaP #![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]
で出来たけど
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
#[allow(non_upper_case_globals)]
にしろって書いてあるサイトもある
どっちなんだろ
#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]
で出来たけど
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
#[allow(non_upper_case_globals)]
にしろって書いてあるサイトもある
どっちなんだろ
804デフォルトの名無しさん
2023/04/30(日) 16:11:01.60ID:RO3CktaP 2つ以上のC/C++のprojectから
bindings1.rs
bindings2.rs
みたいに造って同時にinclude!()すると
定義の衝突とか出るけど
header1.hとheader2.hのどっちにも
#include <iostream>
みたいなの書いてあるとそうなるんかな
面倒だな
bindings1.rs
bindings2.rs
みたいに造って同時にinclude!()すると
定義の衝突とか出るけど
header1.hとheader2.hのどっちにも
#include <iostream>
みたいなの書いてあるとそうなるんかな
面倒だな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「高市さん負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 [樽悶★]
- トランプ氏「台湾侵攻すれば北京爆撃」“過激予告発言”報道がXで再燃「高市氏の1億倍やばい」 [七波羅探題★]
- 【為替】対ドルで157円台、対ユーロ181円台に下落 財政悪化を警戒 [蚤の市★]
- 【自民党】鈴木宗男議員「日本側はわざわざ中国に行ったということは、歩み寄るための行動で、頭を下げるのが仕事である」 [樽悶★]
- 【ペルソナ・ノン・グラータ】中国総領事の早期国外退去を首相に要請へ 自民・保守系グループ「日本の尊厳と国益を護(まも)る会」 [ぐれ★]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- でも韓国ドラマに出てる女優って美人多いよな
- 安倍晋三さん、完全にチェックアウトしてしまう…「母の部屋に安倍元首相が表紙の旧統一教会の機関誌があった」 [405019576]
- 【悲報】日本、パンダ0にwwwwwwwwwwww高市さんありがとう🐼 [271912485]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
