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

レス数が1000を超えています。これ以上書き込みはできません。
2024/06/06(木) 14:17:26.43ID:OOltNLB6
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/
Qiita 3 - キータぞ、来たぞ、キータだぞー
https://mevius.5ch.net/test/read.cgi/tech/1685235361/
Qiita 4 - キータぞ、来たぞ、キータだぞー
https://mevius.5ch.net/test/read.cgi/tech/1705486836/
2025/02/01(土) 15:56:55.55ID:detD0BR/
> これはコミュ力の一環と言えば必要な能力

スタッフとの仕様の確認の会話で使う意味なくね
2025/02/03(月) 11:18:38.82ID:HGKe4Z7A
Bashって結局何?シェルの基本からスクリプト活用までわかりやすく解説!
https://qiita.com/shupeluter/items/77c8f29b290d22f59aa1

どうして……
954デフォルトの名無しさん
垢版 |
2025/02/05(水) 23:34:29.42ID:rM70a28+
>>938
外人ニキは冒頭のバカ女のエピソードが
インプ稼ぎのしょうもない作り話だってわかってないんだろうな
2025/02/06(木) 13:12:59.75ID:NMJzmIW7
『C# の型システムで Brainf*ck コンパイラを作ってみた』

記事の内容は興味深いのだけど、

> 驚くほど .NET AOT が C 言語を上回り、一位になってしまいました。
> これも、C# の型システムによるゼロオーバーヘッド抽象のおかげと言えるでしょう。

はちょっと残念な感じ。
C#贔屓でCに勝って嬉しいのはわかるけど、この記事でCが遅いのは変数を大域変数にしてるせいでgccが効率悪いコード吐いてるからなんだよなあ。
2025/02/06(木) 13:23:17.10ID:TjXJ1OiY
記事読まないが
C# の型システムによるゼロオーバーヘッド抽象のおかげで
効率良いコード吐けるんでは?
同じことを言ってるんでは?
2025/02/06(木) 13:26:01.78ID:dQANt/Gp
>>956
c側に枷を付けてるんだから同じじゃないのでは
2025/02/06(木) 14:23:57.72ID:fz+jKrbj
>>955
良い記事だと思います
mandelbrot.bf以外の他のサンプルでの比較結果も必要かな
それとBFの特徴から最適化を考慮したtritium(最速)やBrainFuckCompiler.pyと比べてみると良いと思います
2025/02/06(木) 15:52:42.36ID:NMJzmIW7
記事からリンクされてるMandelbrotプログラムを記事からリンクされてるBrainfuckをC言語にするコンパイラで変換し、オンライン実行環境である https://tio.run/ で C(gcc) を選択してCodeにコードを貼り付け、Compiler flagsに-O3と-march=nativeを指定して実行したところ約5.7秒掛かった。
Cプログラムの大域変数pをmain()ローカルへ変更し

#include <stdio.h>
unsigned char c[30000] = {0};
-unsigned char *p = c + 14999;

