Qiita 3 - キータぞ、来たぞ、キータだぞー

■ このスレッドは過去ログ倉庫に格納されています
2023/05/28(日) 09:56:01.47ID:twg6yDS4
Hello hackers !
Qiitaは、エンジニアリングに関する知識を記録・共有するためのサービスです。
コードを書いていて気づいたことや、自分がハマったあの仕様について、
他のエンジニアと知見を共有しましょう ;)

https://qiita.com/

Qiita(キータ)は、Incrementsが運営するプログラミング情報のナレッジコミュニティ。
2016年現在で日本最大のプログラマーコミュニティとされている[1]。

https://internet.watch.impress.co.jp/docs/news/1025972.html

前スレ Qiita
https://mevius.5ch.net/test/read.cgi/tech/1542357242/
Qiita 2 - キータぞ、来たぞ、キータだぞー
https://mevius.5ch.net/test/read.cgi/tech/1658762410/
2023/12/06(水) 12:58:02.11ID:3feScvAM
>>659
君はC言語しかできんの?
2023/12/06(水) 14:43:54.71ID:JsHlZ4fk
>>664
そんなことはどうでもいい頃のこと
ずっと上から読まないと
667デフォルトの名無しさん
垢版 |
2023/12/06(水) 16:30:05.85ID:RizWoKoD
昔のシューティングゲームなんか、方向は8方向しか無かったんだから斜めに進みたいならX,Y座標に加算する各ベクトルを0.7倍してやれば済むだけの話だったなぁ
でも敵の弾幕は16方向とかズルかった
まあ、パズルみたいに格子を進むゲームなら不用な処理なんだが
2023/12/06(水) 19:36:28.64ID:Y9yXTF6q
>>655
だからケースバイケースだろ
「今朝の気温は285K」とか言われても解らんがな
2023/12/06(水) 23:02:30.60ID:8JqK4Yrt
>>666
効いてて草
670デフォルトの名無しさん
垢版 |
2023/12/07(木) 14:29:02.73ID:wNl2TimY
2π=180が1byteで収まって合理的
671デフォルトの名無しさん
垢版 |
2023/12/07(木) 14:58:43.59ID:fQltjmnX
>>670
Cとかアセンブラで書いてる時代には、2π=256にすると、何周回っても補正がいらないんだよね、まあ、いまどきの言語だとエラーになるけどさ
2023/12/07(木) 16:29:19.68ID:78AJyp32
>>671
そういうとこがわかるかだよね
フラグは立つんじゃなかったっけ
エラー無視と同じようにフラグ無視
(まあどうせ無視だからフラグどうでもいいけど)
2023/12/07(木) 16:33:08.96ID:oY2pVPcB
もしかして剰余知らない人?w
2023/12/07(木) 17:42:06.78ID:ahX/pqE0
割算剰余算は現在のCPUでも非常に遅いため
定数で割算剰余算を行う場合は現在でも掛算加算シフトANDなどにコンパイラが置き換えています
特に定数2^nの剰余は&(2^n-1)で済むため高速です
もちろん256の場合は8bit演算をサポートしていればそれすら必要なくなります
2023/12/07(木) 20:27:03.34ID:oY2pVPcB
>>674
そこまでしないとまともに動くゲームが作れない技術の低さかわいそうw
普通にdoubleでラジアン使ったゲームがグリグリ動くのに
676デフォルトの名無しさん
垢版 |
2023/12/07(木) 21:05:51.14ID:fQltjmnX
>>675
Cとかアセンブラで書いてた時代の話だから
老人の話に若者が無理に加わろうとするなよw
2023/12/07(木) 21:58:03.58ID:wOldY3VJ
0.1+0.2を0.3ピッタリにしたいという要望に対しDecimal型使えって話と
90度や30度等正確に扱いたいという要望に対し角度型用意しろって話は
大して違うものではないんだけどラジアン派はカタクナだね。
与えられたものを何の疑問も持たずに使ってるブタ野郎だね。
678デフォルトの名無しさん
垢版 |
2023/12/07(木) 22:10:57.92ID:ahX/pqE0
>>675
>>676
いいえ
最新のコンパイラも定数による整数割り算を掛け算命令へとコンパイルします
これは最新のCPUであっても整数掛け算命令は1サイクルで済むのに対して整数割り算命令は数十サイクルかかるためです
この手の話をするならば常識的な基礎知識です
2023/12/07(木) 22:17:13.85ID:wOldY3VJ
定数による整数除算がパフォーマンスに大きく影響するプログラムもそうはないと思うのでいまどきのコンパイラが定数除算を定数乗算+シフトに置き換える最適化をしてくれるのも大して必要があってのことではなくて開発者の趣味的なもんだと思うよ。
2023/12/07(木) 22:52:22.96ID:78AJyp32
>>675
まだ条件をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
2023/12/07(木) 23:07:34.68ID:OOqJ6lun
壊れたレコードみたいなスレだねこのすれ
2023/12/08(金) 00:29:46.04ID:1AT0BZX4
>>677
> 90度や30度等正確に扱いたいという要望に対し角度型用意しろ

