公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
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 part17
https://mevius.5ch.net/test/read.cgi/tech/1665063793/
Rust part18
■ このスレッドは過去ログ倉庫に格納されています
2022/12/10(土) 18:17:02.61ID:XSNoXTPt
138デフォルトの名無しさん
2022/12/17(土) 00:08:08.60ID:VEec8B0L まずお前はアルゴリズムうんぬんの前に日本語からやり直せ
はちみつの割にはまともなこと言ってる
> 適材適所なのは前提として承知の上で「vector が適材である場所が多い」という話だろ。
あとqueueの実装にvector使うのは別に変じゃない、リングバッファも知らんのか?
はちみつの割にはまともなこと言ってる
> 適材適所なのは前提として承知の上で「vector が適材である場所が多い」という話だろ。
あとqueueの実装にvector使うのは別に変じゃない、リングバッファも知らんのか?
139デフォルトの名無しさん
2022/12/17(土) 00:12:22.66ID:QKb/ZQVv140デフォルトの名無しさん
2022/12/17(土) 01:03:01.35ID:7EPFyoxp >>120
その記事で、Stroustrup氏は、非常に特殊な例で実験しているように思える。
最初から明らかにvectorに有利、LinkedListに不利な実験。
これは最初からLinkedListに不利なことが脳内でも分かるので、
それが分からないとしたらstroustrup氏は想像力が不足している。
Stroupstrup氏本人は難しくて理由が分からない、みたいに思ってるらしい。
その記事で、Stroustrup氏は、非常に特殊な例で実験しているように思える。
最初から明らかにvectorに有利、LinkedListに不利な実験。
これは最初からLinkedListに不利なことが脳内でも分かるので、
それが分からないとしたらstroustrup氏は想像力が不足している。
Stroupstrup氏本人は難しくて理由が分からない、みたいに思ってるらしい。
141デフォルトの名無しさん
2022/12/17(土) 01:08:13.28ID:7EPFyoxp142デフォルトの名無しさん
2022/12/17(土) 01:15:11.07ID:7EPFyoxp >>140
[補足]
コンテナ内にN個の要素がある場合、
リンクリストは、1個の要素の追加はO(1)。しかし、全走査や探索は、O(N)。
彼の実験だと、1個追加する際に、追加する場所を探すために平均で N/2 個の
ノードを巡ることになっているから、
1要素あたりに必要な時間 = 場所を探す時間 + 追加の時間
= O(N/2) + O(1)
= O(N)
となる。一方、vector の場合、
1要素あたりに必要な時間 = 場所を探す時間 + 追加の時間
= O(N/2) + O(N/2)
= O(N)
となる。
オーダー的には、O(N)で同じだが、前者は、キャッシュミスが酷くなるので、
「係数」がとても大きくなっている。
だから、前者の方が後者よりも遅くなっていっる理由は明確。
結論は、要素を追加する際に「場所を探す」ことを行なっていて、それがLinkedList
の不得意分野だから。
[補足]
コンテナ内にN個の要素がある場合、
リンクリストは、1個の要素の追加はO(1)。しかし、全走査や探索は、O(N)。
彼の実験だと、1個追加する際に、追加する場所を探すために平均で N/2 個の
ノードを巡ることになっているから、
1要素あたりに必要な時間 = 場所を探す時間 + 追加の時間
= O(N/2) + O(1)
= O(N)
となる。一方、vector の場合、
1要素あたりに必要な時間 = 場所を探す時間 + 追加の時間
= O(N/2) + O(N/2)
= O(N)
となる。
オーダー的には、O(N)で同じだが、前者は、キャッシュミスが酷くなるので、
「係数」がとても大きくなっている。
だから、前者の方が後者よりも遅くなっていっる理由は明確。
結論は、要素を追加する際に「場所を探す」ことを行なっていて、それがLinkedList
の不得意分野だから。
143デフォルトの名無しさん
2022/12/17(土) 01:26:25.05ID:7EPFyoxp >>142
[補足2]
リンクトリストとvectorで、条件を満たす1個の要素を線形探索で探す時に
かかる時間は、共に O(N)で、オーダー的には同じ。
ところが、彼の実験の場合、(均等確率の完全に近い)乱数で要素の追加される
場所と追加される順序が強くランダムになるようにしている。
この条件だと、途中結果の集合を線形探索する時、vectorは、
要素のアドレスが連続しているのでキャッシュの先読み(prefetch)がよく聞くが、
LinkedListは、アドレスが強くランダムになるので、キャッシュの先読みが
上手く働かず、1個の要素当り、現在のCPUで、80クロックほどのレイテンシーが
発生してしまう。
つまり、この実験においては、要素追加の場所をランダムにしているせいで、
要素を巡る際に、
vectorは、メモリーリードの追加レイテンシーが0に近い。
LinkedListは、メモリーリードの追加レイテンシーが80クロック程度かかる。
[補足2]
リンクトリストとvectorで、条件を満たす1個の要素を線形探索で探す時に
かかる時間は、共に O(N)で、オーダー的には同じ。
ところが、彼の実験の場合、(均等確率の完全に近い)乱数で要素の追加される
場所と追加される順序が強くランダムになるようにしている。
この条件だと、途中結果の集合を線形探索する時、vectorは、
要素のアドレスが連続しているのでキャッシュの先読み(prefetch)がよく聞くが、
LinkedListは、アドレスが強くランダムになるので、キャッシュの先読みが
上手く働かず、1個の要素当り、現在のCPUで、80クロックほどのレイテンシーが
発生してしまう。
つまり、この実験においては、要素追加の場所をランダムにしているせいで、
要素を巡る際に、
vectorは、メモリーリードの追加レイテンシーが0に近い。
LinkedListは、メモリーリードの追加レイテンシーが80クロック程度かかる。
144デフォルトの名無しさん
2022/12/17(土) 01:27:47.24ID:QKb/ZQVv >>140-141
そういう極端な解釈や誤解を解くためと思われる FAQ が置いてある。
https://www.stroustrup.com/bs_faq.html#list
まずはこれを読んで、それでもなにか異論を唱えたいならこの中のどの部分についての異論なのか、
自身の主張がどう違うのか明らかにするように。
そういう極端な解釈や誤解を解くためと思われる FAQ が置いてある。
https://www.stroustrup.com/bs_faq.html#list
まずはこれを読んで、それでもなにか異論を唱えたいならこの中のどの部分についての異論なのか、
自身の主張がどう違うのか明らかにするように。
145デフォルトの名無しさん
2022/12/17(土) 01:33:08.88ID:7EPFyoxp146デフォルトの名無しさん
2022/12/17(土) 01:36:35.34ID:7EPFyoxp この分野は、専門家かどうかより、生まれつきの頭の良さがものを言う。
彼ははっきり行って、計算速度の見積もりにおいては才能が無い。
彼が評価されるべきは、
誰もオブジェクト指向を知らない時にSimulaのようなオブジェクト指向言語を
知っていて、それをCに応用したというだけ。
vectorやLinkedListの速度に関しては彼は間違っている。
彼ははっきり行って、計算速度の見積もりにおいては才能が無い。
彼が評価されるべきは、
誰もオブジェクト指向を知らない時にSimulaのようなオブジェクト指向言語を
知っていて、それをCに応用したというだけ。
vectorやLinkedListの速度に関しては彼は間違っている。
147デフォルトの名無しさん
2022/12/17(土) 01:38:43.69ID:7EPFyoxp 「測定無しで語らないで下さい」
というのも理論を軽視している学者の典型例。
日本でも物凄く多い。
自分が理論を正しく理解できて無いから、テストしないと見積もることが出来ないだけ。
というのも理論を軽視している学者の典型例。
日本でも物凄く多い。
自分が理論を正しく理解できて無いから、テストしないと見積もることが出来ないだけ。
148デフォルトの名無しさん
2022/12/17(土) 01:46:15.68ID:7EPFyoxp 彼は理論を分かって無いことが明白。
この実験において、LinkedListがNが大きくなると有利になると思い込んでNを
大きくしていったらしい。すると、彼の予想に反してそうならなかった。
しかし、俺には理由が分かる。
むしろ、LinkedListで、Nで割った時の単位要素あたりの時間は、あるNが
ある値を超えたときから曲線の傾きが大きくなる。
(i) N < N0 : キャッシュが働く時:
f(N) = a1 * N + b
(ii) N > N0 : キャッシュが働かない時:
f(N) = a2 * N + b
DDR4-SDRAM での推定の係数 :
a1 = 0.5
a2 = 0.5 * 80
俺は、これを数秒間で導いたから、ケアレスミスが含まれるかもしれない。
この実験において、LinkedListがNが大きくなると有利になると思い込んでNを
大きくしていったらしい。すると、彼の予想に反してそうならなかった。
しかし、俺には理由が分かる。
むしろ、LinkedListで、Nで割った時の単位要素あたりの時間は、あるNが
ある値を超えたときから曲線の傾きが大きくなる。
(i) N < N0 : キャッシュが働く時:
f(N) = a1 * N + b
(ii) N > N0 : キャッシュが働かない時:
f(N) = a2 * N + b
DDR4-SDRAM での推定の係数 :
a1 = 0.5
a2 = 0.5 * 80
俺は、これを数秒間で導いたから、ケアレスミスが含まれるかもしれない。
149デフォルトの名無しさん
2022/12/17(土) 01:50:24.83ID:7EPFyoxp >>148
[ミス訂正]
a1 = 0.5 * L
a2 = 0.5 * (L + 80)
L = ループ一回当りのマシン語レベルでの見た目のクロック数。
0.5 を掛けているのは、1回の線形探索において、
平均移動回数が (N / 2) 回と推定されるから。
まだ、ケアレスミスがあるかもしれない。
[ミス訂正]
a1 = 0.5 * L
a2 = 0.5 * (L + 80)
L = ループ一回当りのマシン語レベルでの見た目のクロック数。
0.5 を掛けているのは、1回の線形探索において、
平均移動回数が (N / 2) 回と推定されるから。
まだ、ケアレスミスがあるかもしれない。
150デフォルトの名無しさん
2022/12/17(土) 02:27:39.08ID:QKb/ZQVv すごいな。0点回答じゃん。
今後のため、ぜひコテハン頼む。
今後のため、ぜひコテハン頼む。
151デフォルトの名無しさん
2022/12/17(土) 02:32:26.93ID:tahIU/4X152デフォルトの名無しさん
2022/12/17(土) 02:49:00.46ID:k1W2kl1x >>150
ID:7EPFyoxp = はちみつがはちみつ搾り取った後の残りカス
ID:7EPFyoxp = はちみつがはちみつ搾り取った後の残りカス
153デフォルトの名無しさん
2022/12/17(土) 03:25:53.37ID:sANdR5x8 100点おじさん頭悪いのは知ってたけどさすがにここまでとは思ってなかった
文章読解力に難があり過ぎ
文章読解力に難があり過ぎ
154デフォルトの名無しさん
2022/12/17(土) 07:25:20.60ID:jr3rWKyM155デフォルトの名無しさん
2022/12/17(土) 08:32:26.89ID:4FUmGBLH Stroustrupもオジ
156デフォルトの名無しさん
2022/12/17(土) 09:13:23.75ID:FhlO/q3l 適材適所にオジ
157デフォルトの名無しさん
2022/12/17(土) 09:40:37.34ID:7jrYNUaI158デフォルトの名無しさん
2022/12/17(土) 10:03:46.47ID:yTH8JJEo >>122
Rustの0.30%には流石にがっかりきた
比率からして既に一巡したんだと思う
Java vs Scala(JVM, 17.5%/0.47% => 何巡もして37倍)
C/C++ vs Rust(Native, 8.24%/0.30% => 一巡目で27倍)
Rustの0.30%には流石にがっかりきた
比率からして既に一巡したんだと思う
Java vs Scala(JVM, 17.5%/0.47% => 何巡もして37倍)
C/C++ vs Rust(Native, 8.24%/0.30% => 一巡目で27倍)
159デフォルトの名無しさん
2022/12/17(土) 10:51:59.45ID:Qk229x0R OSに依存しないライブラリの行数は、Android全体の行数で割り算できない
これが割り算のカラクリか
これが割り算のカラクリか
160デフォルトの名無しさん
2022/12/17(土) 12:18:07.73ID:Wsp+a048 フロントエンドのちゃらい流行り廃りを追いかけ続けるのに疲れて
早めにバックエンドに転向したいと目論んでいた筋にとっとは
Rustは無駄だと思い知ったことだろう
GoやっとけよGo
早めにバックエンドに転向したいと目論んでいた筋にとっとは
Rustは無駄だと思い知ったことだろう
GoやっとけよGo
161デフォルトの名無しさん
2022/12/17(土) 12:43:51.64ID:Qk229x0R しょーきょー法でGoみたいな風潮もいかがなものか
162デフォルトの名無しさん
2022/12/17(土) 13:48:17.15ID:xCKnPakF 自分はRust使うけど人にはとりあえずGoにしとけば?って言っちゃうな
VSCodeなんかと同じで無難感はある
VSCodeなんかと同じで無難感はある
163デフォルトの名無しさん
2022/12/17(土) 14:06:02.86ID:1OvQaYAC 統一教会は日本で、ゆとりある教育を提唱しているが、韓国では全く逆のことを言ってるからな。
騙されるなよ。
騙されるなよ。
164デフォルトの名無しさん
2022/12/17(土) 14:19:36.18ID:e3Jjde95 >>157
対象の集団規模やその集団のレイヤーが異なることと、各々の集団に対して類似又は共通の雰囲気・要素が存在することないし感じられることは両立しうると思わない?
対象の集団規模やその集団のレイヤーが異なることと、各々の集団に対して類似又は共通の雰囲気・要素が存在することないし感じられることは両立しうると思わない?
165デフォルトの名無しさん
2022/12/17(土) 14:38:10.16ID:1OvQaYAC 集団って統一教会のことか。
166デフォルトの名無しさん
2022/12/17(土) 14:42:50.70ID:1OvQaYAC 統一教会と自民党は両立じゃないだろ。
日本における統一教会の実行部隊が自民党。
日本における統一教会の実行部隊が自民党。
167デフォルトの名無しさん
2022/12/17(土) 15:23:19.74ID:y2/IfEDT なんでRustのスレで統一教会が出てくるんだ…
統一教会に限らずカルトの関心は政治権力だから判定条件はis_自民党()じゃなくis_政権与党()だろ
必ずしもすべての政党が実行部隊機能を実装してるとは限らないけど
自民党を取り換えればカルト問題が解決するみたいな発想だとデバッグに支障がでるぞ
統一教会に限らずカルトの関心は政治権力だから判定条件はis_自民党()じゃなくis_政権与党()だろ
必ずしもすべての政党が実行部隊機能を実装してるとは限らないけど
自民党を取り換えればカルト問題が解決するみたいな発想だとデバッグに支障がでるぞ
168デフォルトの名無しさん
2022/12/17(土) 15:42:05.55ID:Sr9loTqZ169デフォルトの名無しさん
2022/12/17(土) 16:16:29.71ID:CCt/1VrG Rustが適材適所なのはゼロではないと承知の上で「Goが適材である場所が多い」という話だろ
170デフォルトの名無しさん
2022/12/17(土) 16:35:05.53ID:tBNmuOUO Rustはlinuxのドライバー作成専用言語
171デフォルトの名無しさん
2022/12/17(土) 16:40:34.79ID:2HWiBBP7 Rustはしょーきょー法で>>170みたいな風潮
172デフォルトの名無しさん
2022/12/17(土) 17:07:17.99ID:OmKniCOI173デフォルトの名無しさん
2022/12/17(土) 17:29:21.75ID:vKjf1YhM 統一教会信者出てきたな
174デフォルトの名無しさん
2022/12/17(土) 18:34:12.05ID:nURLlX7p そうかそうかww
175デフォルトの名無しさん
2022/12/17(土) 19:05:38.21ID:u3ABxrNN >>151
要素数Nの時に何らかの処理Aに掛かる時間をf(N)とするとき、
O(g(N))は、ある N0 があって、N0 より大きな どんな実数 N に対しても、
f(N) / g(N) < アルファ
が成り立つことを意味し、「押さえられる無限大」、といい、
ランダウ記号(の一種)、または、ラージO 記法という。
だから、O(N/2)=O(N)であり、O(N)+O(1)=O(N)である。
要素数Nの時に何らかの処理Aに掛かる時間をf(N)とするとき、
O(g(N))は、ある N0 があって、N0 より大きな どんな実数 N に対しても、
f(N) / g(N) < アルファ
が成り立つことを意味し、「押さえられる無限大」、といい、
ランダウ記号(の一種)、または、ラージO 記法という。
だから、O(N/2)=O(N)であり、O(N)+O(1)=O(N)である。
176デフォルトの名無しさん
2022/12/17(土) 19:13:53.37ID:u3ABxrNN >>175
[補足]
このことは、
f(N) = O(g(N))
とも書く。以下、厳密性はないが、理解のために書いておけば、
f(N)=O(1)とは、大まかに言って f(N) = b
f(N)=O(N)とは、大まかに言って f(N) = a・N + b
f(N)=O(N^2)とは、大まかに言って f(N) = a2・N^2 + a1・N + b
を意味する。だから、
f'(N)=O(N/2)とは、大まかに言って f'(N) = a・N/2 + b のような意味になるから、
a' = a / 2 と書いてしまえば、
f'(N) = a'・N + b となり、f'(N)=O(N)と言えることが分かる。
f''(N)=O(N)+O(1) は、大まかに言って、
f''(N)= { a・N + b1 } + b2 = a・N + (b1+b2) であるから、
f''(N)=O(N) であることがわかる。従って、
O(N/2)+O(1)=O(N)
であることが分かる。
[補足]
このことは、
f(N) = O(g(N))
とも書く。以下、厳密性はないが、理解のために書いておけば、
f(N)=O(1)とは、大まかに言って f(N) = b
f(N)=O(N)とは、大まかに言って f(N) = a・N + b
f(N)=O(N^2)とは、大まかに言って f(N) = a2・N^2 + a1・N + b
を意味する。だから、
f'(N)=O(N/2)とは、大まかに言って f'(N) = a・N/2 + b のような意味になるから、
a' = a / 2 と書いてしまえば、
f'(N) = a'・N + b となり、f'(N)=O(N)と言えることが分かる。
f''(N)=O(N)+O(1) は、大まかに言って、
f''(N)= { a・N + b1 } + b2 = a・N + (b1+b2) であるから、
f''(N)=O(N) であることがわかる。従って、
O(N/2)+O(1)=O(N)
であることが分かる。
177デフォルトの名無しさん
2022/12/17(土) 19:21:03.57ID:u3ABxrNN >>176
[補足2]
また厳密性を無視して大体で書くと、
f(N)=O(g(N))
の場合、f(N)のNに関する最大次数がg(N)と同じ、という意味。
だから、g(N)がNに関して k 次元だと、f(N)もNに関して k 次元、という
ことを概ね意味する。だから、大体、
f(N)=O(1) とは、f(N)=b を意味する。
f(N)=O(N) とは、f(N)=a * N + ・・・ を意味する。
f(N)=O(N^2) とは、f(N)=a * N^2 + ・・・ を意味する。
なので、f(N)=O(N/2)+O(1)だと、
f(N) = a・N/2 + b
みたいになり、これは、N に関して 1 次関数だから、Nに関する最大次数は 1。
だから、O(N)ということになる。
[補足2]
また厳密性を無視して大体で書くと、
f(N)=O(g(N))
の場合、f(N)のNに関する最大次数がg(N)と同じ、という意味。
だから、g(N)がNに関して k 次元だと、f(N)もNに関して k 次元、という
ことを概ね意味する。だから、大体、
f(N)=O(1) とは、f(N)=b を意味する。
f(N)=O(N) とは、f(N)=a * N + ・・・ を意味する。
f(N)=O(N^2) とは、f(N)=a * N^2 + ・・・ を意味する。
なので、f(N)=O(N/2)+O(1)だと、
f(N) = a・N/2 + b
みたいになり、これは、N に関して 1 次関数だから、Nに関する最大次数は 1。
だから、O(N)ということになる。
178デフォルトの名無しさん
2022/12/17(土) 19:24:51.43ID:u3ABxrNN >>177
[補足3]
グラフを描いたときにどこかで無限大になるような特殊な関数以外は、
「テーラー展開」で近似することが出来て、
f(N)=a_k・N^k + a_{k-1}・N^{k-1} + a_{k-2}・N^{k-2}+・・・+
a_1・N + a_0 + (少しの余り)
のように書けることが知られている。
それを知っていれば、理解の助けになる。
[補足3]
グラフを描いたときにどこかで無限大になるような特殊な関数以外は、
「テーラー展開」で近似することが出来て、
f(N)=a_k・N^k + a_{k-1}・N^{k-1} + a_{k-2}・N^{k-2}+・・・+
a_1・N + a_0 + (少しの余り)
のように書けることが知られている。
それを知っていれば、理解の助けになる。
179デフォルトの名無しさん
2022/12/17(土) 19:50:24.96ID:VEec8B0L O(N) とかを最近知って説明したくてたまらないんだろうなw
180デフォルトの名無しさん
2022/12/17(土) 19:54:00.74ID:IjrFOfax すまない、彼はド素人だから見逃してやってほしい
山奥で一人でプログラミング勉強中なんだろうね
情報系学生や職業マが一ヶ月目に覚えることを皆に発表したいらしいんだw
山奥で一人でプログラミング勉強中なんだろうね
情報系学生や職業マが一ヶ月目に覚えることを皆に発表したいらしいんだw
181デフォルトの名無しさん
2022/12/17(土) 20:18:30.40ID:Qk229x0R 4ヶ月で教えたいこと
1 実数クラスは複素数クラスを継承しない
2 実装継承だろうがinterface継承だろうがオーバーライドは遅い
3 オーバーロードは速い
4 templateも速い
1 実数クラスは複素数クラスを継承しない
2 実装継承だろうがinterface継承だろうがオーバーライドは遅い
3 オーバーロードは速い
4 templateも速い
182デフォルトの名無しさん
2022/12/17(土) 20:33:54.64ID:hdE6AFs/ 今となっては不要な知識だな
183デフォルトの名無しさん
2022/12/17(土) 21:25:28.93ID:y2/IfEDT Stroustrup氏の名誉のために補足しておくと、発端?の120の記事は
Software Development for Infractructure(インフラストラクチャ用のソフトウェア開発)
ってタイトルで、vectorとlinked listの比較を出してるセクションの見出しは
Access memory less(メモリアクセスは少なく)
で、書き出しは
When I first wrote microcode to squeeze the last bit of
efficiency out of a processor, a good rule of thumb was that
the system could execute nine instructions while waiting
for a memory read to complete.
(私が初めて効率を追求したマイクロコードを書いたときに目安にしたのは、
システムが1つのメモリの読み取り完了を待つ間に9つの命令を実行できるということだった)
インフラとかファームウェア向けに開発する時はポインタ(間接参照)使うとオーバーヘッドが大きいから
多少非効率に思えてもvector使った方がいいよって内容になってる
端的に言ってしまえば適材適所の話でアルゴリズムとかオーダは関係ないはず(全部読んでない)
余計なこと教える前に読解力を鍛えてやってくれ
Software Development for Infractructure(インフラストラクチャ用のソフトウェア開発)
ってタイトルで、vectorとlinked listの比較を出してるセクションの見出しは
Access memory less(メモリアクセスは少なく)
で、書き出しは
When I first wrote microcode to squeeze the last bit of
efficiency out of a processor, a good rule of thumb was that
the system could execute nine instructions while waiting
for a memory read to complete.
(私が初めて効率を追求したマイクロコードを書いたときに目安にしたのは、
システムが1つのメモリの読み取り完了を待つ間に9つの命令を実行できるということだった)
インフラとかファームウェア向けに開発する時はポインタ(間接参照)使うとオーバーヘッドが大きいから
多少非効率に思えてもvector使った方がいいよって内容になってる
端的に言ってしまえば適材適所の話でアルゴリズムとかオーダは関係ないはず(全部読んでない)
余計なこと教える前に読解力を鍛えてやってくれ
184デフォルトの名無しさん
2022/12/17(土) 22:23:54.16ID:o5Fxz66L185デフォルトの名無しさん
2022/12/17(土) 23:38:44.03ID:t4TbQFP4 昔のCPUでアセンブラの経験あると
間接アドレシングなんか、クロック数かかり過ぎてアホらしいから、
そういうレベルの話だろ
ただ、この記事は2012年で、パイプラインやキャッシュの話も出てる
間接アドレシングなんか、クロック数かかり過ぎてアホらしいから、
そういうレベルの話だろ
ただ、この記事は2012年で、パイプラインやキャッシュの話も出てる
186デフォルトの名無しさん
2022/12/18(日) 00:59:42.45ID:KVP7/Uup 最近の自動翻訳は分かりやすくて優秀過ぎる
マシンのアーキテクチャやプログラミング言語にもよりますが、ベクターはNの値が小から中程度であれば最適という答えになります。
8Gバイトのノートパソコンで実験を行ったところ、Nは50万よりはるかに大きいことが分かりました。
図1の赤線はリスト、青線はベクトルでかかった時間を示しています。
これは微妙な違いではない。X軸は10万要素単位、Y軸は秒単位です。
つまり、「小さなリスト」に対しては、リンク構造よりもベクトルの方がリストの表現として優れているのです。
:
インフラアプリケーションの開発者は、コンパクトでアクセスパターンが
予測可能であることが効率化に不可欠だと言っています。
消費電力はメモリアクセスの回数にほぼ比例するため、
赤(リスト)と青(ベクトル)の線は、スマートフォンのバッテリーの消費量や必要なサーバーファームの数の一次近似値です。
マシンのアーキテクチャやプログラミング言語にもよりますが、ベクターはNの値が小から中程度であれば最適という答えになります。
8Gバイトのノートパソコンで実験を行ったところ、Nは50万よりはるかに大きいことが分かりました。
図1の赤線はリスト、青線はベクトルでかかった時間を示しています。
これは微妙な違いではない。X軸は10万要素単位、Y軸は秒単位です。
つまり、「小さなリスト」に対しては、リンク構造よりもベクトルの方がリストの表現として優れているのです。
:
インフラアプリケーションの開発者は、コンパクトでアクセスパターンが
予測可能であることが効率化に不可欠だと言っています。
消費電力はメモリアクセスの回数にほぼ比例するため、
赤(リスト)と青(ベクトル)の線は、スマートフォンのバッテリーの消費量や必要なサーバーファームの数の一次近似値です。
187デフォルトの名無しさん
2022/12/18(日) 01:25:48.90ID:Pt3aaRaQ 自民党の問題点は、統一教会とつるんでるのがばれても縁を切らず、共存共栄の道を模索するとドヤ顔で記者会見したこと。
188デフォルトの名無しさん
2022/12/18(日) 07:34:33.80ID:wAFe3NPG189デフォルトの名無しさん
2022/12/18(日) 07:50:17.66ID:pDoyuEtS LinuxでもRustイキリ飛ばし記事が出て来るだろう
数字のカラクリが無いかどうか皆でTokeiしような
数字のカラクリが無いかどうか皆でTokeiしような
190デフォルトの名無しさん
2022/12/18(日) 07:50:19.13ID:Pt3aaRaQ 最新のLinux Kernel 6.1はRustyというコード名前だし。
Rustに全振りしてるのでは?
Rustに全振りしてるのでは?
191デフォルトの名無しさん
2022/12/18(日) 07:51:05.11ID:Pt3aaRaQ LinuxはC++との相性最悪だし、Rustへ移行するしかない。
192デフォルトの名無しさん
2022/12/18(日) 07:58:07.32ID:uoxQL2Fw LinusのドSでただ働き奴隷がどれだけ頑張るのか
おらワクワクして来たぞ!
早くTokei見たい!
おらワクワクして来たぞ!
早くTokei見たい!
193デフォルトの名無しさん
2022/12/18(日) 08:01:27.15ID:x48rVm/G 見せてもらう、イキリRustの全振り移行とやらをw
194デフォルトの名無しさん
2022/12/18(日) 08:04:19.65ID:Pt3aaRaQ コード名前には突っ込んでこないのか。
せっかくご用意したのに。
せっかくご用意したのに。
195デフォルトの名無しさん
2022/12/18(日) 08:08:01.02ID:x48rVm/G GoはNSAのメモリ安全公認言語だしイキリゼロ
堅実だわ
堅実だわ
196デフォルトの名無しさん
2022/12/18(日) 08:09:33.26ID:x48rVm/G 名前でイキレてると考えてるRustが惨めでならない
197デフォルトの名無しさん
2022/12/18(日) 08:14:25.29ID:x48rVm/G Rustはボチボチ、って周りには答えることにした
198デフォルトの名無しさん
2022/12/18(日) 08:24:24.51ID:VbINaFFK199デフォルトの名無しさん
2022/12/18(日) 08:27:05.71ID:VbINaFFK 言語仕様の優劣でイキリマウントしてた俺たちが需要を勘違いしてただけ
200デフォルトの名無しさん
2022/12/18(日) 09:11:48.81ID:f04NRte7201デフォルトの名無しさん
2022/12/18(日) 09:21:33.95ID:/OPYjfYK 適材適所にGo
処世術にGo
隠れ趣味にRust
処世術にGo
隠れ趣味にRust
202デフォルトの名無しさん
2022/12/18(日) 09:23:43.37ID:rHzdtEqK Kernelいじるので仕方なくやってる
203デフォルトの名無しさん
2022/12/18(日) 09:26:47.68ID:mA0KcrEy コソコソRust
イヤイヤRust
なのに愛され言語No1←あっ、
イヤイヤRust
なのに愛され言語No1←あっ、
204デフォルトの名無しさん
2022/12/18(日) 09:46:37.39ID:x4/bAggI205デフォルトの名無しさん
2022/12/18(日) 10:21:16.41ID:NDMThvXE >PythonだとAIで突っ込まれて実力が露呈するから
知ってたわ
Rust仕様マウントerはそういう実力の無い奴
知ってたわ
Rust仕様マウントerはそういう実力の無い奴
206デフォルトの名無しさん
2022/12/18(日) 11:18:40.85ID:TnNRBRmL はちみつオジは仕様マウントerですか?
はちみつオジは仕様マウントerですか?
はちみつオジは仕様マウントerですか?
207デフォルトの名無しさん
2022/12/18(日) 13:25:28.85ID:Pt3aaRaQ Haskellと協力しよう。
208デフォルトの名無しさん
2022/12/18(日) 13:55:56.71ID:VIbL9AVd goのメリット
文法の単純さ
ライブラリ、リントなどのエコ環境の良さ
ビルド速度
バイナリ配布の簡易さ
これだけあれば十分だろ。
文法の単純さ
ライブラリ、リントなどのエコ環境の良さ
ビルド速度
バイナリ配布の簡易さ
これだけあれば十分だろ。
209デフォルトの名無しさん
2022/12/18(日) 14:04:55.78ID:HLXapubf 標準ライブラリが充実してるのが一番大きいだろ
210デフォルトの名無しさん
2022/12/18(日) 14:09:44.46ID:fqk1SiW3 次世代言語スレでやれ
211デフォルトの名無しさん
2022/12/18(日) 14:28:32.59ID:XqzxcH1y 各言語の複雑さの総和は大きい
だから、一つしか選べないとかそれ以外と戦争とかしない限り、単純さは現実的でない
だから、一つしか選べないとかそれ以外と戦争とかしない限り、単純さは現実的でない
212デフォルトの名無しさん
2022/12/18(日) 14:50:00.51ID:/g1tYkuT >>185
そんなことはない。486以降では、昔から間接アドレッシングと
インクリメントのクロック数は同じだった。
1. 間接アドレッシング(p = p->next) :
mov ebx,[ebx+メンバのクラスの先頭からの相対アドレス] ;1クロック
2. ポインタのインクリメント(++p) :
add ebx,クラスのバイトサイズ ;1クロック
#Stroustrup氏はキャッシュの話をしている。
そんなことはない。486以降では、昔から間接アドレッシングと
インクリメントのクロック数は同じだった。
1. 間接アドレッシング(p = p->next) :
mov ebx,[ebx+メンバのクラスの先頭からの相対アドレス] ;1クロック
2. ポインタのインクリメント(++p) :
add ebx,クラスのバイトサイズ ;1クロック
#Stroustrup氏はキャッシュの話をしている。
213デフォルトの名無しさん
2022/12/18(日) 15:04:42.63ID:/g1tYkuT >>178
[補足]
なお、O(・) 記号では、log N はよく出てくるが、log x は x=1の周りでは
次のような無限級数で(近似的に)展開できる。
log(1+x)=x-(1/2)x^2+(1/3)x^3-(1/4)x^4+・・・
無限級数なので、xの最大次数は、無限大。
だから、178 では、k が有限で止まっている形になっているが、本当はそうではない。
また、上記の展開式を見ると、正負の符合が交互に出てくることが分かる。
そんなに単純ではないが、このことも影響して y = log x は、dy/dx → 0 ( x → 無限大 )
であり、傾きが極限的にどんどん 0 (水平) に近付いていく。
つまり、N = 1 + x が変化してもほとんど変化しなくなる。
だから、log N は、「みなし定数」的と言われることがある。
なお、この時、逆関数で考えると、x = exp(y) であり、
y = exp(x) のグラフを描いて、y = x で(対称的に)折り返すと考えやすい事がある。
[補足]
なお、O(・) 記号では、log N はよく出てくるが、log x は x=1の周りでは
次のような無限級数で(近似的に)展開できる。
log(1+x)=x-(1/2)x^2+(1/3)x^3-(1/4)x^4+・・・
無限級数なので、xの最大次数は、無限大。
だから、178 では、k が有限で止まっている形になっているが、本当はそうではない。
また、上記の展開式を見ると、正負の符合が交互に出てくることが分かる。
そんなに単純ではないが、このことも影響して y = log x は、dy/dx → 0 ( x → 無限大 )
であり、傾きが極限的にどんどん 0 (水平) に近付いていく。
つまり、N = 1 + x が変化してもほとんど変化しなくなる。
だから、log N は、「みなし定数」的と言われることがある。
なお、この時、逆関数で考えると、x = exp(y) であり、
y = exp(x) のグラフを描いて、y = x で(対称的に)折り返すと考えやすい事がある。
214デフォルトの名無しさん
2022/12/18(日) 15:09:00.64ID:/g1tYkuT >>213
なお、この展開式にもウソがある。
それは、log(1+x)で、その展開が正しいのは、|x| < 1 の範囲に限られることを
言及せずに誤魔化していること。
しかし、x → ∞で、dy/dx → 0 の証明は出来る。それは、
y = exp(x) が、dy/dx → ∞ だから、dx/dy → 0 であり、
逆関数 y = log(x) だと、dy/dx → 0 であるから。 //
なお、この展開式にもウソがある。
それは、log(1+x)で、その展開が正しいのは、|x| < 1 の範囲に限られることを
言及せずに誤魔化していること。
しかし、x → ∞で、dy/dx → 0 の証明は出来る。それは、
y = exp(x) が、dy/dx → ∞ だから、dx/dy → 0 であり、
逆関数 y = log(x) だと、dy/dx → 0 であるから。 //
215デフォルトの名無しさん
2022/12/18(日) 15:44:41.47ID:W2G5o+in 高校数学を長々喋らんでいいw
216デフォルトの名無しさん
2022/12/18(日) 15:50:01.93ID:+UGBJzct 高校数学を演説したいんよね
それ聞かされる周りの高学歴の気持ちになってみてほしい
それ聞かされる周りの高学歴の気持ちになってみてほしい
217デフォルトの名無しさん
2022/12/18(日) 15:51:59.31ID:3W2C0MJT218デフォルトの名無しさん
2022/12/18(日) 16:07:41.26ID:RtgSwVtd219デフォルトの名無しさん
2022/12/18(日) 16:28:02.98ID:vIybIBIV220デフォルトの名無しさん
2022/12/18(日) 16:47:10.99ID:7QJNj+m3 迷惑オジ達に共通してるのは論理的思考レベルの低さ
読解力がない
要点をつかめない
主張を簡潔にまとめられない
全部原因は同じ
読解力がない
要点をつかめない
主張を簡潔にまとめられない
全部原因は同じ
221デフォルトの名無しさん
2022/12/18(日) 16:50:21.46ID:nDGotMNY goユーザとRustユーザは言語に求める性質が違うから住み分けたほうがいいかも
goも少し触ったことがあるけど型の表現とエラー処理のサポートが物足りなくてRustに流れた
例えば標準パッケージioのReadWriteSeekerとかReadSeekCloserは自分の感覚だととても気持ち悪い
(多少文法が複雑でもRead + Write + Seekみたいに足し算で表現したい)
ただgoの文字型のruneは中二っぽくて好き
go2もpython3みたいに大変革になるのかな
※goは長いこと使ってないから情報が古いかもしれない
goも少し触ったことがあるけど型の表現とエラー処理のサポートが物足りなくてRustに流れた
例えば標準パッケージioのReadWriteSeekerとかReadSeekCloserは自分の感覚だととても気持ち悪い
(多少文法が複雑でもRead + Write + Seekみたいに足し算で表現したい)
ただgoの文字型のruneは中二っぽくて好き
go2もpython3みたいに大変革になるのかな
※goは長いこと使ってないから情報が古いかもしれない
222デフォルトの名無しさん
2022/12/18(日) 16:57:13.69ID:ciqdCn4z とりあえずここはRustスレなのでGoの話はよそでやってくれ
223デフォルトの名無しさん
2022/12/18(日) 17:05:54.42ID:QlmiPWwX >>219
たしかにRustよりGoのが速いベンチマークがあったな
>>220
この人5chがちら裏なの理解する論理的思考レベルがない
>>221
また中二っぽく可愛がってもらえよ
Go language part 5
https://mevius.5ch.net/test/read.cgi/tech/1645915400/390
390: デフォルトの名無しさん sage 2022/06/15(水) 05:30:30.87 ID:l/JMV/GH
goはそもそもエラーを扱う気概にかける言語だからどうしょうもない
毎回いちいちエラーコード返すのが作法とか何時の時代だよって感じだ
たしかにRustよりGoのが速いベンチマークがあったな
>>220
この人5chがちら裏なの理解する論理的思考レベルがない
>>221
また中二っぽく可愛がってもらえよ
Go language part 5
https://mevius.5ch.net/test/read.cgi/tech/1645915400/390
390: デフォルトの名無しさん sage 2022/06/15(水) 05:30:30.87 ID:l/JMV/GH
goはそもそもエラーを扱う気概にかける言語だからどうしょうもない
毎回いちいちエラーコード返すのが作法とか何時の時代だよって感じだ
224はちみつ餃子 ◆8X2XSCHEME
2022/12/18(日) 17:17:21.90ID:ZjeACeaz >>147
理論は事実に立脚して組み立てられるものであって理論を組み立てればその通りに事実が動くわけじゃない。
理論の正しさは実際にそうなっているということによって証明しなければ想定の中でだけ正しくても意味ない。
実測は要る。 (少なくとも工学的思想では。)
想定のほうで Stroustrup が誤っているという主張は (その主張が妥当かどうかは別として) わかったが、
だからといって実測の重要性を貶めるのはよくないな。
理論は事実に立脚して組み立てられるものであって理論を組み立てればその通りに事実が動くわけじゃない。
理論の正しさは実際にそうなっているということによって証明しなければ想定の中でだけ正しくても意味ない。
実測は要る。 (少なくとも工学的思想では。)
想定のほうで Stroustrup が誤っているという主張は (その主張が妥当かどうかは別として) わかったが、
だからといって実測の重要性を貶めるのはよくないな。
225デフォルトの名無しさん
2022/12/18(日) 17:18:21.24ID:Kra2fWlF >たしかにRustよりGoのが速いベンチマークがあったな
ボロ負けじゃね?しかもマルチスレッドがGoの独壇場じゃねぇか
誰か本気だせよ
次世代言語27 Nim Zig Pony Carbon Gleam
https://mevius.5ch.net/test/read.cgi/tech/1659660050/81
81: デフォルトの名無しさん(ワッチョイ 1e66-JEMU) sage 2022/09/28(水) 19:48:23.69 ID:Tun9Z/EC0
Nim追加
Language x10 x100 x200 x400 Memory Comment
--------------------------------------------------------------
Zig 0.118 1.073 2.113 4.203 3.2MB (std.HashMap, caller-hash by Context(Fnv1a_64))
Nim(clang) 0.211 1.171 2.245 4.372 4.2MB (CustomCountTable,LTO,ARC,caller-hash) New
C(gcc) 0.136 1.146 2.271 4.531 2.0MB (optimized.c,binary IO,jemalloc,O4,LTO)
C(clang/LLVM) 0.137 1.147 2.280 4.544 2.0MB (optimized.c,binary IO,jemalloc,O3,LTO)
Go 0.152 1.233 2.428 4.832 3.9MB (caller hash,better loop)
Go 0.164 1.346 2.654 5.279 3.8MB (caller hash)
Rust(LLVM) 0.154 1.425 2.838 5.674 2.6MB (optimized-customhashmap,O3,LTO,caller-hash)
以下、caller-hashではない
Go 0.085 0.366 0.693 1.319 61.9MB (parallel.go,reserve 65536/2)<--マルチスレッド
Nim(clang) 0.218 1.255 2.401 4.691 4.2MB (CustomCountTable,LTO,ARC) New
Zig 0.162 1.493 2.970 5.935 4.6MB (std.StringHashMap)
Go 0.182 1.563 3.063 6.097 3.8MB (customhash.go,reserve 65536)
Rust(LLVM) 0.214 1.725 3.396 6.715 3.5MB (optimized,fxhash,O3,LTO)
Nim(clang) 0.316 2.241 4.371 8.633 4.2MB (optimized.nim,std/CountTable,65536,LTO,ARC,FNV) New
Nim(clang) 0.332 2.387 4.652 9.152 4.2MB (optimized.nim,std/CountTable,65536,LTO,ARC) New
ボロ負けじゃね?しかもマルチスレッドがGoの独壇場じゃねぇか
誰か本気だせよ
次世代言語27 Nim Zig Pony Carbon Gleam
https://mevius.5ch.net/test/read.cgi/tech/1659660050/81
81: デフォルトの名無しさん(ワッチョイ 1e66-JEMU) sage 2022/09/28(水) 19:48:23.69 ID:Tun9Z/EC0
Nim追加
Language x10 x100 x200 x400 Memory Comment
--------------------------------------------------------------
Zig 0.118 1.073 2.113 4.203 3.2MB (std.HashMap, caller-hash by Context(Fnv1a_64))
Nim(clang) 0.211 1.171 2.245 4.372 4.2MB (CustomCountTable,LTO,ARC,caller-hash) New
C(gcc) 0.136 1.146 2.271 4.531 2.0MB (optimized.c,binary IO,jemalloc,O4,LTO)
C(clang/LLVM) 0.137 1.147 2.280 4.544 2.0MB (optimized.c,binary IO,jemalloc,O3,LTO)
Go 0.152 1.233 2.428 4.832 3.9MB (caller hash,better loop)
Go 0.164 1.346 2.654 5.279 3.8MB (caller hash)
Rust(LLVM) 0.154 1.425 2.838 5.674 2.6MB (optimized-customhashmap,O3,LTO,caller-hash)
以下、caller-hashではない
Go 0.085 0.366 0.693 1.319 61.9MB (parallel.go,reserve 65536/2)<--マルチスレッド
Nim(clang) 0.218 1.255 2.401 4.691 4.2MB (CustomCountTable,LTO,ARC) New
Zig 0.162 1.493 2.970 5.935 4.6MB (std.StringHashMap)
Go 0.182 1.563 3.063 6.097 3.8MB (customhash.go,reserve 65536)
Rust(LLVM) 0.214 1.725 3.396 6.715 3.5MB (optimized,fxhash,O3,LTO)
Nim(clang) 0.316 2.241 4.371 8.633 4.2MB (optimized.nim,std/CountTable,65536,LTO,ARC,FNV) New
Nim(clang) 0.332 2.387 4.652 9.152 4.2MB (optimized.nim,std/CountTable,65536,LTO,ARC) New
226デフォルトの名無しさん
2022/12/18(日) 17:31:20.56ID:Pcpr/u0k >>224-225
はちみつオジが、仕様マウントerなのか、それともベンチ実測で天才プログラムを出すか、の流れキター
はちみつオジが、仕様マウントerなのか、それともベンチ実測で天才プログラムを出すか、の流れキター
227デフォルトの名無しさん
2022/12/18(日) 17:35:28.16ID:XqzxcH1y ギャンブルって短期的には実力より運だから
実力主義やめないと短く簡潔にまとめることはできない
実力主義やめないと短く簡潔にまとめることはできない
228デフォルトの名無しさん
2022/12/18(日) 17:40:11.04ID:UUQieuN3229デフォルトの名無しさん
2022/12/18(日) 17:42:45.12ID:UUQieuN3 みんな知ってたの?
230デフォルトの名無しさん
2022/12/18(日) 17:43:32.51ID:UUQieuN3 これポエオジだけじゃ済まされないよ
231デフォルトの名無しさん
2022/12/18(日) 18:10:21.20ID:nDGotMNY >>223
Goが合わなかったからRust使ってるって言うてますやん
Go2出たらまたちょっと試すかも
このスレでGoの宣伝してる人は他の言語のスレでRustを宣伝してた人と同類なんだろうけど
goのどこを宣伝したいのかいまいち伝わってこない
並行処理が書きやすいって辺り?
「Rust→メモリ安全(ドン!)」みたいにもう少し分かりやすくしてくれないと(どのみち迷惑だけど…)
Goが合わなかったからRust使ってるって言うてますやん
Go2出たらまたちょっと試すかも
このスレでGoの宣伝してる人は他の言語のスレでRustを宣伝してた人と同類なんだろうけど
goのどこを宣伝したいのかいまいち伝わってこない
並行処理が書きやすいって辺り?
「Rust→メモリ安全(ドン!)」みたいにもう少し分かりやすくしてくれないと(どのみち迷惑だけど…)
232デフォルトの名無しさん
2022/12/18(日) 18:22:19.21ID:Yrd3c8FW >>228-230
いやショックスルー出来ん
いやショックスルー出来ん
233デフォルトの名無しさん
2022/12/18(日) 18:29:47.39ID:NaS4unRh234デフォルトの名無しさん
2022/12/18(日) 18:29:54.58ID:7MHx9hHi はちみつ味の複製ポエム美味しかった?
235デフォルトの名無しさん
2022/12/18(日) 18:34:43.02ID:5AOpzoDN 俺も知らなかった、裏切られた
androidの数字とか結局は誘導だったんだな
androidの数字とか結局は誘導だったんだな
236デフォルトの名無しさん
2022/12/18(日) 18:36:05.72ID:5AOpzoDN >>231
お前が迷惑
お前が迷惑
237デフォルトの名無しさん
2022/12/18(日) 18:36:46.79ID:5AOpzoDN >>234
こいつも迷惑
こいつも迷惑
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【テレビ】25年ぶり復活「炎のチャレンジャー」南原清隆&菊池風磨がMC 懐かし「電流イライラ棒」も [湛然★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 働いて参ります
- ( ・᷄ὢ・᷅ )あ?
- ブタをぶったたく
- とうとう袖なしジージャン買ったったwww
- こんな自転車乗ってたやつがいたら?
- 【画像】童貞は絶ッッッ対"4"を選ぶバレー部J Kが寮でパンパンの集合写真見つけちゃったwwwwwwwwwwwwww [904880432]