int main(void) {
+unsigned char *p = c + 14999;

実行すると約3.4秒。4割ほど速くなった。

記事のC言語の実行時間は効率の悪いコードで行われているのでC#との比較はフェアではない感じ。
2025/02/06(木) 18:07:44.63ID:VTzAUDKa
githubに書いてある
dotnet run -c Release -- bench <memory_size> <file>
がJITで
dotnet run -c Release -- build <memory_size> <file>
で出来るcsファイルに適当なcsprojを足して
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PublishAot>true</PublishAot>
<DebugType>None</DebugType>
<DebugSymbols>False</DebugSymbols>
</PropertyGroup>
</Project>
記事指定のpublishをしたのがAOTだと思うけど

JIT≒AOT≒1.0秒だった

>>959の> Cプログラムの大域変数pをmain()ローカルへ変更し

0.5秒だった
2025/02/06(木) 18:11:09.25ID:VTzAUDKa
元のままのC(ローカルへ変更しない)は
0.9秒だった(clang)
2025/02/06(木) 18:12:30.12ID:VTzAUDKa
windowsなのでAOT publishコマンドは -r win-x64 に変更した
2025/02/06(木) 18:16:00.00ID:VTzAUDKa
検索Nayuki Minase brainfuckcompiler gistでBrainFuckCompiler.pyを拾って
python2 BrainFuckCompiler.py Mandelbrot.txt Mandelbrot.c

0.3秒だった
2025/02/06(木) 20:34:11.67ID:6ABWIaMQ
C#のコードも改善の余地があるかな。
配列+インデックスでやってるところをCと同じにポインタにすればもう少し(数%くらい?)速くできる気がする。
「godbolt で生成されたマシンコードを見ると、こんな感じです。」と言ってるところのアセンブリリスト43命令だけど試しにポインタにしてみたら https://godbolt.org/z/sKj9vdGT5 33命令になった。
2025/02/06(木) 20:41:42.22ID:6ABWIaMQ
つか記事の「C 言語で書くとこんな感じのコードと同じです。」と書いてあるやつ、配列じゃなくてポインタになってるし、'1'や'2'を足すんじゃなくて代入してるし色々間違ってるな。
誰か教えてやれば良いのに。
966960-963
垢版 |
2025/02/06(木) 22:57:34.62ID:n1Qev/yy
>>964
マシンコードからして効果があるのなら実測で数値を出して下さいな
2025/02/07(金) 00:17:42.28ID:XR6dFlNH
どう育ったらそんなこと他人に依頼できると思うのか?
2025/02/07(金) 07:51:47.47ID:kRdLxkfv
横槍への横槍なんだが実測辞めたら成長終了だ
969960
垢版 |
2025/02/07(金) 12:29:55.01ID:cYj409pe
そうではなくて、ゴール前でシュートしたらどうですか?と思った
2025/02/07(金) 13:07:17.18ID:3fDoPIKh
全く合ってない場合スルーするが合ってる場合否定する変人
全否定ではなく賛成できることもあるが賛成できないこともあると言うべき
2025/02/07(金) 13:20:57.57ID:K1HEYmSj
やりたい人がやれば良い
972960
垢版 |
2025/02/07(金) 13:40:58.06ID:MjdKwHbK
>>967,970
実測値しか出してない自分が絡まれるとは思ってなかった

>>971
良いんですか?
実は昨晩の内にシュートして
AOT≒0.7秒だった
2025/02/07(金) 14:15:51.63ID:F8l3nJmK
CよりC#が速いと言ってる人を信用できない
2025/02/07(金) 15:26:18.79ID:K1HEYmSj
Qiitaのコメ欄だとこれくらいの話しただけで記事主が発狂してブロックしてきたり外野に迷惑コメントとして運営に通報されるまであるからなあ、5chは気が楽だわ。
2025/02/07(金) 15:29:33.47ID:K1HEYmSj
Qiitaって「エンジニアを最高に幸せにする。」とか言ってる割に「技術的に正しい==正義」じゃないよね。
2025/02/07(金) 16:48:30.38ID:HlyNm3M8
>>975
エンジニアを幸せにするのは技術的に正しいことではないからだね
977デフォルトの名無しさん
垢版 |
2025/02/08(土) 09:30:44.99ID:FJexRZe9
CよりC#の方が速い ← 間違い
無能が書いたCより有能が書いたC#の方が速い ← 正解
2025/02/08(土) 10:14:31.73ID:VD20E54s
>>955の記事は説明も上手でプロフィールに東京大学情報理工学系研究科とある通り頭良い人で本人もそれを自覚してると思うんだけど、何でもかんでも知ってるわけではなくて性能評価方面には疎かったということかな。こういう人に間違いの指摘をするのは難しいよね。素直に感謝されることもあれば逆ギレされる可能性もあるので下手な博打は打ちたくない。
979デフォルトの名無しさん
垢版 |
2025/02/08(土) 11:53:59.57ID:+3qBIV3v
>>975
ほんそれ
2025/02/08(土) 13:54:24.31ID:kt9i+Ghf
brainf*ckごときにマジになっちゃってどうすんの
2025/02/08(土) 15:08:19.81ID:Yu5RZ/lL
クソコードでコンパイラの性能語っちゃう人のことも考えたらbrainfuckでもマジになったほう良いよね。
2025/02/08(土) 16:26:24.74ID:HawGquXH
価値は見出したもん勝ちだ
見出し過ぎて優先順位が低いと言うのはあり
でも価値なしと言うのは意識が低すぎる
2025/02/09(日) 14:35:14.14ID:QckyEUCP
BrainFuckCompiler.pyで比べた
C,Java&Pythonは元々のまま(by Nayuki Minase)、C#はCとJavaを参考に追加

C 0.3秒 pointer方式
C# 0.37秒 pointer方式AOT publish
C# 0.4秒 pointer方式build
C# 0.6秒 index方式AOT publish
C# 0.65秒 index方式build
Java 0.7秒 index方式Graal AOT
C# 0.7秒 Qiita&>>964 pointer方式AOT publish
C# 1.0秒 Qiita方式AOT publish
C# 1.6秒 Qiita&>>964 pointer方式build
pypy 1.7秒
C# 2秒 Qiita方式build
Java 15秒
Python 2分
(C#のbuildはRelease buildで最適化JIT促進用のウォームアップや繰り返しなし)
2025/02/09(日) 15:21:36.59ID:ITGda0ic
元の記事にはコメントのひとつもつかないで、このスレに有用な知見が集まってるの面白いなw
Qiitaもコメ欄匿名
2025/02/09(日) 15:22:47.18ID:ITGda0ic
Qiitaもコメ欄匿名にすりゃ良いのにw
2025/02/09(日) 17:02:51.01ID:0XwIZ11k
こいつらはなぜ記事を書かないか聞いてみてくれ
まさかりが怖い?
2025/02/09(日) 17:10:06.74ID:0XwIZ11k
Zennのスクラップを使ったらいいんじゃない?
> スクラップは、スレッド形式で知見やメモをまとめていく機能です。
> ://zenn.dev/zenn/articles/about-zenn-scraps
2025/02/10(月) 10:03:41.00ID:zBRflWQv
Qiitaで記事を公開すると何故かはてなブックマークへのリンクが張られるのでコメントはそっちで書くのが安全だと思う。
989デフォルトの名無しさん
垢版 |
2025/02/10(月) 11:40:36.08ID:Z13/KCo3
Zennに乗り換えてみるわthx
2025/02/10(月) 11:52:57.56ID:rlmmhtGT
N.F. Qiita辞めた?
2025/02/11(火) 12:51:17.91ID:zhTf3ZTI
C, C++ の関数ポインタ 自分用メモ
https://qiita.com/macchan/items/8184b46ea8a21827e71c

コメ欄見る気にならないレベルで盛り上がってて草w
2025/02/11(火) 14:33:29.02ID:j+z2axDY
dameyodamedameが設計ミスとか意味不明なこと言い出したのが原因かな
2025/02/11(火) 16:57:43.06ID:SRBQ8/yZ
強い言葉を使う製で弱く見えてるな
2025/02/11(火) 22:53:54.85ID:HwVbkmdb
メンバ関数のポインタを使う時点でそいつはバカだから相手にしてはいけない
995デフォルトの名無しさん
垢版 |
2025/02/12(水) 13:00:22.94ID:hW5ahi2p
> 記事に対するコメントは記事に即した内容であること、というのはqiitaに限らずオンラインコミュニティを利用する際の大原則だと思うのですよ。相手が何十年のベテランだからと「書かなくてもわかるだろう」と遠い(?)概念を持ち出されることは大変なマナー違反だと考えます。加えて「書かなくても伝わるはずであり、伝わらなければ相手の能力に問題がある」とするのは相手に失礼であり、非常に身勝手な行為だと思いませんか?

マナー違反とか言い始めたけどこの人「クソ記事公開すんな」とか言われたらどうすんの?
996デフォルトの名無しさん
垢版 |
2025/02/12(水) 14:15:16.05ID:0rIAGkQM
「私はつよつよSEです」
みたいなのキツすぎ

イキリアニオタみてーなのばっか
2025/02/12(水) 14:39:42.15ID:q5lLVqHR
>>996
お前がうざすぎ
くだらない意見を押し付けんな
イキリアニオタで人気のあるユーチューバーもいる
お前が見なければいいだけ
2025/02/12(水) 16:30:22.19ID:W9y8zQE7
誰なんだよおめーは
2025/02/12(水) 23:06:28.28ID:0rIAGkQM
>>997
なにこのチョンカスw
クソ漏らすなよ
迷惑なんだけどw
2025/02/12(水) 23:09:54.49ID:0rIAGkQM
つよつよエンジニアw
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 251日 8時間 52分 29秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。

▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/

▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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