と思う人がそういうライブラリをDecimal型を使って作ればいいんじゃないかな
30.1度とかが「ピッタリ」になるように
2023/12/08(金) 09:50:47.34ID:k3Bpg+TD
radian使わずにdegreeで全部済ますのは中学生までだよな。
中学生までならdegreeはほぼ整数しか出て来ないしω
2023/12/08(金) 10:40:19.77ID:LYFHy36X
12月1日にアドベントカレンダーが始まって記事が増えたのにラジアンのことしか話さなくなったな
2023/12/08(金) 10:43:43.53ID:vnCtmrWX
>>681
壊れたレコードって何ですか?(若者しぐさ
2023/12/08(金) 12:42:14.73ID:2niISWES
>>676
今時そんな話を突然始めるからファミコンかよって突っ込まれたんだろw
無理に加わろうとするからそうやって顔真っ赤になるんだぞw
687デフォルトの名無しさん
垢版 |
2023/12/08(金) 13:38:51.95ID:corZECtM
>>686
だから、昔の話しの方にわざわざ混ざって来なくていいってわかんねーのかよアホやなw

>まだ条件をまともに把握できない貧相な脳ミソかわいそうw
>ついでに日本語もまともに理解できないと
2023/12/09(土) 08:18:49.84ID:OVj/qE5g
逆だぞw
お前が混ざってきた上に昔の話という条件も書けないアホだから支離滅裂で小馬鹿にされてるんだぞw
2023/12/09(土) 08:21:54.40ID:OVj/qE5g
>>560
どう見ても昔話じゃなく今の話なんだよなあw
690デフォルトの名無しさん
垢版 |
2023/12/09(土) 14:00:24.54ID:/QienOD5
>>688
だから、昔の話しの方にわざわざ混ざって来なくていいってわかんねーのかよアホやなw
昔の話しかどうかもわからない貧相な脳ミソ
まだ条件をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
2023/12/09(土) 15:12:02.71ID:DXmw58tM
>>686
ブタがなんか言ってて笑えるw
692デフォルトの名無しさん
垢版 |
2023/12/09(土) 15:40:18.97ID:4WPSHv3H
チープなCPU積んでる組み込み系なら現役の話やね
2023/12/09(土) 15:44:47.43ID:knfa6RUO
このやり取り見てて怖いのは
これどっちもド素人ってことな
アマチュアさんの論点は面白いわ
2023/12/09(土) 16:06:57.26ID:JLekGzLF
>>685
壊れたレイディオだよな
2023/12/09(土) 16:21:29.73ID:9/8Tko/o
>>692
最新のCPUでも整数でも除算は遅くて数十サイクルかかる
乗算は1サイクルで済む
だから最新のコンパイラでも定数による除算は乗算やシフトに変換してアセンブリコードを生成している
2023/12/09(土) 19:31:40.40ID:OVj/qE5g
反論できなくなって話そらそうと必死なのに同じことしか言えないのは流石にダサいなw
そんなだからいまだにラディアン使えないんだよ
2023/12/09(土) 19:45:40.37ID:DXmw58tM
https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3
> 『ラディアン』(原題:Radiant)は、トニー・ヴァレントによるフランスの
> 漫画作品(バンド・デシネ)。本国では2013年より単行本が発売されており、
> 日本では2015年より邦訳版が刊行されている。
698デフォルトの名無しさん
垢版 |
2023/12/09(土) 19:54:16.97ID:DXmw58tM
浮動小数点数使って弧度法で角度を表すことに何の疑問も持たない人は

#include <iostream>
#include <numbers>
#include <cmath>

int main()
{
  for (int i = 0; i <= 8; i++) {
    double s = sin(i / 4.0 * std::numbers::pi);
    double c = cos(i / 4.0 * std::numbers::pi);
    printf("sin(%d/4π) = %19.16f cos(%d/4π) = %19.16f\n", i, s, i, c);
  }
}

sin(0/4π) = 0.0000000000000000 cos(0/4π) = 1.0000000000000000
sin(1/4π) = 0.7071067811865475 cos(1/4π) = 0.7071067811865476
sin(2/4π) = 1.0000000000000000 cos(2/4π) = 0.0000000000000001
sin(3/4π) = 0.7071067811865476 cos(3/4π) = -0.7071067811865475
sin(4/4π) = 0.0000000000000001 cos(4/4π) = -1.0000000000000000
sin(5/4π) = -0.7071067811865475 cos(5/4π) = -0.7071067811865477
sin(6/4π) = -1.0000000000000000 cos(6/4π) = -0.0000000000000002
sin(7/4π) = -0.7071067811865477 cos(7/4π) = 0.7071067811865474
sin(8/4π) = -0.0000000000000002 cos(8/4π) = 1.0000000000000000

https://wandbox.org/permlink/osSsecrj4yVZmzVi


sin(1/4π)とsin(3/4π)の結果が一致しないことやsin(8/4π)が0.0ちょうどに
ならないことは気にしないんだろうか?
699デフォルトの名無しさん
垢版 |
2023/12/09(土) 19:58:58.90ID:DXmw58tM
> 各種言語のライブラリを作ってるのはたいていラジアン派だがお前のようなアホは一人もいないぞ

このひとBoostとか.NET Frameworkとか知らないんだろうな。

#include <iostream>
#include <boost/math/special_functions/sin_pi.hpp>
#include <boost/math/special_functions/cos_pi.hpp>

int main()
{
  for (int i = 0; i <= 8; i++) {
    double s = boost::math::sin_pi(i / 4.0);
    double c = boost::math::cos_pi(i / 4.0);
    printf("sin(%d/4π) = %19.16f cos(%d/4π) = %19.16f\n", i, s, i, c);
  }
}

sin(0/4π) = 0.0000000000000000 cos(0/4π) = 1.0000000000000000
sin(1/4π) = 0.7071067811865476 cos(1/4π) = 0.7071067811865476
sin(2/4π) = 1.0000000000000000 cos(2/4π) = 0.0000000000000000
sin(3/4π) = 0.7071067811865476 cos(3/4π) = -0.7071067811865476
sin(4/4π) = -0.0000000000000000 cos(4/4π) = -1.0000000000000000
sin(5/4π) = -0.7071067811865476 cos(5/4π) = -0.7071067811865476
sin(6/4π) = -1.0000000000000000 cos(6/4π) = 0.0000000000000000
sin(7/4π) = -0.7071067811865476 cos(7/4π) = 0.7071067811865476
sin(8/4π) = 0.0000000000000000 cos(8/4π) = 1.0000000000000000

https://wandbox.org/permlink/IEFafqP4uhbG2QWv
2023/12/09(土) 23:20:50.00ID:KlOFsEHe
>>698
こういうのだろ >>641
気にしてもしかたがない
2023/12/09(土) 23:25:33.94ID:+PH/QYJf
> コンピュータの計算では「0.1+0.2」は「0.3」になりません。

と断言しちゃう奴も

> 各種言語のライブラリを作ってるのはたいていラジアン派だがお前のようなアホは一人もいないぞ

と言い切っちゃう奴も己の狭い知識が世の中の全てと勘違いしてる点で同類だよなあ。
2023/12/10(日) 00:04:11.75ID:zoYXXcKe
>>699
こうなった

#include <iostream>
#include <boost/math/special_functions/sin_pi.hpp>
#include <boost/math/special_functions/cos_pi.hpp>

int main()
{
for (int i = 0; i <= 12; i++) {
double s = boost::math::sin_pi(i / 6.0);
double c = boost::math::cos_pi(i / 6.0);
printf("sin(%d/6π) = %19.16f cos(%d/6π) = %19.16f\n", i, s, i, c);
}
}

sin(0/6π) = 0.0000000000000000 cos(0/6π) = 1.0000000000000000
sin(1/6π) = 0.5000000000000000 cos(1/6π) = 0.8660254037844387
sin(2/6π) = 0.8660254037844386 cos(2/6π) = 0.5000000000000000
sin(3/6π) = 1.0000000000000000 cos(3/6π) = 0.0000000000000000
sin(4/6π) = 0.8660254037844387 cos(4/6π) = -0.4999999999999999
sin(5/6π) = 0.4999999999999999 cos(5/6π) = -0.8660254037844387
sin(6/6π) = -0.0000000000000000 cos(6/6π) = -1.0000000000000000
sin(7/6π) = -0.5000000000000002 cos(7/6π) = -0.8660254037844385
sin(8/6π) = -0.8660254037844385 cos(8/6π) = -0.5000000000000002
sin(9/6π) = -1.0000000000000000 cos(9/6π) = 0.0000000000000000
sin(10/6π) = -0.8660254037844385 cos(10/6π) = 0.5000000000000002
sin(11/6π) = -0.5000000000000002 cos(11/6π) = 0.8660254037844385
sin(12/6π) = 0.0000000000000000 cos(12/6π) = 1.0000000000000000
2023/12/10(日) 01:52:17.90ID:K18bkLWA
1/6はdoubleで正確に表せられないからそれやりたかったら分数型か度数法採用した三角関数使えって説明されないとわからん人かな
704702
垢版 |
2023/12/10(日) 02:04:39.98ID:zoYXXcKe
>>703
分かってるよ
元の話 >>621-623に対応するのは1/6だからやってみただけ
2023/12/10(日) 03:29:27.52ID:1SmlZO1k
> 分かってるよ

> やってみただけ

お前顔真っ赤だなw
2023/12/10(日) 04:18:03.31ID:IOBSQ4pi
>>702
sin((1/6)π)とsin((5/6)π)が一致しないことを気にしてもしかたないと
Boostをつくってる人たちも考えていたってことだろうな
707デフォルトの名無しさん
垢版 |
2023/12/10(日) 09:33:45.43ID:sajOyEd/
>>701
> コンピュータの計算では「0.1+0.2」は「0.3」になりません。
どこのレスの引用だよ

まだ条件をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
2023/12/10(日) 12:08:34.40ID:1MxEINjf
>>698
>浮動小数点数使って
>値が一致しない

弧度法関係ないから
そこを判ってないから君は馬鹿にされてるんだよ
2023/12/10(日) 12:41:43.11ID:gdYIu2m3
> どこのレスの引用だよ
>
> まだ条件をまともに把握できない貧相な脳ミソかわいそうw
> ついでに日本語もまともに理解できないと

こいつここがQiitaスレって前提すら理解してなさそうw

>>707
>>627のリンク先見れやアホ
2023/12/10(日) 12:51:11.53ID:yvfeQZ7U
>>708
> > 浮動小数点数使って弧度法で角度を表すことに何の疑問も持たない人は

> > sin(1/4π)とsin(3/4π)の結果が一致しないことやsin(8/4π)が0.0ちょうどに
ならないことは気にしないんだろうか

> 弧度法関係ないから

浮動小数点数で1/4π等が正確に表せられない弧度法の問題なんだがお前驚くほどの馬鹿だな。
711デフォルトの名無しさん
垢版 |
2023/12/10(日) 13:10:58.57ID:1MxEINjf
710 は相手にされなくなった複オジか
2023/12/10(日) 13:22:10.29ID:GDhODx6c
ID:1MxEINjf は生きてて申し訳ないと思わないのかな
713デフォルトの名無しさん
垢版 |
2023/12/10(日) 14:17:38.67ID:1MxEINjf
複オジは否定しないんだな
2023/12/10(日) 15:28:56.92ID:cr9NbQ30
言われたことを認めると負けたことになってしまうので
相手をレッテル貼りしてなんか言い返したつもりになってんのねw
715デフォルトの名無しさん
垢版 |
2023/12/10(日) 16:06:29.55ID:sajOyEd/
>>709
やっぱアホなんやな
園児向けに少し丁寧に書いてやるよw

まだ条件(省略)をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
2023/12/10(日) 20:19:31.37ID:MqU2QoF1
256度だと誤差が出ないと思ってる病気の人はどこの病院にいるの?w
717デフォルトの名無しさん
垢版 |
2023/12/10(日) 21:03:13.50ID:sajOyEd/
まだ昔の話しかどうかもわからない貧相な脳ミソ
まだ条件(省略)をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
2023/12/10(日) 23:48:37.12ID:otdxVCuX
ラジアン派の発狂ぶりが見ていて楽しいなw
2023/12/11(月) 00:43:41.12ID:dv5wJdGz
>>716
> 256度だと誤差が出ないと思ってる病気の人

誰かそんなこと言ってる? レス番示してヨロシクね
720デフォルトの名無しさん
垢版 |
2023/12/11(月) 20:12:45.71ID:wJWh5kBz
AtCoder Beginner Contest 332 A Online Shopping を Elixir と C で解いてみた
https://qiita.com/zacky1972/items/61f8dcefc71cb6d0117b

准教授 inttypes.h 知らないとかマジか。

64bitでコンパイル、実行
https://godbolt.org/z/Y1nv549cE

32bitでコンパイル、実行
https://godbolt.org/z/6jEYGhrnG
2023/12/11(月) 22:35:20.73ID:qiG2trvi
度数君まだ発狂してて草
2023/12/12(火) 08:35:00.63ID:WTw42ze4
説得力あるコードのひとつも提示できなかったラジアン派まだ生きてたw
2023/12/12(火) 12:34:25.83ID:71TRaAjF
説得力のあるコードまだみつからなくて困ってたのかよw
どの言語のライブラリもラジアンなのにそれを知らないって無能すぎない?w
2023/12/12(火) 15:54:16.85ID:gehgB0Io
>>720
https://atcoder.jp/contests/abc332/submissions?f.User=zacky1972
Elixir遅すぎ
Cだと1msなのに制限時間ギリギリじゃねーの
そりゃ流行らんわな
2023/12/12(火) 19:08:14.85ID:0W1gKG9X
> ポイントとしては,i番目の行の値Qi,Piを読み込んだら,即座に積和を行ない,入力した値を配列として記憶することはしないという点です.これにより,計算時間を1ミリ秒以下に,メモリ消費量もごく最小限にすることができます.

なんか誇らしげに説明してるけどscanf()で値読み込むのに掛かるコストに比べたら配列に入れようが即座に計算しようが屁みたいな違いしかないぞ。

> Streamを使って積和を累積する方法は,Stream.transform関数にs1関数を与え,得られるリストの最後の要素をEnum.at(-1)として取り出すことで実現します.
> 結果として,実行時間を800ミリ秒以下に,メモリ消費を160MB前後に抑えることができました.

https://atcoder.jp/contests/abc332/submissions/48423119

↑見るとどのテストケースでも780msに近い処理時間になってるし積和のコストってこっちも問題になってはいないよな。起動時に馬鹿みたいに待たされてるだけだろこれ。

なんかこの人計算コストについての理解がすげえ怪しい気がするわ。これで学生さんに何教えてんだか。
726デフォルトの名無しさん
垢版 |
2023/12/12(火) 23:20:02.29ID:d4PkBWYa
>>725
で、全てについて上を行くお前の書いた記事はどれ?
2023/12/13(水) 00:52:07.07ID:VTpIZ5BK
「1+1=3」という人を面白がってたら「で、全てについて上を行くお前の書いた記事はどれ?」という馬鹿が絡んできたでござる の巻
2023/12/13(水) 01:02:23.97ID:pLi0oPHq
Qiitaユーザー約2000人に聞いた「勤め先のサーバ・クラウド」
調査は9月29日から10月31日にかけてネット上で実施。
https://www.itmedia.co.jp/news/articles/2312/12/news138.html
2023/12/13(水) 01:03:20.41ID:VTpIZ5BK
https://atcoder.jp/contests/abc332/tasks/abc332_a
> 問題文

> 高橋君はそこで N 種類の商品を購入することにしました。
> 1 以上 N 以下の整数 i について、i 種類目の商品は 1 個 P i円で、高橋君はQ i個購入します。

> 制約
> ​1≤N≤100

100以下の制約で遅いとかないわアホかw
2023/12/13(水) 01:32:17.09ID:mZ0KNVix
またIPAの資料以下の要件定義入門記事が来たな
2023/12/13(水) 08:26:07.94ID:NpZf2J/f
Nが100以下の制約で800ms
N+Mが2000以下の制約で1500ms
Cはどちらも1ms

制約が緩くなると時間も順調に伸びてるから起動時間が長いだけということでもなく全体的に遅いんだろう
並行処理が得意で対障害性が高いのがElixirの売りらしいが
速度がここまで出ないんじゃ使いみちは限られそうだな
起動時間除いて単純計算で1900の処理に700msかかるとか控えめに言ってゴミでしかない
インタプリタかな?
(そもそも新しい言語で並行処理や対障害性が不得意なものの方が少ない気がするし対障害って多分Optional型やEither型の話でしかないよなあ)
732デフォルトの名無しさん
垢版 |
2023/12/13(水) 10:12:45.45ID:ZLCSU55O
今度は初心者向けの設問にしかドヤれないバカが湧いてんのか
2023/12/13(水) 10:15:49.81ID:cuotF3WF
初心者にElixir勧めるやつはおらんやろ
2023/12/13(水) 10:31:28.43ID:Hx44XXHL
裸の王様に「Elixir全然速くないねw」みたいなコメントする正直な子供おらんのかな
2023/12/13(水) 15:41:58.90ID:nkVMGJ7R
https://atcoder.jp/contests/abc332/submissions?f.Task=abc332_a&f.LanguageName=Haskell&f.Status=AC&f.User=

Haskellだと1〜2ms

Elixirは速度もありえないくらい遅くてコードも長くてインデントも深くて何一ついいところなしにしか見えんがこれって言語のせいなのかね
736デフォルトの名無しさん
垢版 |
2023/12/13(水) 18:35:43.24ID:eFqokkdq
スクラッチのようなブロック並べるのもあるし、そこに拘る必要もないやろ
737デフォルトの名無しさん
垢版 |
2023/12/13(水) 19:39:13.03ID:p0B6DwAr
QiitaでElixir推してる人達ってElixirは並列処理が簡単にできて
速いという主張を当たり前のように繰り返してるけど、他の言語と
比べてどうだこんなに速いぞてのじゃなくて、クソみたいな
アルゴリズムをElixirでシングルコアとマルチコアで比べて
マルチコアでこんなに速くなった!Elixir最高ーー!!(ビクンビクン
みたいな記事ばっか見かける希ガス。

まずアルゴリズムちゃんとしろよと。
他の言語と実際に比べて優位を語れと。
2023/12/13(水) 21:48:45.90ID:NpZf2J/f
>>737
https://qiita.com/zacky1972/items/fa362f4d9b1252a207ad
CとJavaと比較してるぞ
どちらもasync/awaitが無いからめんどくさいがそれって結局Elixirの優位性というよりCとJavaが遅れてるってだけの話なんだよなあ
2023/12/13(水) 22:22:14.64ID:X0GNdEDV
コメント欄総ツッコミだなあw

並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その2「スレッドと同期・排他制御」
https://qiita.com/zacky1972/items/bbf1f7bdecbbd0492151

並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その3「同期・排他制御の2つの問題点」
https://qiita.com/zacky1972/items/10787cb6104c82016487

Elixir推しの人がC引き合いに出してるけどよく分かってないから比較にすらなってない感じ。
2023/12/14(木) 01:21:26.48ID:X6Ol8Z5z
Elixir は、10万もの小プロセスを起動できる。
メモリが大きいと、5千万小プロセスも

それに関数型で、オブジェクトの状態が変わらないから、安全性・保守性が高い。
つまり更新できず、新規作成・廃棄しかできない。
オブジェクトは更新できないから再利用できる

片方向リストなので、先頭にしか追加できない。
末尾追加できないので、先頭に追加していって、最後に逆転させるとか

スクエニは、Elixirを使っているらしい
2023/12/14(木) 02:40:45.61ID:aBZ2Af/o
>>740
GoやRustでも10万可能だな
2023/12/14(木) 04:11:29.57ID:+GVKXU6O
いくらプロセス起動できようが遅けりゃ意味無し
2023/12/14(木) 04:52:43.66ID:ehr7WTWM
Rustの非同期タスクはスタックレスコルーチンなので軽くて速くていいね
2023/12/14(木) 07:29:56.59ID:y0v8WBQQ
10万のプロセス作ったとしてもCPUが10万無いなら結局同時処理できないわけで意味ないんじゃね
あとプロセス作る負荷と切り替えの負荷は結構重い
PCで使う限り大量のプロセス作っても速くなるどころか逆に遅くなると思うんだがほんとに速さが売りになるのか?
2023/12/14(木) 07:37:03.68ID:y0v8WBQQ
スクエニの使ってるElixirって言語なのか?
ゲーム配信インフラとゲーム内アイテムの話しか出てこんぞ
2023/12/14(木) 08:51:47.14ID:tCCx741E
Elixir推しの人達がElixirの強みをアピールする記事書かないのホント不思議。
2023/12/14(木) 10:00:34.56ID:vwLqM/bT
https://www.infoq.com/jp/news/2019/09/rust-elixir-performance-at-scale/

Discordは一部Elixirで書かれてるがユーザーが増えて同時接続数の限界が見えたためにRustで書き直したそうな
一番得意な分野で他の言語に席を譲るとかやっぱり使いみちないじゃん
最初から全部Rustを使えばこんなことにならなかったのに
2023/12/14(木) 10:17:33.82ID:riWO4PsS
Elixir推しの人曰くElixirはGPU使った並列処理もカンタンに書けるとのことだけど
実際そうなら個人が所有できるパソコンでも有意な使い方ありそうだけどね、
そういう記事が見当たらない辺りでまあそういうことなんだろうなあ。
2023/12/14(木) 10:24:05.23ID:ehr7WTWM
>>744
プロセスやスレッドを10万個作るわけではないよ
一つのプロセスの中にスレッドをそのCPUコアスレッド数分(例えば8個)だけ作って使う
10万個の軽い非同期タスクはそのマルチスレッド上で擬似的にスケジューリングされる

もし数値計算ならばそのような非同期タスクを使うのは無意味でマルチスレッドをそのまま用いる
一方でネット通信のように非同期でCPUの待ち時間が多いものは軽い非同期タスクを何万も同時に動かし何万もの通信クライアントを同時に捌くことができる
750デフォルトの名無しさん
垢版 |
2023/12/14(木) 10:39:56.58ID:ztw3BXrG
通信デバイスは限られてるからそれは無い
2023/12/14(木) 10:40:17.07ID:y0v8WBQQ
>>749
なんでプロセスじゃなくスレッドを8個作るんだよw
2023/12/14(木) 11:15:16.07ID:f6g+GYKj
プロセス間通信にコストがかかるからでは?
知らんけど
753デフォルトの名無しさん
垢版 |
2023/12/14(木) 11:18:51.20ID:ztw3BXrG
何万スレッド起こそうが、通信デバイスが一つなら
一つのスレッド以外後はひたすら待ってるだけだしなぁ
2023/12/14(木) 11:19:33.74ID:vwLqM/bT
>>725
https://atcoder.jp/contests/abc332/submissions?f.Task=abc332_a&f.LanguageName=AWK&f.Status=AC&f.User=
AWKで2msだから准教授が持てる力の全てを発揮して本気で作ったElixirプログラムはインタプリタより遅いことになるな
755デフォルトの名無しさん
垢版 |
2023/12/14(木) 11:19:57.78ID:ztw3BXrG
単なる待ち行列の捌き方の違いでしか無いんだよなぁ
2023/12/14(木) 11:27:56.68ID:ehr7WTWM
>>750
現在の何万接続も同時に捌く最新型の各種サーバーはそのように作られている
ネットワークデバイスやその通信データに対してそれ以外の方法で作るとCPUは暇で遊んでしまうため

>>751
マルチプロセスにするメリットはないため1つのプロセス内でマルチスレッドを使う
CPUコアスレッド数よりも多くのスレッドを動かすのは無駄にスレッドスイッチングが発生し不利となるため限定した数のスレッドを動かしている
そのCPUコアスレッド数分のマルチスレッド上で数万個の軽い非同期タスクを動かすことでCPUの待ち時間を可能な限り無くしている
757デフォルトの名無しさん
垢版 |
2023/12/14(木) 13:11:25.11ID:UDs9NMEG
>>748
Elixirが本当にGPU処理をカンタンに書けるなら、もっと有名だったろう
一時期openCL使ってたけど、まず使えるようにするまでも面倒だったな
(今は簡単なのかもだけど)
使えるようにしてからは、ヤッホ~イだったw
2023/12/14(木) 13:17:27.28ID:4gudT7IY
>>756
それだと10万のプロセスが扱える利点なくね?w
2023/12/14(木) 13:32:55.03ID:4sl/SGKe
>>758
プロセスではなくマルチスレッド上に何万もの非同期タスクを動かしてるんだよ
Rustならスタックレスなコルーチンで実現されていてGoならスタック付きgoroutine
2023/12/14(木) 13:43:48.30ID:qE3AElg+
ていうか現にElixirだと捌ききれなくてRustで書き直したという事例がそこにあるわけだがいつまで机上の空論を支えにしてるんだ
2023/12/14(木) 13:45:00.14ID:e7pV4XH4
>>759
十万のプロセス使わないなら使える利点なくね?
という話だぞ?
2023/12/14(木) 14:03:29.37ID:lRrQctoZ
>>760
>>747の事かな?
747はElixirのMapSet、List、OrdsetをFFIで外出ししたと言う話だね
discordのgithubでピン留めされてるのはElixirプロジェクト(とJS/TS)

discord自前のRustプロジェクトは1年以上コミットが無いですよ
2023/12/14(木) 14:41:05.58ID:2Ni4Gd+R
>>758
プロセスはスイッチングコストが非常に大きいため、
プロセスを動かせば動かすほど損をするという基本常識を理解しよう。
そのためメモリを共有しスイッチングコストが軽減されたスレッドが代わりにある。
そのスレッドもスイッチングコストが大きいため、
1スレッド1クライアント接続だと何万もクライアントが同時接続したら動かない。
よってスイッチングコストが極めて軽量で非同期に動くマイクロタスクを用いるのが主流となっている。
2023/12/14(木) 14:55:20.21ID:e7pV4XH4
>>763
そこまでわかってるならなんで10万プロセス使えるってホルホルしたの?w
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況