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 - キータぞ、来たぞ、キータだぞー
■ このスレッドは過去ログ倉庫に格納されています
2023/05/28(日) 09:56:01.47ID:twg6yDS4
247デフォルトの名無しさん
2023/08/04(金) 22:38:44.38ID:kIOCwZVw しっかしコメントしてきた相手に対して長いコメント返してるなあ、例外なく。
負けん気の強さは人一倍だが本人の知識や能力が追い付いてない感じw
負けん気の強さは人一倍だが本人の知識や能力が追い付いてない感じw
248デフォルトの名無しさん
2023/08/05(土) 07:04:06.19ID:GPQId3vN このスレに貼り付けた人もそうだが削除させる意図があるように見える
削除させなくてもいいんじゃない?
もしかしたら削除させる意図がないと言うかもしれないが
もしそうなら言い方を気をつけるべきだね
削除させる意図があるように見えるから
削除させなくてもいいんじゃない?
もしかしたら削除させる意図がないと言うかもしれないが
もしそうなら言い方を気をつけるべきだね
削除させる意図があるように見えるから
249デフォルトの名無しさん
2023/08/05(土) 07:26:06.29ID:MfBtPlYk250デフォルトの名無しさん
2023/08/05(土) 07:26:57.96ID:nczC8/3G >>246
Zuishinいいこと言うなー
Zuishinいいこと言うなー
251デフォルトの名無しさん
2023/08/05(土) 10:09:31.04ID:BuM8hDNP 削除は本人の判断だけど
> それにしてもCが低水準言語であると思っている人の数が圧倒的に多くそのような記事が当たり前のようにあるので驚いたところです。
とまで書いてた本人が記事を削除する意図が分からんのよね。
> それにしてもCが低水準言語であると思っている人の数が圧倒的に多くそのような記事が当たり前のようにあるので驚いたところです。
とまで書いてた本人が記事を削除する意図が分からんのよね。
252デフォルトの名無しさん
2023/08/05(土) 13:04:09.35ID:G0xPWQV0 低水準の意味を間違って捉えてるんだろ
ハッカーと同じ
ハッカーと同じ
253デフォルトの名無しさん
2023/08/08(火) 19:36:07.20ID:bRo0TWoK C言語における「bool型へのキャスト」が無限の(悪用)可能性を秘めている理由
https://webcache.googleusercontent.com/search?q=cache:ED5C8TAFrNYJ:https://qiita.com/wantun/items/4574049283e1cd7d50cf
程度低い記事だなあ、これはツッコまれるの不可避だわと思っていたら消えていた。
https://webcache.googleusercontent.com/search?q=cache:ED5C8TAFrNYJ:https://qiita.com/wantun/items/4574049283e1cd7d50cf
程度低い記事だなあ、これはツッコまれるの不可避だわと思っていたら消えていた。
254デフォルトの名無しさん
2023/08/08(火) 19:38:50.29ID:bRo0TWoK 「いいね」も付いてたし指摘された誤りは修正すれば消さんでも良かったんじゃないのとは思う。
己に対して完璧以外許さない性格かな。
己に対して完璧以外許さない性格かな。
255デフォルトの名無しさん
2023/08/10(木) 10:14:42.42ID:P5HupFIS 誤り以前にboolに変換して掛け算するのはどうなのよ
256デフォルトの名無しさん
2023/08/10(木) 10:17:08.67ID:P5HupFIS C言語ならまだギリギリ許されることもあるけどセマンティクス的に汚いし他の言語だとNGだから積極的に学ぶ方法でもない
読みにくくなるだけでなくコーディング量もそれほど変わらない上に速度すら落ちてるから
読みにくくなるだけでなくコーディング量もそれほど変わらない上に速度すら落ちてるから
257デフォルトの名無しさん
2023/08/10(木) 10:19:04.97ID:P5HupFIS あとデータが1と0に限定されるから拡張性にも欠ける
後で2を使いたくなった時に全コード見直す必要が出てくる
後で2を使いたくなった時に全コード見直す必要が出てくる
258デフォルトの名無しさん
2023/08/10(木) 14:12:42.71ID:UgpRJI2F キャスト使えばこういう悪事もできるよ(良い子は真似しないでね)という記事なんだから、掛け算以外の指摘に関しては論点ではない
259デフォルトの名無しさん
2023/08/10(木) 14:15:03.93ID:4HGAEGv7 C言語だと別に悪事というほどではない
ひたすら汚いだけ
ひたすら汚いだけ
260デフォルトの名無しさん
2023/08/10(木) 16:12:44.88ID:RFVZcdoC >>253
考え自体は正しい
条件分岐はパイプラインを乱す
条件分岐とならないコードが生成されることが望ましい
しかし多くのケースではコンパイラのコード生成に任せることができる
今回のケースならばif文のままでも条件ムーブ(CMOVcc)命令などが生成され条件分岐とならないだろう
ソースコードの可読性からもif文のままが好ましい
ただしもっと複雑なケースで複数の条件分岐をなくして演算のみにできる場合もある
そしてコンパイラ任せではそのようなコード生成が無理な場合もある
その場合はベンチ測定比較すれば有意な差が出るためそれは正しい判断となる
考え自体は正しい
条件分岐はパイプラインを乱す
条件分岐とならないコードが生成されることが望ましい
しかし多くのケースではコンパイラのコード生成に任せることができる
今回のケースならばif文のままでも条件ムーブ(CMOVcc)命令などが生成され条件分岐とならないだろう
ソースコードの可読性からもif文のままが好ましい
ただしもっと複雑なケースで複数の条件分岐をなくして演算のみにできる場合もある
そしてコンパイラ任せではそのようなコード生成が無理な場合もある
その場合はベンチ測定比較すれば有意な差が出るためそれは正しい判断となる
261デフォルトの名無しさん
2023/08/10(木) 19:42:46.48ID:c2H9n5TK > しかし多くのケースではコンパイラのコード生成に任せることができる
> 今回のケースならばif文のままでも条件ムーブ(CMOVcc)命令などが生成され条件分岐とならないだろう
> ソースコードの可読性からもif文のままが好ましい
なにやら知ったようなことを言ってるので検証してみるとするか。
> 今回のケースならばif文のままでも条件ムーブ(CMOVcc)命令などが生成され条件分岐とならないだろう
> ソースコードの可読性からもif文のままが好ましい
なにやら知ったようなことを言ってるので検証してみるとするか。
262デフォルトの名無しさん
2023/08/10(木) 19:43:13.35ID:c2H9n5TK void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
if (num[i] == deleteNum) { //deleteNumで指定した要素を0にする
num[i] = 0;
}
}
}
gcc 13.2 最適化オプション-O2でコンパイル
hoge:
testl %edi, %edi
jle .L1
movslq %edi, %rdi
leaq (%rsi,%rdi,4), %rax
.L4:
cmpl %edx, (%rsi)
jne .L3
movl $0, (%rsi)
.L3:
addq $4, %rsi
cmpq %rax, %rsi
jne .L4
.L1:
ret
https://godbolt.org/z/noxvcGbff
条件分岐するじゃんw
{
for (int i = 0; i < n; i++) {
if (num[i] == deleteNum) { //deleteNumで指定した要素を0にする
num[i] = 0;
}
}
}
gcc 13.2 最適化オプション-O2でコンパイル
hoge:
testl %edi, %edi
jle .L1
movslq %edi, %rdi
leaq (%rsi,%rdi,4), %rax
.L4:
cmpl %edx, (%rsi)
jne .L3
movl $0, (%rsi)
.L3:
addq $4, %rsi
cmpq %rax, %rsi
jne .L4
.L1:
ret
https://godbolt.org/z/noxvcGbff
条件分岐するじゃんw
263デフォルトの名無しさん
2023/08/10(木) 19:46:00.32ID:c2H9n5TK 記事の計算による方法
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
for (int i = 0; i < 6; i++) {
num[i] -= deleteNum * (deleteNum == num[i]); // deleteNumで指定した要素を消す
}
}
}
hoge: xorl %r11d, %r11d
leaq 24(%rsi), %r10
xorl %r9d, %r9d
testl %edi, %edi
jle .L9
.L2: movq %rsi, %rax
.L4: movl (%rax), %ecx
movl %r9d, %r8d
cmpl %edx, %ecx
cmove %edx, %r8d
addq $4, %rax
subl %r8d, %ecx
movl %ecx, -4(%rax)
cmpq %r10, %rax
jne .L4
addl $1, %r11d
cmpl %r11d, %edi
jne .L2
ret
.L9: ret
https://godbolt.org/z/do55an9P9
cmov命令吐いてる
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
for (int i = 0; i < 6; i++) {
num[i] -= deleteNum * (deleteNum == num[i]); // deleteNumで指定した要素を消す
}
}
}
hoge: xorl %r11d, %r11d
leaq 24(%rsi), %r10
xorl %r9d, %r9d
testl %edi, %edi
jle .L9
.L2: movq %rsi, %rax
.L4: movl (%rax), %ecx
movl %r9d, %r8d
cmpl %edx, %ecx
cmove %edx, %r8d
addq $4, %rax
subl %r8d, %ecx
movl %ecx, -4(%rax)
cmpq %r10, %rax
jne .L4
addl $1, %r11d
cmpl %r11d, %edi
jne .L2
ret
.L9: ret
https://godbolt.org/z/do55an9P9
cmov命令吐いてる
264デフォルトの名無しさん
2023/08/10(木) 19:47:40.53ID:c2H9n5TK ちなみに計算による方法でもこう書くと2行短くなった
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
for (int i = 0; i < 6; i++) {
num[i] *= deleteNum != num[i]; // deleteNumで指定した要素を消す
}
}
}
hoge: xorl %r10d, %r10d
leaq 24(%rsi), %r9
xorl %r8d, %r8d
testl %edi, %edi
jle .L9
.L2: movq %rsi, %rax
.L4: movl (%rax), %ecx
cmpl %edx, %ecx
cmove %r8d, %ecx
addq $4, %rax
movl %ecx, -4(%rax)
cmpq %r9, %rax
jne .L4
addl $1, %r10d
cmpl %r10d, %edi
jne .L2
ret
.L9: ret
https://godbolt.org/z/ro1qj98MG
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
for (int i = 0; i < 6; i++) {
num[i] *= deleteNum != num[i]; // deleteNumで指定した要素を消す
}
}
}
hoge: xorl %r10d, %r10d
leaq 24(%rsi), %r9
xorl %r8d, %r8d
testl %edi, %edi
jle .L9
.L2: movq %rsi, %rax
.L4: movl (%rax), %ecx
cmpl %edx, %ecx
cmove %r8d, %ecx
addq $4, %rax
movl %ecx, -4(%rax)
cmpq %r9, %rax
jne .L4
addl $1, %r10d
cmpl %r10d, %edi
jne .L2
ret
.L9: ret
https://godbolt.org/z/ro1qj98MG
265デフォルトの名無しさん
2023/08/10(木) 19:51:41.79ID:UyoKACkM したがって>>253の記事は全面的に正しい
bool値を数値演算として使うことを積極的に推奨する
bool値を数値演算として使うことを積極的に推奨する
266デフォルトの名無しさん
2023/08/10(木) 19:57:21.15ID:c2H9n5TK267デフォルトの名無しさん
2023/08/10(木) 20:01:44.72ID:s1ImWQTP >>256
数学に出てくるクロネッカーのデルタみたいなもので汚くはないし、型に厳しい言語でなければ他の言語でも使えるだろ。
数学に出てくるクロネッカーのデルタみたいなもので汚くはないし、型に厳しい言語でなければ他の言語でも使えるだろ。
268デフォルトの名無しさん
2023/08/10(木) 20:21:25.47ID:c2H9n5TK >>263訂正
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < 6; i++) {
num[i] -= deleteNum * (deleteNum == num[i]); // deleteNumで指定した要素を消す
}
}
hoge:
leaq 24(%rsi), %r8
xorl %edi, %edi
.L2:
movl (%rsi), %eax
movl %edi, %ecx
cmpl %edx, %eax
cmove %edx, %ecx
addq $4, %rsi
subl %ecx, %eax
movl %eax, -4(%rsi)
cmpq %rsi, %r8
jne .L2
ret
https://godbolt.org/z/br4nPfcEa
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < 6; i++) {
num[i] -= deleteNum * (deleteNum == num[i]); // deleteNumで指定した要素を消す
}
}
hoge:
leaq 24(%rsi), %r8
xorl %edi, %edi
.L2:
movl (%rsi), %eax
movl %edi, %ecx
cmpl %edx, %eax
cmove %edx, %ecx
addq $4, %rsi
subl %ecx, %eax
movl %eax, -4(%rsi)
cmpq %rsi, %r8
jne .L2
ret
https://godbolt.org/z/br4nPfcEa
269デフォルトの名無しさん
2023/08/10(木) 20:22:14.91ID:c2H9n5TK >>264も訂正
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < 6; i++) {
num[i] *= deleteNum != num[i]; // deleteNumで指定した要素を消す
}
}
hoge:
leaq 24(%rsi), %rdi
xorl %ecx, %ecx
.L2:
movl (%rsi), %eax
cmpl %edx, %eax
cmove %ecx, %eax
addq $4, %rsi
movl %eax, -4(%rsi)
cmpq %rdi, %rsi
jne .L2
ret
https://godbolt.org/z/7xhMr6oae
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < 6; i++) {
num[i] *= deleteNum != num[i]; // deleteNumで指定した要素を消す
}
}
hoge:
leaq 24(%rsi), %rdi
xorl %ecx, %ecx
.L2:
movl (%rsi), %eax
cmpl %edx, %eax
cmove %ecx, %eax
addq $4, %rsi
movl %eax, -4(%rsi)
cmpq %rdi, %rsi
jne .L2
ret
https://godbolt.org/z/7xhMr6oae
270デフォルトの名無しさん
2023/08/10(木) 20:25:05.76ID:c2H9n5TK すまん>>263再度訂正
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
num[i] -= deleteNum * (deleteNum == num[i]); // deleteNumで指定した要素を消す
}
}
hoge:
testl %edi, %edi
jle .L1
movslq %edi, %rdi
leaq (%rsi,%rdi,4), %r8
xorl %edi, %edi
.L3:
movl (%rsi), %eax
movl %edi, %ecx
cmpl %edx, %eax
cmove %edx, %ecx
addq $4, %rsi
subl %ecx, %eax
movl %eax, -4(%rsi)
cmpq %rsi, %r8
jne .L3
.L1:
ret
https://godbolt.org/z/9K6dj7Goc
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
num[i] -= deleteNum * (deleteNum == num[i]); // deleteNumで指定した要素を消す
}
}
hoge:
testl %edi, %edi
jle .L1
movslq %edi, %rdi
leaq (%rsi,%rdi,4), %r8
xorl %edi, %edi
.L3:
movl (%rsi), %eax
movl %edi, %ecx
cmpl %edx, %eax
cmove %edx, %ecx
addq $4, %rsi
subl %ecx, %eax
movl %eax, -4(%rsi)
cmpq %rsi, %r8
jne .L3
.L1:
ret
https://godbolt.org/z/9K6dj7Goc
271デフォルトの名無しさん
2023/08/10(木) 20:25:56.38ID:c2H9n5TK >>264も再度訂正
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
num[i] *= deleteNum != num[i]; // deleteNumで指定した要素を消す
}
}
hoge:
testl %edi, %edi
jle .L1
movslq %edi, %rdi
xorl %ecx, %ecx
leaq (%rsi,%rdi,4), %rdi
.L3:
movl (%rsi), %eax
cmpl %edx, %eax
cmove %ecx, %eax
addq $4, %rsi
movl %eax, -4(%rsi)
cmpq %rsi, %rdi
jne .L3
.L1:
ret
https://godbolt.org/z/WTTadjj5a
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
num[i] *= deleteNum != num[i]; // deleteNumで指定した要素を消す
}
}
hoge:
testl %edi, %edi
jle .L1
movslq %edi, %rdi
xorl %ecx, %ecx
leaq (%rsi,%rdi,4), %rdi
.L3:
movl (%rsi), %eax
cmpl %edx, %eax
cmove %ecx, %eax
addq $4, %rsi
movl %eax, -4(%rsi)
cmpq %rsi, %rdi
jne .L3
.L1:
ret
https://godbolt.org/z/WTTadjj5a
272デフォルトの名無しさん
2023/08/10(木) 22:01:59.49ID:4Znn5xIX Rustでも同じ結果となった (diff -u 形式)
fn hoge(num_list: &mut [i32], delete_num: i32) {
for num in num_list {
- if *num == delete_num {
- *num = 0;
- }
+ *num *= (*num != delete_num) as i32;
}
}
アセンブラ出力の方はラベルと使用レジスタ名のズレだけ揃えてdiff
hoge:
test rsi, rsi
je .LBB1_4
shl rsi, 2
xor eax, eax
+ xor ecx, ecx
.LBB1_2:
- cmp dword ptr [rdi + rax], edx
- jne .LBB1_3
- mov dword ptr [rdi + rax], 0
-.LBB1_3:
+ mov r8d, dword ptr [rdi + rax]
+ cmp r8d, edx
+ cmove r8d, ecx
+ mov dword ptr [rdi + rax], r8d
add rax, 4
cmp rsi, rax
jne .LBB1_2
.LBB1_4:
ret
fn hoge(num_list: &mut [i32], delete_num: i32) {
for num in num_list {
- if *num == delete_num {
- *num = 0;
- }
+ *num *= (*num != delete_num) as i32;
}
}
アセンブラ出力の方はラベルと使用レジスタ名のズレだけ揃えてdiff
hoge:
test rsi, rsi
je .LBB1_4
shl rsi, 2
xor eax, eax
+ xor ecx, ecx
.LBB1_2:
- cmp dword ptr [rdi + rax], edx
- jne .LBB1_3
- mov dword ptr [rdi + rax], 0
-.LBB1_3:
+ mov r8d, dword ptr [rdi + rax]
+ cmp r8d, edx
+ cmove r8d, ecx
+ mov dword ptr [rdi + rax], r8d
add rax, 4
cmp rsi, rax
jne .LBB1_2
.LBB1_4:
ret
273デフォルトの名無しさん
2023/08/10(木) 22:05:03.94ID:4Znn5xIX つまりC言語もRustもどちらも同じく
if文の時は普通に条件分岐する
比較値を自己掛け算させるとcmoveを使う
生成コードで掛け算が消えてしまうのはいいね
代わりにやってることは
(1) レジスタの値にメモリから読み込む
(2) 比較
(3) 一致していた時のみレジスタに値0を入れる 【cmove】
(4) レジスタの値をメモリへ書き戻す
条件分岐がない代わりに0にしない時も常に書き込みが発生する
ただし読み込んだ位置への書き込みだから
1サイクルのみでキャッシュページミスのペナルティも無くて済むから問題なしか
一方で元の条件分岐ジャンプするコードと比較して速さはどうなの?
分岐予測ミスやパイプラインの乱れとやらがどれだけ効くのか教えて欲しい
if文の時は普通に条件分岐する
比較値を自己掛け算させるとcmoveを使う
生成コードで掛け算が消えてしまうのはいいね
代わりにやってることは
(1) レジスタの値にメモリから読み込む
(2) 比較
(3) 一致していた時のみレジスタに値0を入れる 【cmove】
(4) レジスタの値をメモリへ書き戻す
条件分岐がない代わりに0にしない時も常に書き込みが発生する
ただし読み込んだ位置への書き込みだから
1サイクルのみでキャッシュページミスのペナルティも無くて済むから問題なしか
一方で元の条件分岐ジャンプするコードと比較して速さはどうなの?
分岐予測ミスやパイプラインの乱れとやらがどれだけ効くのか教えて欲しい
274デフォルトの名無しさん
2023/08/10(木) 22:05:48.11ID:MwGz91pK 何度訂正されても暑さでやられたやつが発狂してるようにしか見えんからもういいぞ
どうしても主張したいなら記事書けよ
どうしても主張したいなら記事書けよ
275デフォルトの名無しさん
2023/08/10(木) 22:36:14.41ID:4Znn5xIX 訂正してる人はコピペミスか実験かどちらかで二重ループになってしまったのを訂正してるっぽいけどよくわからん
アドバイスできることは
clangの方で-O2だとベクタ展開して比較わかりにくくなってるのを
-Os指定すれば展開がなくなりgccとほぼ同じコードになるよ
アドバイスできることは
clangの方で-O2だとベクタ展開して比較わかりにくくなってるのを
-Os指定すれば展開がなくなりgccとほぼ同じコードになるよ
276デフォルトの名無しさん
2023/08/11(金) 06:16:54.95ID:YfwUjgK1277デフォルトの名無しさん
2023/08/11(金) 08:15:21.50ID:jaK9CZIt if文を使ったコードと使わないコードの2種類が示されている状況で
何と何を比較しているのかわからないのは深刻な脳のバグだよw
何と何を比較しているのかわからないのは深刻な脳のバグだよw
278デフォルトの名無しさん
2023/08/11(金) 08:34:14.26ID:YfwUjgK1279デフォルトの名無しさん
2023/08/11(金) 08:59:40.37ID:WAWJg8ep 発狂してる俺様のレスを追いかけて全部読めとかいう頭のバグったやつ
280デフォルトの名無しさん
2023/08/11(金) 09:03:31.51ID:YfwUjgK1 本人が気づいてない可能性があるからボランティアで教えてあげている
君の文章では他の人間は全く理解できないと
そもそも自分と他人を区別できてるのかなw
君の文章では他の人間は全く理解できないと
そもそも自分と他人を区別できてるのかなw
281デフォルトの名無しさん
2023/08/11(金) 09:09:23.31ID:Y8RASnRQ Cの人のレスは複数に分かれて訂正もあって二つの比較がわかりにくいけど
Rustの人のレス>>272はdiff形式で一つのレスに書かれているから何と何を比較しているか一目瞭然でしょ
Rustの人のレス>>272はdiff形式で一つのレスに書かれているから何と何を比較しているか一目瞭然でしょ
282デフォルトの名無しさん
2023/08/11(金) 09:26:13.77ID:sVlBLJlv RustとRubyとMAUIをNGしてるやつは多いと思う
283デフォルトの名無しさん
2023/08/11(金) 09:34:13.85ID:YXKl/G3F 単語NG設定してるやつがそいつだけ重要なレスを読めていないことが原因で勘違いな書き込みを繰り返すパターンはよくあるよな
しかし今回のアホな>>276はNGしていないからレスしてるわけで単なるアホなパターンかと
しかし今回のアホな>>276はNGしていないからレスしてるわけで単なるアホなパターンかと
284デフォルトの名無しさん
2023/08/11(金) 15:23:23.45ID:Dz1zKJwc void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
if (num[i] == deleteNum) { // deleteNumで指定した要素を0にする
num[i] = 0;
}
}
}
void piyo(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
num[i] -= deleteNum * (deleteNum == num[i]); // deleteNumで指定した要素を消す
}
}
void hogera(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
num[i] *= deleteNum != num[i]; // deleteNumで指定した要素を消す
}
}
↑を
{
for (int i = 0; i < n; i++) {
if (num[i] == deleteNum) { // deleteNumで指定した要素を0にする
num[i] = 0;
}
}
}
void piyo(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
num[i] -= deleteNum * (deleteNum == num[i]); // deleteNumで指定した要素を消す
}
}
void hogera(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
num[i] *= deleteNum != num[i]; // deleteNumで指定した要素を消す
}
}
↑を
285デフォルトの名無しさん
2023/08/11(金) 15:24:31.74ID:Dz1zKJwc #include <stdio.h>
#include <stdlib.h>
#include <time.h>
void __attribute__((noinline)) bench(const char* name, void (*func)(int, int[], int))
{
const int n = 100000000;
int* a = calloc(n, sizeof(int));
if (a) {
for (int i = 0; i < n; i++) {
a[i] = rand() % 2;
}
clock_t s = clock();
func(n, a, 0);
double t = (double)(clock() - s) / CLOCKS_PER_SEC;
printf("%s:\t%f\n", name, t);
free(a);
}
}
int main(void)
{
bench("hoge", hoge);
bench("piyo", piyo);
bench("hogera", hogera);
}
↑で測定した。
#include <stdlib.h>
#include <time.h>
void __attribute__((noinline)) bench(const char* name, void (*func)(int, int[], int))
{
const int n = 100000000;
int* a = calloc(n, sizeof(int));
if (a) {
for (int i = 0; i < n; i++) {
a[i] = rand() % 2;
}
clock_t s = clock();
func(n, a, 0);
double t = (double)(clock() - s) / CLOCKS_PER_SEC;
printf("%s:\t%f\n", name, t);
free(a);
}
}
int main(void)
{
bench("hoge", hoge);
bench("piyo", piyo);
bench("hogera", hogera);
}
↑で測定した。
286デフォルトの名無しさん
2023/08/11(金) 15:29:01.99ID:Dz1zKJwc gcc 12.2.0に-O2を指定
hoge: 0.279982
piyo: 0.059988
hogera: 0.051996
https://wandbox.org/permlink/cLGAj1OcfqmjdJeZ
clang 15.0.7に-O2を指定
hoge: 0.283996
piyo: 0.036019
hogera: 0.028001
https://wandbox.org/permlink/jEA3G3XMSKeCUKbZ
clang 15.0.7に-O2 -march=nativeを指定
hoge: 0.028001
piyo: 0.028001
hogera: 0.027980
https://wandbox.org/permlink/cMJSCT2nnvyhpSpD
hoge: 0.279982
piyo: 0.059988
hogera: 0.051996
https://wandbox.org/permlink/cLGAj1OcfqmjdJeZ
clang 15.0.7に-O2を指定
hoge: 0.283996
piyo: 0.036019
hogera: 0.028001
https://wandbox.org/permlink/jEA3G3XMSKeCUKbZ
clang 15.0.7に-O2 -march=nativeを指定
hoge: 0.028001
piyo: 0.028001
hogera: 0.027980
https://wandbox.org/permlink/cMJSCT2nnvyhpSpD
287デフォルトの名無しさん
2023/08/11(金) 15:40:51.42ID:Dz1zKJwc gccとclangの両方で最適化指示に-O2だけを指定した場合にhogeの結果が極端に悪いのは
・条件分岐命令が生成されている
・配列の内容をrand()で生成しているため分岐予測が外れまくる
ことが原因と思われる。
clangに-O2 -march=nativeを指定した場合にhogeの結果が他と変わらなくなったのは恐らくはAVX命令が使用され条件分岐がなくなったため。
試しに-O2 -mavx2を指定しても
hoge: 0.028001
piyo: 0.028002
hogera: 0.028002
https://wandbox.org/permlink/XqiQgGEs1BZJmpmp
変わらない結果となった。
・条件分岐命令が生成されている
・配列の内容をrand()で生成しているため分岐予測が外れまくる
ことが原因と思われる。
clangに-O2 -march=nativeを指定した場合にhogeの結果が他と変わらなくなったのは恐らくはAVX命令が使用され条件分岐がなくなったため。
試しに-O2 -mavx2を指定しても
hoge: 0.028001
piyo: 0.028002
hogera: 0.028002
https://wandbox.org/permlink/XqiQgGEs1BZJmpmp
変わらない結果となった。
288デフォルトの名無しさん
2023/08/11(金) 15:42:39.23ID:k/CU0rlR 別スレ立ててそこでやって
リンク貼っていいから
Qiitaと関係なくてスレチだし
元の記事はQiitaから削除されて存在しない
1つのテーマを掘り下げる目的がありそうだし
長くなりそう
リンク貼っていいから
Qiitaと関係なくてスレチだし
元の記事はQiitaから削除されて存在しない
1つのテーマを掘り下げる目的がありそうだし
長くなりそう
289デフォルトの名無しさん
2023/08/11(金) 22:03:23.82ID:n9doW6N2290デフォルトの名無しさん
2023/08/12(土) 02:16:01.85ID:MQtFcy0V 「なんでそんな書き方するの?」
「こっちのが速いから」
「へー、どれくらい?」
「100万回実行して数msかな」
「でもここ数回しか実行されないよ?」
「こっちのが速いから」
「へー、どれくらい?」
「100万回実行して数msかな」
「でもここ数回しか実行されないよ?」
291デフォルトの名無しさん
2023/08/12(土) 10:23:43.34ID:BDIecCFX 長々と空気読めないこと喋るやつおるよな
292デフォルトの名無しさん
2023/08/12(土) 10:28:09.42ID:w3tn+9YE >>289
if文を無くせる場合はどんな場合がある?
ifがあるなら無くせないんじゃないの?
その場合を見つけたとしてこのスレで発表する?
それともこのスレを出典にする?
このスレにリンクを貼らないとif文を使うと10倍遅くなることを証明できないから
if文を無くせる場合はどんな場合がある?
ifがあるなら無くせないんじゃないの?
その場合を見つけたとしてこのスレで発表する?
それともこのスレを出典にする?
このスレにリンクを貼らないとif文を使うと10倍遅くなることを証明できないから
293デフォルトの名無しさん
2023/08/12(土) 12:27:02.41ID:kvrjqk0I 常にこんな書き方をするべきとかではなくてスループットを上げたい場合に考えられる手段の一つ、くらいの話だと思うんだが顔真っ赤にして否定してる奴なんなの
294デフォルトの名無しさん
2023/08/12(土) 13:09:09.17ID:VjFL1AwM 処理系やプロセッサ依存のソースを書く時代は終わったんだよ顔真っ赤なおじいちゃん
何度も言われてるようにここじゃなくQiitaに記事書きなよw
何度も言われてるようにここじゃなくQiitaに記事書きなよw
295デフォルトの名無しさん
2023/08/12(土) 13:13:42.09ID:kvrjqk0I > 処理系やプロセッサ依存のソースを書く時代は終わったんだよ
組み込みとか念頭にない人は世の中が単純に見えて幸せそうですね。
組み込みとか念頭にない人は世の中が単純に見えて幸せそうですね。
296デフォルトの名無しさん
2023/08/12(土) 14:21:39.40ID:VjFL1AwM 組み込みの現場も知らない癖に何をイキッてるんだ無職くんはw
いいから記事を書きなよ
そしたらここで話題にしてもいいからさ
スレ違いってわかる?
いいから記事を書きなよ
そしたらここで話題にしてもいいからさ
スレ違いってわかる?
297デフォルトの名無しさん
2023/08/12(土) 16:29:25.06ID:QkMalqzA298デフォルトの名無しさん
2023/08/12(土) 16:53:18.46ID:wD60IGH3299デフォルトの名無しさん
2023/08/12(土) 16:55:33.58ID:dxjaE8PG プロセッサに依存していいならどう最適化されるか決まってないCよりアセンブラ使う方が確実だぞ
300デフォルトの名無しさん
2023/08/12(土) 17:42:26.72ID:LEE4+Uqf 終わった記事に関してウダウダと
そんなんだからいつまで経っても独り身なんだぞ
そんなんだからいつまで経っても独り身なんだぞ
301デフォルトの名無しさん
2023/08/12(土) 17:51:13.60ID:yNBhBfdR >>299
CMOV命令はintelにもamdにもあるから一般的な環境でプロセッサ依存ではないですよね
もしCMOVがない特殊な環境でも条件フラグをレジスタに入れる命令があればそれが使われて大丈夫ですね
gccとclangどちらでも速くなったようだからコンパイラ処理系依存のテクニックではなさそう
C言語だけでなくRustでも同じ生成コードとなったから言語に依存したテクニックでもなさそう
CMOV命令はintelにもamdにもあるから一般的な環境でプロセッサ依存ではないですよね
もしCMOVがない特殊な環境でも条件フラグをレジスタに入れる命令があればそれが使われて大丈夫ですね
gccとclangどちらでも速くなったようだからコンパイラ処理系依存のテクニックではなさそう
C言語だけでなくRustでも同じ生成コードとなったから言語に依存したテクニックでもなさそう
302デフォルトの名無しさん
2023/08/12(土) 18:39:13.58ID:mEHRZZZJ >>298
> if文を無くせる場合があるというのが253の記事
記事にあるif文を無くせる場合はこれ1つだけ
if (num==1) { num=0 } else { num=1 }
↓
num = !(bool)num
他の読者のために書いてあげる
機会が非常に少なくて残念!!
レスの後半部分は間違ってる
> if文を無くせる場合があるというのが253の記事
記事にあるif文を無くせる場合はこれ1つだけ
if (num==1) { num=0 } else { num=1 }
↓
num = !(bool)num
他の読者のために書いてあげる
機会が非常に少なくて残念!!
レスの後半部分は間違ってる
303デフォルトの名無しさん
2023/08/12(土) 18:45:47.87ID:mEHRZZZJ if文の高速化が検索したら
ifとswitchで迷ったらswitchを使う
IF K=6 THEN X=X+1→X=X-(K=6)
が出てきてif文の高速化は有名な話だったようだ
補足訂正
ifとswitchで迷ったらswitchを使う
IF K=6 THEN X=X+1→X=X-(K=6)
が出てきてif文の高速化は有名な話だったようだ
補足訂正
304デフォルトの名無しさん
2023/08/12(土) 19:08:27.81ID:dqIchbhY >>302
プログラムも読めないのか
そんなバカが必死に否定してたのか
記事以外にもこのスレで他のコード例やコンパイラによるその生成アセンブラも出ている
さらにベンチマーク比較で大きく速度向上まで結果が出ている
この状況で必死に否定し続けるのはみっともないぜ
プログラムも読めないのか
そんなバカが必死に否定してたのか
記事以外にもこのスレで他のコード例やコンパイラによるその生成アセンブラも出ている
さらにベンチマーク比較で大きく速度向上まで結果が出ている
この状況で必死に否定し続けるのはみっともないぜ
305デフォルトの名無しさん
2023/08/12(土) 22:28:25.82ID:TiqzNocE >>301
組み込みの意味がわからない人?w
組み込みの意味がわからない人?w
306デフォルトの名無しさん
2023/08/12(土) 23:03:51.71ID:dqIchbhY 記事読んでも組み込みなんて限定はないな
必死に否定してるバカが勝手に組み込みの話と思い込んでいるのか
必死に否定してるバカが勝手に組み込みの話と思い込んでいるのか
307デフォルトの名無しさん
2023/08/13(日) 00:15:07.75ID:NKbs7DmP なんでそんなに必死なのか知らんけどここまで言われても記事を書こうとしないのは自分が間違ってることを薄々でもわかってるんだろ?w
無理すんな無職
無理すんな無職
308デフォルトの名無しさん
2023/08/13(日) 01:15:32.46ID:qIH8AICq309デフォルトの名無しさん
2023/08/13(日) 10:23:41.63ID:427/I8XL > 記事を書こうとしないのは
日本の技術力の底上げのために
検索結果の健全化のために
クソ記事書くのはもうやめてクレメンス
お願いですから書くのやめてクレメンス
書かないことでみんなが助かる
書かないことでみんなが嬉しい
わかってクレメンス
クソ記事書いてはいけないと
正常な人間ははじめから知っているんです
日本の技術力の底上げのために
検索結果の健全化のために
クソ記事書くのはもうやめてクレメンス
お願いですから書くのやめてクレメンス
書かないことでみんなが助かる
書かないことでみんなが嬉しい
わかってクレメンス
クソ記事書いてはいけないと
正常な人間ははじめから知っているんです
310デフォルトの名無しさん
2023/08/13(日) 10:23:43.05ID:ea9tHaSQ 逃げたw
311デフォルトの名無しさん
2023/08/13(日) 12:06:02.55ID:mxfdwtiA クソ記事は批判して良いと思うが
クソ記事に対する批判がみんなのためになるのなら賛成
ただ暇でやってるだけならもうちょっと時間を有効に使えと言いたい
クソ記事に対する批判がみんなのためになるのなら賛成
ただ暇でやってるだけならもうちょっと時間を有効に使えと言いたい
312デフォルトの名無しさん
2023/08/13(日) 13:52:34.26ID:bmBefS74 if文をなくすのが高速化に繋がってると解釈してる人がいるようなので補足。
>>286の投稿でhogeの結果が極端に悪いのは条件分岐命令が生成されていることが原因だが条件分岐命令が生成されているのはif文を使用しているからではない。条件によってメモリへの書き込みが行われたり行われなかったりするロジックのためである。
試しにhoge()の実装を
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
int x = num[i];
if (x == deleteNum) { // deleteNumで指定した要素を0にする
x = 0;
}
num[i] = x;
}
}
内容が変わろうが変わるまいが常にメモリへの書き込みが行われるよう変更したらどうなるか。
>>286の投稿でhogeの結果が極端に悪いのは条件分岐命令が生成されていることが原因だが条件分岐命令が生成されているのはif文を使用しているからではない。条件によってメモリへの書き込みが行われたり行われなかったりするロジックのためである。
試しにhoge()の実装を
void hoge(int n, int num[n], int deleteNum)
{
for (int i = 0; i < n; i++) {
int x = num[i];
if (x == deleteNum) { // deleteNumで指定した要素を0にする
x = 0;
}
num[i] = x;
}
}
内容が変わろうが変わるまいが常にメモリへの書き込みが行われるよう変更したらどうなるか。
313デフォルトの名無しさん
2023/08/13(日) 13:57:12.40ID:bmBefS74 gcc 12.2.0に-O2を指定
hoge: 0.044001
piyo: 0.060001
hogera: 0.052001
https://wandbox.org/permlink/Na7RxYGEttdpuCnR
clang 15.0.7に-O2を指定
hoge: 0.032001
piyo: 0.032002
hogera: 0.031992
https://wandbox.org/permlink/1FZCQD2WsnbvifWw
hoge()の実行時間はpiyo()やhogera()と大差なくなる。
if文の使用がhoge()が遅かった原因ではない。
hoge: 0.044001
piyo: 0.060001
hogera: 0.052001
https://wandbox.org/permlink/Na7RxYGEttdpuCnR
clang 15.0.7に-O2を指定
hoge: 0.032001
piyo: 0.032002
hogera: 0.031992
https://wandbox.org/permlink/1FZCQD2WsnbvifWw
hoge()の実行時間はpiyo()やhogera()と大差なくなる。
if文の使用がhoge()が遅かった原因ではない。
314デフォルトの名無しさん
2023/08/13(日) 14:09:26.02ID:aL79QjVh Qiitaアカウント持ってないからここでウダウダコメントするしかない雑魚w
315デフォルトの名無しさん
2023/08/13(日) 14:28:13.37ID:xVDxBOfX316デフォルトの名無しさん
2023/08/13(日) 14:59:12.83ID:427/I8XL > Qiitaアカウント持ってない
つまりそれは
正常な思考力を持ってるってこと
つまりそれは
正常な思考力を持ってるってこと
317デフォルトの名無しさん
2023/08/13(日) 16:34:36.74ID:Z5uDnRRN Qiitaに日記を書くんじゃない
318デフォルトの名無しさん
2023/08/13(日) 16:43:33.83ID:Z5uDnRRN319デフォルトの名無しさん
2023/08/13(日) 16:56:52.28ID:427/I8XL > 不愉快
彼らに不愉快という概念はないぞ
クソを食い
クソを出し
周囲をクソまみれにしても
そのとき
むしろ笑顔だから
彼らに不愉快という概念はないぞ
クソを食い
クソを出し
周囲をクソまみれにしても
そのとき
むしろ笑顔だから
320デフォルトの名無しさん
2023/08/14(月) 05:02:03.98ID:flQ8vQku >>315
以前「キモッ」だけのコメントをQiitaでしたことあるが、運営から「削除しろ。しなければ垢バンまである」というメールがきたw
以前「キモッ」だけのコメントをQiitaでしたことあるが、運営から「削除しろ。しなければ垢バンまである」というメールがきたw
321デフォルトの名無しさん
2023/08/14(月) 10:45:24.67ID:5M9frLMH >>320
草
草
322デフォルトの名無しさん
2023/08/14(月) 10:59:15.20ID:K6AS1572 >>321
草で済まない
ここでも言うべきでない
開示請求して制裁するように日本社会が変化
法律上は不特定多数に言うのがアウト
ここの発言は必然的に不特定多数
どうしても言いたいなら少数の友人だけに言えばいい
草で済まない
ここでも言うべきでない
開示請求して制裁するように日本社会が変化
法律上は不特定多数に言うのがアウト
ここの発言は必然的に不特定多数
どうしても言いたいなら少数の友人だけに言えばいい
323デフォルトの名無しさん
2023/08/14(月) 11:55:14.49ID:ra8tFfd0324デフォルトの名無しさん
2023/08/14(月) 14:52:20.96ID:ZSYq0zux > 運営からメールが来るのは運営に不都合なことを書いた人だけだよ
運営に不都合関係なくユーザーからの報告がある程度以上あると運営からコメントを直せってメールくるよ。
若年者や女性が書いたという体(てい)の記事に絶賛のコメントが多数付いてるところに水差すようなコメント書いて運営からメール貰ったこと何回かあるわ。
運営に自分の投稿したコメントのどこが問題なのか尋ねても「多数の苦情が来てるのだからお前のコメントが悪い」と埒が明かぬ。運営が苦情の数を気にして機械的に対応してることは確かだと思われる。
運営に不都合関係なくユーザーからの報告がある程度以上あると運営からコメントを直せってメールくるよ。
若年者や女性が書いたという体(てい)の記事に絶賛のコメントが多数付いてるところに水差すようなコメント書いて運営からメール貰ったこと何回かあるわ。
運営に自分の投稿したコメントのどこが問題なのか尋ねても「多数の苦情が来てるのだからお前のコメントが悪い」と埒が明かぬ。運営が苦情の数を気にして機械的に対応してることは確かだと思われる。
325デフォルトの名無しさん
2023/08/15(火) 16:44:03.65ID:0AvN5XPe326デフォルトの名無しさん
2023/08/15(火) 17:06:16.32ID:TjAS9EkF327デフォルトの名無しさん
2023/08/15(火) 18:05:42.32ID:zL0242H+ 「なんで、for文ってforなの?」って、みんな思ったはず。
https://qiita.com/jin237/items/444688df1b6bfad3bd75
> 皆さまのありがたいお声の数々
> 叩かれ放題の記事となっております(笑)
> はてなブックマーク
> https://b.hatena.ne.jp/entry/s/qiita.com/jin237/items/444688df1b6bfad3bd75
> twitterでの記事の検索結果
> https://twitter.com/search?q=https%3A%2F%2Fqiita.com%2Fjin237%2Fitems%2F444688df1b6bfad3bd75
https://twitter.com/jin2372/status/1691061293107859457
> ・釣りタイトルにする。
> ・正解も不正解もある内容にする。
> ・叩き放題でマウント取れるものにする。
> ・文を下手にしてみる。
> ・タグの中で見られやすいものを選ぶ。
> ・別の場所にスレを作る。
> ・見られやすいトレンドにとりあえず載せる。
> 結果:プチ炎上できた。
https://twitter.com/5chan_nel (5ch newer account)
https://qiita.com/jin237/items/444688df1b6bfad3bd75
> 皆さまのありがたいお声の数々
> 叩かれ放題の記事となっております(笑)
> はてなブックマーク
> https://b.hatena.ne.jp/entry/s/qiita.com/jin237/items/444688df1b6bfad3bd75
> twitterでの記事の検索結果
> https://twitter.com/search?q=https%3A%2F%2Fqiita.com%2Fjin237%2Fitems%2F444688df1b6bfad3bd75
https://twitter.com/jin2372/status/1691061293107859457
> ・釣りタイトルにする。
> ・正解も不正解もある内容にする。
> ・叩き放題でマウント取れるものにする。
> ・文を下手にしてみる。
> ・タグの中で見られやすいものを選ぶ。
> ・別の場所にスレを作る。
> ・見られやすいトレンドにとりあえず載せる。
> 結果:プチ炎上できた。
https://twitter.com/5chan_nel (5ch newer account)
328デフォルトの名無しさん
2023/08/15(火) 18:38:37.81ID:ZksP2F0f 苦情の数の話はその人の体験談で話が具体的で信じられる
創作の可能性もあるがそこまで疑わないぞ
運営にメールで尋ねたなどの体験談はwelcomeで書いてほしい
welcomeなレスに騙されやすいなどとくだらない批判をいれるべきでない
何を言いたいかと言うと話の構造が根本的に違うだろと
創作の可能性もあるがそこまで疑わないぞ
運営にメールで尋ねたなどの体験談はwelcomeで書いてほしい
welcomeなレスに騙されやすいなどとくだらない批判をいれるべきでない
何を言いたいかと言うと話の構造が根本的に違うだろと
329デフォルトの名無しさん
2023/08/15(火) 18:46:26.63ID:ZksP2F0f330デフォルトの名無しさん
2023/08/15(火) 18:47:04.69ID:hWbexh2P331デフォルトの名無しさん
2023/08/15(火) 19:07:59.33ID:ZksP2F0f332デフォルトの名無しさん
2023/08/15(火) 19:09:41.51ID:ZzYADMsV と思いたいんだなw
だからやってみればわかると言ってるのにw
https://qiita.com/youwht
こいつが組織票でトレンドに載ってることをバラした記事があったのでこいつを通報したら逆にその記事が消えたのをどう説明するんだよw
だからやってみればわかると言ってるのにw
https://qiita.com/youwht
こいつが組織票でトレンドに載ってることをバラした記事があったのでこいつを通報したら逆にその記事が消えたのをどう説明するんだよw
333デフォルトの名無しさん
2023/08/15(火) 19:27:20.24ID:ZksP2F0f >>332
youwhtで前スレ1から3を検索したが1つもレスがない
話すまでもないというのがQiitaスレの共通認識
説明しようにも何を言ってるのかわからん
陰謀論って早く忘れたほうがいい
いつまでも引きずるのが精神衛生上良くない
起きたときにスレに投稿すべきだった
youwhtで前スレ1から3を検索したが1つもレスがない
話すまでもないというのがQiitaスレの共通認識
説明しようにも何を言ってるのかわからん
陰謀論って早く忘れたほうがいい
いつまでも引きずるのが精神衛生上良くない
起きたときにスレに投稿すべきだった
334デフォルトの名無しさん
2023/08/16(水) 08:17:39.47ID:L1EQEMLK >>333
他の記事やコメント含めてそれだけ徹底的に消されたってことだよw
一時期話題になってたから知ってるやつに聞けよ
こいつの組織票はえげつなかったぞ
なにせqiitaを読みもしないまるで関係ない職場の人間に大量にアカウント作らせて記事をアップすると同時にそいつらに一斉送信していいねさせてたことを自白してたからな
そのいいねの付き方があまりに不自然すぎることに気づいたやつが計測して記事にしたところ数日して削除されて今は痕跡も残ってない
こんな話はその辺にゴロゴロしてるが何せこんなふうに証拠隠滅してるからな
他の記事やコメント含めてそれだけ徹底的に消されたってことだよw
一時期話題になってたから知ってるやつに聞けよ
こいつの組織票はえげつなかったぞ
なにせqiitaを読みもしないまるで関係ない職場の人間に大量にアカウント作らせて記事をアップすると同時にそいつらに一斉送信していいねさせてたことを自白してたからな
そのいいねの付き方があまりに不自然すぎることに気づいたやつが計測して記事にしたところ数日して削除されて今は痕跡も残ってない
こんな話はその辺にゴロゴロしてるが何せこんなふうに証拠隠滅してるからな
335デフォルトの名無しさん
2023/08/16(水) 08:19:13.27ID:L1EQEMLK あとスレに関してはこのスレのできる前の出来事だから話題になってないのは当然だ
336デフォルトの名無しさん
2023/08/16(水) 08:26:56.16ID:L1EQEMLK https://www.google.com/search?q=youwht%20site%3Amegalodon.jp
魚拓にyouwhtが無いのも不思議だろ?
あれだけ人気記事書いて本も書いて人気ソフト作ってテレビにも出演してるのに一切アーカイブされてないんだぜ?
そんなことあり得ると思う?
答えは一つ
消したんだよ
魚拓にyouwhtが無いのも不思議だろ?
あれだけ人気記事書いて本も書いて人気ソフト作ってテレビにも出演してるのに一切アーカイブされてないんだぜ?
そんなことあり得ると思う?
答えは一つ
消したんだよ
337デフォルトの名無しさん
2023/08/16(水) 18:44:29.95ID:8EM0gubg > 魚拓にyouwhtが無いのも不思議だろ?
別に不思議はないなあ。
> あれだけ人気記事書いて本も書いて人気ソフト作ってテレビにも出演してるのに一切アーカイブされてないんだぜ?
> そんなことあり得ると思う?
魚拓取られるのってやらかした奴の証拠保全が目的だからなあ、人気記事たくさん書いてる人気者なら問題行動起こす可能性も低そうだし魚拓取られる機会もそうそうないんじゃないの。つか
> 答えは一つ
> 消したんだよ
妄想乙w
別に不思議はないなあ。
> あれだけ人気記事書いて本も書いて人気ソフト作ってテレビにも出演してるのに一切アーカイブされてないんだぜ?
> そんなことあり得ると思う?
魚拓取られるのってやらかした奴の証拠保全が目的だからなあ、人気記事たくさん書いてる人気者なら問題行動起こす可能性も低そうだし魚拓取られる機会もそうそうないんじゃないの。つか
> 答えは一つ
> 消したんだよ
妄想乙w
338デフォルトの名無しさん
2023/08/16(水) 18:55:47.22ID:8EM0gubg > こいつが組織票でトレンドに載ってることをバラした記事があったのでこいつを通報したら逆にその記事が消えたのをどう説明するんだよw
妄想記事が消された以外の解釈あるかな?
つかどこの誰が書いたか正しいかもわからん記事が「あった」というだけで通報って大分イカれてるぞ
妄想記事が消された以外の解釈あるかな?
つかどこの誰が書いたか正しいかもわからん記事が「あった」というだけで通報って大分イカれてるぞ
339デフォルトの名無しさん
2023/08/16(水) 18:56:47.72ID:cRvVyw2V そんなに発狂するなよw
正体がバレるぞw
正体がバレるぞw
340デフォルトの名無しさん
2023/08/16(水) 19:04:30.78ID:8EM0gubg > 正体がバレるぞw
妄想持ちならではのセリフw
妄想持ちならではのセリフw
341デフォルトの名無しさん
2023/08/17(木) 09:06:45.29ID:6LvfXp3I 妄想ブーメランで火消しに必死になってるのは本人なんだろうなあ
342デフォルトの名無しさん
2023/08/17(木) 09:27:37.89ID:vPTmktkt いつでも本人がいると思うのは都合が良すぎる
病気なんだろうなあ
精神病棟で隔離されてそう
病気なんだろうなあ
精神病棟で隔離されてそう
343デフォルトの名無しさん
2023/08/17(木) 09:30:01.29ID:vPTmktkt このスレ3人しかいない
344デフォルトの名無しさん
2023/08/17(木) 13:58:17.84ID:iq59CIRP まあこれだけ発狂してたらそりゃ本人かくらい言われるだろ
みんな知ってる事件なんだし
みんな知ってる事件なんだし
345デフォルトの名無しさん
2023/08/17(木) 13:59:32.09ID:iq59CIRP 精神病棟とか3人とか妄想がきっついな
こういうのって大概自分が言われなれてることを言うんだよな
こういうのって大概自分が言われなれてることを言うんだよな
346デフォルトの名無しさん
2023/08/18(金) 20:22:10.84ID:O8jCLexo カタカタ
|| ̄ Λ_Λ
||_(Д`; ) 「なに?このスレ・・・」
\⊂´ )
( ┳'
|| ̄ Λ_Λ
||_(Д`; ) 「なに?このスレ・・・」
\⊂´ )
( ┳'
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【芸能】俳優・野村宏伸 テレビドラマの制作費やギャラの現状訴え 「比べものにならない位、今は低くて…」 [冬月記者★]
