[過去ログ]
Qiita 5 - キータぞ、来たぞ、キータだぞー (1002レス)
Qiita 5 - キータぞ、来たぞ、キータだぞー http://mevius.5ch.net/test/read.cgi/tech/1717651046/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
778: デフォルトの名無しさん [] 2024/11/22(金) 00:44:12.61 ID:iUXVzsPN 先生の昔の記事 ZEAM開発ログ番外編: Elixir で再帰とStreamのどちらが速いのか,素因数分解で比較してみた https://qiita.com/zacky1972/items/d63903ff68f64e52b74a > @zacky1972 による Stream 版その1で,次のような方針を採っています。 > 最初にエラトステネスの篩(sieve)により素数を生成。ただし最初から2と奇数に絞っている。 > def sieve(seq) do > Stream.unfold(seq, fn s -> > p = s |> Enum.at(0) > next = s |> Stream.filter(fn x -> rem(x, p) != 0 end) > {p, next} > end) > end > 素数の無限数列を生成するために,エラトステネスの篩 (sieve) は @naoya@github さんの「無限リストによるエラトステネスのふるい」を採用しました。 「先生!エラトステネスの篩には剰余計算要らないんですよ」って誰か言ってやらんのか? Elixir界隈は馬鹿の連鎖が深刻だな。 http://mevius.5ch.net/test/read.cgi/tech/1717651046/778
786: デフォルトの名無しさん [sage] 2024/11/22(金) 11:37:35.39 ID:iUXVzsPN >>778の先生の昔の記事あらためて見直してみたんだが > 実行結果 > iMac Pro (2017) にてベンチマーク Fact.all_benchmarks を実行してみました。 > CPUとGPUは最高性能の構成,メモリとSSDは標準構成です。 > $ mix run -e "Fact.all_benchmarks" > Elixir.Fact.FactRecursive1: factorization using recursive calls in compress and factor > 0.000005 sec. > Elixir.Fact.FactRecursive2: factorization using recursive calls in factor and Enum in compress > 0.001167 sec. > Elixir.Fact.FactStream1: factorization using Stream that generates every prime numbers while half of the target number without dividing the target number > 2.336041 sec. > Elixir.Fact.FactStream2: factorization using Stream that generates numbers while half of the target number and filter by sieve without dividing the target number > 0.000391 sec. > Elixir.Fact.FactStream3: factorization using Stream that generates numbers while half of the target number or that divided by founded factor > 0.000201 sec. > FactRecursive1 ぶっちぎりです。やはり全て再帰呼び出しで書いた方がパフォーマンスは良くなります。 最速と最遅で46万倍違うんだがElixirってたかだか11111の素因数分解するのに記述の違いでこんなに差が出るのか? ちょっと信じられん。 http://mevius.5ch.net/test/read.cgi/tech/1717651046/786
789: デフォルトの名無しさん [sage] 2024/11/24(日) 20:29:38.71 ID:Uwrnw/3F >>778 > 今回評価したのは次の5つです。 > > FactRecursive1: @sym_num さんのオリジナル: factor と compress 両方で再帰呼び出しを使用 > FactRecursive2: @sym_num さんの改造版: factor は再帰呼び出し,compress は Enum を使用 > FactStream1: @zacky1972 による Stream 版その1: 最初に素数を生成して余りが0のものをピックアップ。ただし互除法を採用せずに元の数を割らない > FactStream2: @zacky1972 による Stream 版その2: 2と奇数からなる数列を生成して余りが0のものをピックアップした後で,エラトステネスの篩にかける。互除法を採用せずに元の数を割らない > FactStream3: @zacky1972 による Stream 版その3: 2と奇数からなる数列を生成して余りが0のものをピックアップして互除法により元の数を割り,探索範囲を絞り込む 表題に「ZEAM開発ログ番外編: Elixir で再帰とStreamのどちらが速いのか,素因数分解で比較してみた」とあるので繰り返し方法の違いによるパフォーマンス比較と思いきや先生のFactStream1〜3は違うことやっとるのなw これでいいね10もついて誰も突っ込んでないのElixir界隈の闇を感じるわw http://mevius.5ch.net/test/read.cgi/tech/1717651046/789
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.033s