Rust part31 (615レス)
1-

1: デフォルトの名無しさん [] 2025/07/03(木) 21:30:06.95 ID:ORBrZxS2(1) AAS
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

公式ドキュメント
https://www.rust-lang.org/learn

Web上の実行環境
https://play.rust-lang.org

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/

※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust

※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/

※次スレは原則>>980が立てること

前スレ
Rust part30
2chスレ:tech

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
2chスレ:tech
516: デフォルトの名無しさん [] 2025/07/27(日) 18:58:59.66 ID:LBT37M4+(8/13) AAS
Rustの3倍くらいわかりやすい(冗長に書いてくれてる)

https://www.gnu.org/software/emacs/manual/pdf/elisp.pdf
517: デフォルトの名無しさん [] 2025/07/27(日) 20:07:39.35 ID:LBT37M4+(9/13) AAS
前々から1度やってみたかった、こういう
読みこなす実力は十分あるのにたまたま読んでいないだけのレベルの人の大勢集まるスレで
Emacs Lispのマニュアルを貼る実験
518: デフォルトの名無しさん [sage] 2025/07/27(日) 21:53:58.38 ID:XSMxDaZG(9/12) AAS
Emacs Lisp が Script-Fu より使いやすいという感覚は全然わからない。
常にブチ切れながら書いてる。
あえていうならライブラリが充実しているということくらいで、それすらも互換性を壊す変更を入れられない理由として足を引っ張っているとも言える。
特にダイナミックスコープは滅びるべき害悪という意識しかなくてそれが使いやすさに寄与しているという意見は初めて聞いた。
519: デフォルトの名無しさん [] 2025/07/27(日) 22:00:14.25 ID:LBT37M4+(10/13) AAS
日本のLISP事情はなにかおかしい
世代的にEmacsそれ自体はある程度触ったことはあるんだろうにという層はなぜかelispのマニュアルに見向きもせず、
それよりもっと若い、言語なんて選べると思ってなさそうな子たちはなぜかEmacsを触ろうとしない
520: デフォルトの名無しさん [] 2025/07/27(日) 22:17:09.51 ID:LBT37M4+(11/13) AAS
そうだなあ、例えばEmacsにはauto-wrapという関数がある。
これはカーソルが行末に近づいた時に自動的に改行して行末整形を行うためのものだ
この関数が「あれっ、さっきディセーブルしたろ?」ってくらい、断っても断っても呼ばれるもんだから
俺の設定ファイルではこの関数自体が空の関数で上書きされてある
この芸当はダイナミックスコープでないとできない
521: デフォルトの名無しさん [sage] 2025/07/27(日) 22:43:48.14 ID:XSMxDaZG(10/12) AAS
上書きしたけりゃ代入で出来るのでダイナミックスコープである必然性はない。
ダイナミックスコープを誤解してない?
522: デフォルトの名無しさん [sage] 2025/07/27(日) 22:45:42.63 ID:XSMxDaZG(11/12) AAS
アプリケーションの拡張という点で考えるとモダンなアプリケーションでは WASM でプラグインに出来る仕組みを用意しているものもある。
近頃はセキュリティを意識しなきゃならないので制約をコントロールしやすい WASM というのは良いアイデアだよね。
523: デフォルトの名無しさん [] 2025/07/27(日) 22:57:26.89 ID:LBT37M4+(12/13) AAS
代入するためにはオブジェクトへのリンクをそのままでなく変数として持っとかないと「他の人は」変更できないでしょ

実際Script-Fuではオブジェクトにアクセスするのに「ああ、さらにそのcarをもう1度辿るのか」ってのばっかじゃん
524: デフォルトの名無しさん [sage] 2025/07/27(日) 23:34:20.94 ID:XSMxDaZG(12/12) AAS
言いたいことが何も伝わらない。
ただ Rust スレの話題でないことははっきりしているのでとりあえず私はこのスレでこの話題を続けるのはやめる。
525: デフォルトの名無しさん [] 2025/07/27(日) 23:41:21.74 ID:LBT37M4+(13/13) AAS
Rustだってレキシカルスコープの言語じゃないか
526: デフォルトの名無しさん [] 2025/07/28(月) 00:22:46.67 ID:Tf0o2LzD(1/2) AAS
ここからが世界の舞台なのに馬鹿だよなー
Script-FuとRustはどちらもレキシカルスコープの言語だ
つまり似たようなメモリ配置のプロセス空間を持ち、
なんらかのスタックコンベンションで動く点では同じだ

Script-Fuが用意した小細工は(car(buf

Rustが用意した小細工はBox<T>

くらいのことは言ってみろ
527: デフォルトの名無しさん [sage] 2025/07/28(月) 00:39:51.43 ID:54WCUCT3(1) AAS
すっこんでろ
528
(1): デフォルトの名無しさん [] 2025/07/28(月) 01:28:23.20 ID:8xcLMnqm(1) AAS
最近書き始めたけど日時取得するのにもややこしいコード書かなきゃいけなくてなんでこんなもんが持て囃されてるんだろうと思った
この言語作った人重度のアスペなんじゃないの
529: デフォルトの名無しさん [sage] 2025/07/28(月) 02:21:56.85 ID:1axX/Ndk(1) AAS
日時取得とプログラミング言語仕様は一切関係がない
530: デフォルトの名無しさん [sage] 2025/07/28(月) 02:28:38.99 ID:LtpwkZt9(1) AAS
できた
println!("現在の日時(ローカルタイム): {}", chrono::Local::now());
531: デフォルトの名無しさん [sage] 2025/07/28(月) 02:31:04.61 ID:u3ejyRV1(1) AAS
chronoは使いづらいからおすすめしない
532: デフォルトの名無しさん [sage] 2025/07/28(月) 06:13:25.85 ID:zOCRCDwg(1/2) AAS
tinyschemeが持て囃されemacsが敬遠される現象と同じ
533: デフォルトの名無しさん [] 2025/07/28(月) 06:41:00.09 ID:Tf0o2LzD(2/2) AAS
>>528
逆に聞きたいんだけど
PCやスマホの中で指令を受けて日時を取得しに行くのは
「小人さん」ではなく「シリコンのチップとかそれなりのセンサ」なのに
なぜITだけこんなことを言われるんだろう
534: デフォルトの名無しさん [] 2025/07/28(月) 07:35:27.24 ID:Qh5MRIIH(1/8) AAS
さてはemacsにビビってやがるな、開発営業
フツーに号令かけることもできるんだぜ
「この世のありとあらゆる文字コードを扱える言語がある。
Emacs Lispだ。
LISPついでに習熟しておいて損はない」
535: デフォルトの名無しさん [] 2025/07/28(月) 08:27:23.85 ID:Qh5MRIIH(2/8) AAS
そのうえテキストエディタがついてくるんだから損はないよな
開発営業のおっさんは同じ条件(~/.emacsというテキストファイル)なのに
それを「非技術者」なもんだから「設定ファイル」としてしか活用できない「悲哀」に気づいてるんだよなw
プログラマ様方はまったく同じ道具立てなのにそれだけで「あの」プログラミングができておしまいになるんだもん
これはみんなに知られちゃまずいんだもんなw
536: デフォルトの名無しさん [] 2025/07/28(月) 08:44:19.95 ID:Qh5MRIIH(3/8) AAS
みんなー、最初の課題はな
Emacsには
M-x what-line

M-x what-cursor-position
とがあるからその2つの情報をいっぺんに表示する
M-x what-line-and-cursor-position
というコマンドを書いてC-x =とかにバインドするんだ
537: デフォルトの名無しさん [sage] 2025/07/28(月) 08:52:08.79 ID:zOCRCDwg(2/2) AAS
よほどのことがない限り二刀流を想定しない
これはITだけではない
特に、万物は一長一短であると信じている者にとっては
弱点を消すもう一つの武器を用意するなんて考えたくもないだろ
538: デフォルトの名無しさん [sage] 2025/07/28(月) 09:40:58.24 ID:E3NP8lW2(1) AAS
躁うつ病(双極性障害)の周期は、躁状態とうつ状態が交互に現れるのが特徴です。
この周期は数カ月から数年と個人差があり、常に躁状態とうつ状態が表れているわけではなく、
間に症状がない「寛解期」を挟むこともあります
539: デフォルトの名無しさん [sage] 2025/07/28(月) 14:08:46.46 ID:O7aojHnp(1/3) AAS
Rustで自分用にライブラリを作ろうとしていて、
そこでC++のライブラリを利用しようとしているんですけど、
上手い感じに統合するためには、どうやったらいいんですかね…?
特にメモリ管理とかです。unsafeを使わなくていいようにしたいです
540: デフォルトの名無しさん [] 2025/07/28(月) 14:16:59.82 ID:Qh5MRIIH(4/8) AAS
俺様アロケータがあるなら型Tの変数をアロケートするときに

Oresama<T>

と書くだけで、使い勝手はBox<T>とかと同じにしてしまう
541: デフォルトの名無しさん [sage] 2025/07/28(月) 14:34:22.54 ID:O7aojHnp(2/3) AAS
なんかsafetyでnewerなbindgenはないのか
542: デフォルトの名無しさん [sage] 2025/07/28(月) 17:15:12.87 ID:kpR5qn81(1) AAS
Rust の外で定義されたものが safe かどうかは自動では判断しようがない。
プログラムを書かずに済ますにしてもなんらかのメタデータは与える必要があるだろうし、
バッチリと何から何まで自動化ってのは無理なんじゃねーのかな。
543: デフォルトの名無しさん [sage] 2025/07/28(月) 17:29:26.66 ID:daSk2bcg(1) AAS
そんなもんAIで余裕でしょ
最もAIが得意とする類の課題
544: デフォルトの名無しさん [] 2025/07/28(月) 18:03:32.69 ID:Qh5MRIIH(5/8) AAS
そして最大の罠
545: デフォルトの名無しさん [sage] 2025/07/28(月) 18:11:28.90 ID:oTNRYreL(1) AAS
そこはAIが最も不得意とする分野
unsafeを用いて提供されるsafeな関数やモジュール関数群が安全か否かを100%判定できること
これができる時代になった時に全てのプログラマーを全廃できる
546: デフォルトの名無しさん [sage] 2025/07/28(月) 18:16:36.76 ID:V7NHZwCK(1) AAS
AI使ってたらそんなこと言うはずもないんだよな
再現性ないんだぜ?
547: デフォルトの名無しさん [] 2025/07/28(月) 18:41:43.40 ID:Qh5MRIIH(6/8) AAS
例えばRustはVecがあるからダブルリンクリストがいらなかったりするでしょ
「えっ、Rustでダブルリンクリスト?しかも自作?なにこの老害」
とかなって
「Rust歴何年よ?」「えっへん〇〇年」「馬鹿だったんだ、この人」
548: デフォルトの名無しさん [sage] 2025/07/28(月) 18:51:31.01 ID:vSY6h8X4(1) AAS
その理解もどうなのw
549: デフォルトの名無しさん [sage] 2025/07/28(月) 21:04:58.46 ID:O7aojHnp(3/3) AAS
抽象化レイヤーをRustで書く方法
550: デフォルトの名無しさん [] 2025/07/28(月) 22:26:39.23 ID:Qh5MRIIH(7/8) AAS
Rust歴というよりもダブルリンクリスト歴なんだよな
Cで実際にダブルリンクリストを使って問題に対処した実務経験なしで彼らがRust製のダブルリンクリストを手放すわけがないし、
第一それだって彼らにとっては眺めて楽しむものなのだ
551: デフォルトの名無しさん [sage] 2025/07/28(月) 22:28:22.25 ID:SLPj4B6Y(1) AAS
まずRustの基本常識を身に着け終えた後でFFIやunsafeに進みなさい
552: デフォルトの名無しさん [] 2025/07/28(月) 23:23:57.49 ID:Qh5MRIIH(8/8) AAS
人類は数十年かかって
・シングルリンクリストはそもそもライブラリ化しません
・ダブルリンクリストは「単純継承」のみライブラリ化します
・さもなきゃコンスセル
という知恵を石から絞り出した
RustはそれをVecとVecDeqeueに発展させたが
問題はそれが進化の正しい舳先かどうか
553: デフォルトの名無しさん [sage] 2025/07/29(火) 01:00:10.21 ID:A5j4bQYz(1/2) AAS
双方向のリンクリストにこだわるのは
強参照の循環が必ず生じると思ってるか、その一部を弱参照に変えるしかないと思ってるんだよね
生ポインタなら一部ではなく全部生ポインタで作るのに
554: デフォルトの名無しさん [sage] 2025/07/29(火) 01:00:59.09 ID:+DAbbYTz(1) AAS
CPUキャッシュメモリ考慮が速さを支配する時代になって以降
リンクリストが有利な場面が大きく減ってベクタやベクタベースのデックなどが有利に変わったのは事実
それでも残るリンクリスト利用もCPUキャッシュメモリを配慮したアンロールリンクリストなど様々な応用変種が各用途ごとに使われることとなった
555
(1): デフォルトの名無しさん [sage] 2025/07/29(火) 15:51:23.75 ID:pHNfVPjg(1/2) AAS
データの特性にあわせて最適なもの選ぶだけだろ
有利不利とかなんでそういう思考になるか謎
556: デフォルトの名無しさん [] 2025/07/29(火) 19:05:37.57 ID:EalfDF/V(1/5) AAS
Rust       C++       Java   Python

Vec<T>      vector     ArrayList    List
VecDeque<T>   deque     ArrayDeque   collections.deque
LinkedList<T>   list       LinkedList  ー
BinaryHeap<T>  priority_queue  PriorityQueue  heapq
HashMap<K, V>  unordered_map HashMap  dict
BTreeMap<K, V>  map      TreeMap    ー
HasgSet<T>    unordered_set HashSet    set
BTreeSet<T>    set       TreeSet    ー
557
(1): デフォルトの名無しさん [sage] 2025/07/29(火) 19:07:30.10 ID:yr1Z5meU(1) AAS
>>555
データ特性によるアルゴリズムの選択で参考にされるO(n)などはメモリアクセスでかかるコストをゼロもしくは均一とみなして来たが
CPUの高速化によりメモリキャッシュに載るかどうかで何百倍も速さが変わるようになってアルゴリズム選択の観点も大きく変わって来た話だろ
有利と思われていたものが不利へと変わった
558: デフォルトの名無しさん [sage] 2025/07/29(火) 19:12:24.34 ID:q5zHFRxw(1) AAS
必ずまとまった連続領域にあることが保証されるベクタはキャッシュに乗ることが保証されて速いからね
559: デフォルトの名無しさん [sage] 2025/07/29(火) 19:36:55.11 ID:zbBRX4z5(1) AAS
スタックvsヒープも
常にキャッシュに載るスタックを活用しまくるRustが登場
560
(1): デフォルトの名無しさん [] 2025/07/29(火) 20:11:21.16 ID:EalfDF/V(2/5) AAS
Rustは変数の寿命をソースコードの静的解析から解き明かすのみならず、実際のメモリ確保もスタックから行うのであると思ってる人まだいるの?
561
(1): デフォルトの名無しさん [sage] 2025/07/29(火) 20:15:36.12 ID:1nklfDHD(1/5) AAS
>>560
それで合ってる
RustではBoxかVecを指定しない限り
構造体などオブジェクトもスタック上に確保
562
(1): デフォルトの名無しさん [sage] 2025/07/29(火) 20:19:10.20 ID:RU6DXavP(1) AAS
駄目じゃん
563: デフォルトの名無しさん [sage] 2025/07/29(火) 20:20:04.54 ID:1nklfDHD(2/5) AAS
>>562
何がダメなの?
スタック上に確保するから速くて有利
564
(1): デフォルトの名無しさん [] 2025/07/29(火) 20:20:36.88 ID:EalfDF/V(3/5) AAS
>>561
え?返り値として返される時はコピーされるんでしょ?
565: デフォルトの名無しさん [sage] 2025/07/29(火) 20:24:19.75 ID:1nklfDHD(3/5) AAS
>>564
コピーされない
返り値最適化により初めから呼び出し元のスタックフレーム上に生成される
566: デフォルトの名無しさん [] 2025/07/29(火) 20:29:47.96 ID:EalfDF/V(4/5) AAS
あのさ、
スタック上に確保すると
「解析がなくても」「解放は容易」でしょ?
それが
「解析はあるのだから」「どこでも同じ」にならない?
567: デフォルトの名無しさん [sage] 2025/07/29(火) 20:36:31.61 ID:1nklfDHD(4/5) AAS
何を問題にしてる?
スタック上のため確保もアクセスも高速
その上でRustではアクセスと解放の安全も両立している
568
(1): デフォルトの名無しさん [] 2025/07/29(火) 20:47:35.07 ID:EalfDF/V(5/5) AAS
「スタック上に確保しなくても同じことはできる」
って言ってる
そのうえで
「スタック上にしか確保してないのか」
って言ってる
569: デフォルトの名無しさん [sage] 2025/07/29(火) 20:52:53.58 ID:1nklfDHD(5/5) AAS
>>568
スタック上に確保するときのみ確保が高速
スタック上で確保した時はキャッシュにほぼ載るためアクセスも高速
ヒープ上ではどちらも遅くて不利
570: デフォルトの名無しさん [sage] 2025/07/29(火) 21:02:55.02 ID:yJ/ZZe3K(1) AAS
ついに糖質と言い争えるレベルまで落ちたか
571
(1): デフォルトの名無しさん [sage] 2025/07/29(火) 22:39:15.04 ID:pHNfVPjg(2/2) AAS
>>557
操作ごとに計算量違うだろ?
CSの教養のないど素人じゃん
572: デフォルトの名無しさん [sage] 2025/07/29(火) 22:48:01.97 ID:ysadVfOf(1) AAS
>>571
どの操作も計算量の算出時にメモリアクセスによる時間コストを考慮していなかったことが昔の敗因
573: デフォルトの名無しさん [sage] 2025/07/29(火) 23:17:45.02 ID:VkX72Ez2(1) AAS
「計算量」を理解してないだけだな
574: デフォルトの名無しさん [sage] 2025/07/29(火) 23:23:46.49 ID:A5j4bQYz(2/2) AAS
多少遅くてもいいからCPUと関係ない言語で書きたい
mallocが使えない状況でその言語を使えるならそのほうがCPUと無関係でいられる
575
(1): デフォルトの名無しさん [sage] 2025/07/29(火) 23:25:20.99 ID:gZolU48c(1/2) AAS
計算量は係数を考慮せず次数だけだからね
キャッシュヒットとミスのような係数が桁違いに変わってくる現実だと逆転が起きるのは当たり前
576: デフォルトの名無しさん [sage] 2025/07/29(火) 23:29:05.70 ID:gZolU48c(2/2) AAS
机上の計算量だけ見ていてもダメで必要な箇所は比較計測になる
そこでのRustは選択肢を広げてくれた存在
577: デフォルトの名無しさん [sage] 2025/07/29(火) 23:41:21.56 ID:4+dSqHol(1) AAS
大きな2次元配列で2次元のどちらを基準に全走査するかで桁違いに速度が変わるのもCPUメモリキャッシュのせいだよな
そのへん考慮できない人はプログラマに向いていない
578: デフォルトの名無しさん [sage] 2025/07/30(水) 00:05:02.69 ID:2CCQm4VI(1) AAS
マイクロマネジメントをな、マイクロマネジメントをいつでもサボれるくらいになりなよ
579
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 00:46:05.33 ID:zYz0+G1r(1/4) AAS
>>575
それは小さいデータのときだけ
計測してみろよ
特殊な前提なのに話を一般化すんなよ
580
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 00:51:05.39 ID:6h+f7gEs(1) AAS
ほらやっぱり
複オジは「計算量」を理解していないだろ?
581
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 01:15:10.54 ID:ZVYNNQCS(1) AAS
ベクタは確保メモリサイズを超えると別メモリへの移動ペナルティが発生するにも関わらず、
ベクタへのデータの追加操作はベクタのサイズに関わらずO(1)とされる。
これはデータを2^n個追加した時の累計メモリ移動は最悪時でも、
1+2+4+8+...+2^(n-1)=2^n-1個のメモリ移動しか発生しないためである
582: デフォルトの名無しさん [] 2025/07/30(水) 06:58:14.11 ID:dn+Bg3eY(1) AAS
・超指向性スピーカーを使用して統合失調症の周囲で殺人をしたと話していたのですがご存じの方知りませんか?

【兵庫県知事問題】「斎藤知事動画はバズる」と直感、編集して1500万再生 中傷動画も発信した男性(31)の後悔 [ぐれ★]
2025/07/29(火) 21:04:36.36
2chスレ:newsplus

こちらの方は後悔しているけれど
統合失調症周囲の人間は逆の精神状態の下記の人物

「仕事はデキるのに…」異常で執拗なパワハラをする“ダーク・トライアド“と呼ばれる、職場のヤバい人たち [パンナ・コッタ★]
2025/07/30(水) 02:17:10.53
2chスレ:newsplus
583: デフォルトの名無しさん [] 2025/07/30(水) 10:38:53.50 ID:kDw0lUC7(1) AAS
Rustが糞遅いのはこういうのも関係してるんだろうな
584: デフォルトの名無しさん [sage] 2025/07/30(水) 10:55:36.76 ID:HGz1hbaM(1) AAS
>>580
complexityを計算量と訳したバカのせいで新しいバカが量産されてる
585
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 15:55:46.79 ID:gxsH3v1Z(1) AAS
>>579
データが大きくても係数の差が次数の差より影響することは普通にありえる

キャッシュミスしまくるがO(n)で済むアルゴリズムと
ほぼキャッシュヒットしまくるがO(n·log(n))かかるアルゴリズムがあるとしよう
両者のアルゴリズム自体の係数差は単純にnとn·log2(n)とする
例えばn=2^30≒10億の場合はアルゴリズムの差でlog2(2^30)=30倍の差が生じる
ところがキャッシュミスするとメモリアクセスの差で300倍遅いことが現代のCPUでありえる
そのためキャッシュミスしまくるO(n)よりもO(n·log(n))が速く実行されることが起きる
586: デフォルトの名無しさん [sage] 2025/07/30(水) 16:10:27.29 ID:aMDk5tN6(1) AAS
だからさー計算量ってそういう比較をするためにあるんじゃないんだって
CS101の超基礎だからちゃんと勉強しなよ
587: デフォルトの名無しさん [sage] 2025/07/30(水) 16:28:45.91 ID:zYz0+G1r(2/4) AAS
>>585
はいはい
計測してからほざけ
588: デフォルトの名無しさん [sage] 2025/07/30(水) 17:11:45.14 ID:cfT0F8KB(1) AAS
実効速度の比較の場合
計算量はNが無限近くに大きい時のみ有効なんだよ
Nが無限近いと係数がいくら大きくても無視できる
ところが現実にはコンピューターで扱えるNは小さな有限値だから係数を考慮しないと実効速度は逆転しちゃう
589: デフォルトの名無しさん [sage] 2025/07/30(水) 18:05:23.41 ID:Kp0t8wWh(1) AAS
O(1)とO(n)の話だったのにO(n)とO(n log(n))にすり替えて自己正当化しようとするところがいかにも複おじ仕草
590: デフォルトの名無しさん [sage] 2025/07/30(水) 19:07:56.72 ID:hgMZBDIB(1) AAS
>>581
そのメモリ移動もまとめてキャッシュに乗るから速いね
591: デフォルトの名無しさん [sage] 2025/07/30(水) 19:41:04.04 ID:ZSzdQGzh(1/5) AAS
DDRn-SDRAMからキャッシュへのfetch時間は、12(ns)位だから、メモリコントローラが賢ければ、
3GHzのCPUの場合、36クロック位で済むので、めちゃくちゃ遅いわけではない。
592: デフォルトの名無しさん [sage] 2025/07/30(水) 19:44:24.21 ID:jptgQq59(1) AAS
で、結局Rustでは実際どういうときにリンクトリスト使うの?
593: デフォルトの名無しさん [sage] 2025/07/30(水) 20:03:01.97 ID:ZSzdQGzh(2/5) AAS
Grokによれば、以下のように、DDR5 SDRAMからキャッシュに乗せるまでの時間は、8〜20(ns)程度らしい。
これは、3GHz の CPU だと 24〜60 (クロック) 程度に相当する時間。ものすごく遅いわけではない。

実測値として、Intelのx86 CPU(例:12th/13th/14th Gen Core)+DDR5構成でのプリフェッチ完了時間は、以下のように報告されています():標準的なDDR5-4800構成:約15〜25 ns(L1/L2へのプリフェッチ)。
高性能DDR5-7200構成:約10〜20 ns。
最適化された環境(低CL、オーバークロック):8〜15 ns。

594: デフォルトの名無しさん [sage] 2025/07/30(水) 20:11:57.87 ID:ZSzdQGzh(3/5) AAS
大体で言えば、32バイト位の領域がキャッシュに乗っていない場合に、24〜75 (クロック) 程度の追加時間が必要になる。
しかし、そこから連続するメモリーにアクセスしている場合には、追加時間は 0 クロック。
通常、1つの構造体やクラスに対してまとまって処理するが、処理に本質的に必要な時間が 100 クロックだとすると、
そこに、24〜70 クロック程度が上乗せされることになる。だから、トータルだと、24%〜75% 程度、処理時間が
長くかかる、ということになる。
もしも、本質的な処理に必要な時間が 10 クロックのように非常に粒度が小さい処理の場合だと、
キャッシュに乗っていれば、10 クロックだけで済むところが、34〜85 クロックかかることになる。
その場合は、3.4倍から8.5倍の時間がかかる、ということになる。
だから、リンクリストの場合、1つのノードのバイト数が少なかったり、ループの中で1ノードあたりに処理
する内容が少ないならば、キャッシュに乗っている事が重要になる事が有る。
しかし、1つのノードのバイト数が大きかったり、ループの中で処理する1ノードあたりの処理が
大きい場合は、キャッシュミスの影響をあまり気にしなくてよい。
595: デフォルトの名無しさん [sage] 2025/07/30(水) 20:19:57.86 ID:ZSzdQGzh(4/5) AAS
具体例で言うと、大量の3Dの座標データなどに対して、CPUで単純に平行移動を書けるような場合は、SIMD命令を使わない場合、
1点当たりの処理は、ループ自体に必要な時間が5クロック、足し算に必要な時間が3次元の場合、3クロックで、
全体で、1点当たり8クロック、と見積もれる。ループを展開して、例えば、8点ずつ処理したりすれば、一点当たりに
必要なクロック数はもっと下げられる。SIMD命令を使えば、もっと下げられる。
このような場合は、LinkedList(list) よりも、ArrayList(vector)の方が適す。
しかし、1行に80文字くらい入っているようなテキストの1行を処理する場合、1行を処理するには数百クロックが必要になり、
行全体を収める構造としては、LinkedListでも、キャッシュミスによる速度低下の影響は軽微。
596: デフォルトの名無しさん [sage] 2025/07/30(水) 20:27:23.39 ID:zYz0+G1r(3/4) AAS
すげーわw
初手から間違った方向の議論してるのに早く気付け
597
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 20:46:03.62 ID:ZSzdQGzh(5/5) AAS
高速なプログラムを作った人が「キャッシュの事も考慮することで高速化しています」と言っていたとしても、
それは、キャッシュ以外の部分が既に早く作りこまれた後だからの話。大部分の遅さの原因はキャッシュの事を気にする
以前の問題で、大半はLinkedListを使うべき場所でArrayListを使っている事だったりする。
なぜなら、キャッシュミスは、24〜75クロック程度の時間増加にしかならないからだ。
598: デフォルトの名無しさん [sage] 2025/07/30(水) 21:02:52.82 ID:S65PQfLi(1/2) AAS
机上の空論プログラマ
いるよね
599: デフォルトの名無しさん [sage] 2025/07/30(水) 21:07:04.54 ID:W/B9cxh8(1/7) AAS
俺はプログラミングばかりしている人間だし、高速化技術には定評があるから、机上の空論家ではない。
実際に作ったものの速度を見ると、どうやってこんなに高速化したのか分からず目を白黒させた人がいる。
600
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:08:49.52 ID:W/B9cxh8(2/7) AAS
ID:ZSzdQGzh
が俺だ。俺は、高速化技術の第一人者であり、先生と呼ばれる人間だ。
601
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:12:48.14 ID:9ZmySMAs(1) AAS

リンクリストは要素毎にポインタを持つ必要があるから、仮にstrのリストとすると要素あたりのサイズはダブルリンクリストの場合は倍となり、
キャッシュミスを考慮しないとしても単純にスキャン量が倍になる
602
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:14:52.61 ID:W/B9cxh8(3/7) AAS
はっきり言って、高速化に関しては、教科書を書いている人は間違っている事が多い。
こんなところに買いても嘘だと思われて終わりだろうが、1つの証拠は、俺の作ったアプリは異常に速度が速い。
これは嘘ではない。速度を得たければ、ArrayList(std::vector)だけでは駄目で、LinkedList(std::list)を効果的に使う必要がある。
603: デフォルトの名無しさん [sage] 2025/07/30(水) 21:15:44.64 ID:W/B9cxh8(4/7) AAS
>>601
それでも速い。
604
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:17:52.50 ID:R2zwxvxE(1) AAS
>>602
では試しにサンプルコードを提示してくれないか?
それを動かしてみて実際に速いと体験してみたい
605
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:22:58.73 ID:S65PQfLi(2/2) AAS
GrokにDDRのレイテンシ聞いてる時点でど素人じゃん
値おかしいし
606
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:36:07.17 ID:W/B9cxh8(5/7) AAS
>>605
俺はプログラミングばかりやっていたので、メモリーのクロック数の実際の値には詳しくない。
ハードに詳しいようなタイプのパソコン博士ではない。
607: デフォルトの名無しさん [sage] 2025/07/30(水) 21:36:37.58 ID:W/B9cxh8(6/7) AAS
>>604
嫌だ。
608: デフォルトの名無しさん [sage] 2025/07/30(水) 21:37:49.82 ID:W/B9cxh8(7/7) AAS
なぜいやかと言うと、俺の知見や技術を、
当たり前であったかのように論文や本などに記載
する人がいるからだ。
609: デフォルトの名無しさん [sage] 2025/07/30(水) 22:01:32.02 ID:IkZxqK3l(1) AAS
>>600
数学100点先生は高速化技術の第一人者でもいらっしゃられたのですね

>>597
>大部分の遅さの原因はキャッシュの事を気にする以前の問題で、大半はLinkedListを使うべき場所でArrayListを使っている事だったりする。

本当にそんな事例があるのならば
ぜひ具体的なコードを挙げていただけませんか
610: デフォルトの名無しさん [sage] 2025/07/30(水) 22:01:33.80 ID:GCxxEIm4(1) AAS
「いる」ではなく「いた」なら使ってもいい
611: デフォルトの名無しさん [sage] 2025/07/30(水) 22:20:47.28 ID:zYz0+G1r(4/4) AAS
>>606
それでよく高速化の専門家自称できんのな
お前メモリーアクセスオーダーとかも理解できてないだろ
中の下を自覚したほうがいいぞ
612
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 22:28:25.25 ID:bASHA+tv(1) AAS
100点先生は複雑な並列は専門外だったはず
メモリ同期の抽象化やそれを用いたロックフリーアルゴリズムなど知らないと思う
613: デフォルトの名無しさん [sage] 2025/07/30(水) 22:52:44.16 ID:+nnd8qy9(1) AAS
>>612
> メモリ同期の抽象化
横だけど、抽象化だけじゃなくてテストは必須な
ユーザー環境でメモリオーバークロックやタイミングチューンでTSOが保たれてない場合をいくつも見たから
614: デフォルトの名無しさん [sage] 2025/07/30(水) 23:25:58.88 ID:g7G1hz5M(1) AAS
プログラミングではTotal Store Orderが保たれないハードを相手にする必要はないけど
そのような破綻したハードが存在することを知っておかないと
正しく動かない環境があった時に原因が分からず悩みそうだ
615: デフォルトの名無しさん [sage] 2025/07/31(木) 00:30:01.24 ID:QRajgvO2(1) AAS
知りたいと欲する者が実在すればいいけど
登場人物全員無欲だったりしたら欲しくもない物を押し売りするのは偽善だよ
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s