!extend:checked:vvvvv:1000:512
↑
次スレを作る時は上記1行をコピーして2行に増やして必ず1行目に入るようにしてください。
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 148
https://mevius.5ch.net/test/read.cgi/tech/1537347410/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 149
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ af9f-7TBo)
2018/10/28(日) 22:01:44.38ID:D9Gt7gmT0481デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 06:30:05.99ID:lAbDnTGa0 最適化をいれるとaが定数だとaが消されるからaを別の関数の引数にすることで
消されないようにできる。
volatileで消さないようにするとなぜか比較が最適されない。
消されないようにできる。
volatileで消さないようにするとなぜか比較が最適されない。
482デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/14(金) 06:46:52.77ID:gWmPrUHE0483デフォルトの名無しさん (バットンキン MM33-JU2d)
2018/12/14(金) 06:52:31.89ID:TYVfP/dyM 最適化は処理の最中に使う変数が外部(別スレッドや割り込みハンドラ)から変更されないということを前提としてるから、volatileつけるとaの比較途中でaそのものが変更されるかもしれないので逐一比較になる。
まぁスタック上のローカル変数aが外部から変更されるってのは通常は単なるスタック破壊のバグだけどね。
まぁスタック上のローカル変数aが外部から変更されるってのは通常は単なるスタック破壊のバグだけどね。
484デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/14(金) 06:53:45.77ID:8u55nHdC0 >>468
おまえ4.3BSDのccとかまだ使ってるのか?
おまえ4.3BSDのccとかまだ使ってるのか?
485464 (ワッチョイ 2b93-eQ7e)
2018/12/14(金) 07:50:49.15ID:FIv/Q2MJ0 >>479-480
素直なコードで出るはずだけどなぁ。
サンプル abcdef.c
第1引数の最初の文字が [a-f] なら yes, それ以外なら no と表示
(引数が与えられなかった場合は no を表示)
$ cat abcdef.c
#include <stdio.h>
int main(int argc, char *argv[]) {
int a;
a = (argc>1) ? argv[1][0] : 'z';
if (a=='a'||a=='b'||a=='c'||a=='d'||a=='e'||a=='f') printf("yes\n");
else printf("no\n");
return 0;
}
$ gcc -S abcdef.c
最適化なし 比較6回
$ gcc -O -S abcdef.c
最適化 97引いて5と比較
素直なコードで出るはずだけどなぁ。
サンプル abcdef.c
第1引数の最初の文字が [a-f] なら yes, それ以外なら no と表示
(引数が与えられなかった場合は no を表示)
$ cat abcdef.c
#include <stdio.h>
int main(int argc, char *argv[]) {
int a;
a = (argc>1) ? argv[1][0] : 'z';
if (a=='a'||a=='b'||a=='c'||a=='d'||a=='e'||a=='f') printf("yes\n");
else printf("no\n");
return 0;
}
$ gcc -S abcdef.c
最適化なし 比較6回
$ gcc -O -S abcdef.c
最適化 97引いて5と比較
486デフォルトの名無しさん (ワッチョイ 0a12-rp3U)
2018/12/14(金) 09:57:08.83ID:v3sklYn80 volatileは磁気コアメモリ時代の命令じゃねえのか
487デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 10:14:56.92ID:lAbDnTGa0488デフォルトの名無しさん (ワッチョイ 3b8a-8Y2+)
2018/12/14(金) 10:15:15.85ID:QZB89f550 現在でも組み込み開発でSFRを弄るにはvolatile宣言は必須
489デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 10:28:42.01ID:lAbDnTGa0 結論を言うとvolatile で最適化を調べるために最適化を抑制したのが間違いの原因だっと
ということだな。
ということだな。
490デフォルトの名無しさん (ワッチョイ 3fe3-3flP)
2018/12/14(金) 12:14:57.88ID:E1rpoA/W0 volatileは変数がI/Oポートにマッピングされてることを想定した仕様
コンパイラによる省略とかを許さず書いてある通りにアクセスする
コンパイラによる省略とかを許さず書いてある通りにアクセスする
491デフォルトの名無しさん (アークセー Sxa3-JU2d)
2018/12/14(金) 12:47:24.45ID:TZB/LQMkx >>490
I/Oだけじゃないよ。
別スレッドなど異なる実行コンテキスト間で共有する領域へのアクセスはvolatileをつけないといけない。
SFRへのアクセスもソフトとハードという実行コンテキストが異なる。
I/Oだけじゃないよ。
別スレッドなど異なる実行コンテキスト間で共有する領域へのアクセスはvolatileをつけないといけない。
SFRへのアクセスもソフトとハードという実行コンテキストが異なる。
492デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/14(金) 14:14:04.61ID:7OLXAkOEa 静的変数は全部つけないといかんのだろうね。
利用の趣旨としては。
利用の趣旨としては。
493デフォルトの名無しさん (ワッチョイ 8a9f-+gtp)
2018/12/14(金) 15:46:34.42ID:FWw1nr6R0 ID:y280e6J90はvoid君だろ
494デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/14(金) 16:07:06.94ID:cCP3RgWTa volatile の使い所
1. マルチスレッドで他スレッドと共有される変数(ただし、別途ロックも掛けた方が良い)。
2. シグナルハンドラとその他の処理で共有する変数。
3. longjmp() 使う時。
1. マルチスレッドで他スレッドと共有される変数(ただし、別途ロックも掛けた方が良い)。
2. シグナルハンドラとその他の処理で共有する変数。
3. longjmp() 使う時。
495デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/14(金) 16:08:45.11ID:cCP3RgWTa これ書き忘れてた。
4. 指している先の内容が本当に揮発性の場合(I/Oポート等)
4. 指している先の内容が本当に揮発性の場合(I/Oポート等)
496デフォルトの名無しさん (ワッチョイ 2bea-GDnO)
2018/12/14(金) 16:22:16.94ID:lsnrrwE80 記述された手続き以外の要素によって変数値が変わるなら
497デフォルトの名無しさん (ワッチョイ 8a7f-Xq6B)
2018/12/14(金) 19:01:54.99ID:RfUJ40dd0 >>494
volatile変数をマルチスレッドに使うとかいう誤った知識を流布しないでくれ
volatileに指定してもマルチスレッド共有変数に求められる
* メモリフェンス
* 演算の原子性
は確保できない
ttps://stackoverflow.com/questions/4557979/when-to-use-volatile-with-multi-threading
volatile変数をマルチスレッドに使うとかいう誤った知識を流布しないでくれ
volatileに指定してもマルチスレッド共有変数に求められる
* メモリフェンス
* 演算の原子性
は確保できない
ttps://stackoverflow.com/questions/4557979/when-to-use-volatile-with-multi-threading
498デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/14(金) 19:20:00.03ID:td3PjTJAa 原子性って全然直交した概念ちゃうか。
確保できるとかできないとかいう話になるのがおかしい。
確保できるとかできないとかいう話になるのがおかしい。
499デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/14(金) 19:41:07.95ID:gWmPrUHE0500デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/14(金) 20:47:21.99ID:8u55nHdC0 volatile なんか忘れて素直に pthread とか C++11 とか使っていればいいと思うのです…
502497 (ワッチョイ 0a21-8Bx+)
2018/12/14(金) 21:15:41.90ID:6hfmhPbO0503デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/14(金) 22:13:48.43ID:gWmPrUHE0 >>502
知らんよ、俺はLinuxのsignalなんて使って無いし。
そのページには必要だと書いてあるし、そうなんだろうさ。
が、そもそも、俺に言わせれば
・volataileで実装出来る=ポーリングループ&せいぜいハンドシェーク=糞
・プロセス間通信する意味がない
スレッド間通信でsleep/wakeupで何も問題ないし、その方が自然だ。
この場合に自前でvolatileなんて書くことはない。
ハードウェアを直接叩かないのにvolatileとか、設計を見直した方がいいと思うぜ。
知らんよ、俺はLinuxのsignalなんて使って無いし。
そのページには必要だと書いてあるし、そうなんだろうさ。
が、そもそも、俺に言わせれば
・volataileで実装出来る=ポーリングループ&せいぜいハンドシェーク=糞
・プロセス間通信する意味がない
スレッド間通信でsleep/wakeupで何も問題ないし、その方が自然だ。
この場合に自前でvolatileなんて書くことはない。
ハードウェアを直接叩かないのにvolatileとか、設計を見直した方がいいと思うぜ。
504デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/15(土) 00:19:10.79ID:MJLVMCBK0 >>429
Cのコンパイラは環境依存になるため、コンパイラの出来、不出来がある。
Cのコンパイラは環境依存になるため、コンパイラの出来、不出来がある。
505デフォルトの名無しさん (ワッチョイ d3b3-JU2d)
2018/12/15(土) 01:44:33.10ID:USiGJg2x0 必要条件と十分条件の違いが分かってないやつがいるな。
506デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 09:51:27.56ID:hAY8T09E0 >>503
フェンスがないのにハンドシェークとは、これいかに
フェンスがないのにハンドシェークとは、これいかに
507デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 11:50:06.13ID:nIs3KSLY0 >>506
> 標準シグナルの場合、そのシグナルがブロックされている間に 同じシグナルの複数のインスタンスが配送されても、 1 つだけがキューに入れられる。
> https://linuxjm.osdn.jp/html/LDP_man-pages/man7/signal.7.html
しかし実際ハンドシェークだと思うぜこれは。
意識高い系()ゆとり()がCをやるとfenceという『CPU命令』が必要だと思っちゃうのか?
まあ無理も無いとも思えるが。
> 標準シグナルの場合、そのシグナルがブロックされている間に 同じシグナルの複数のインスタンスが配送されても、 1 つだけがキューに入れられる。
> https://linuxjm.osdn.jp/html/LDP_man-pages/man7/signal.7.html
しかし実際ハンドシェークだと思うぜこれは。
意識高い系()ゆとり()がCをやるとfenceという『CPU命令』が必要だと思っちゃうのか?
まあ無理も無いとも思えるが。
508デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/15(土) 11:53:03.04ID:qrRqm5Rq0 それはC言語の話なのか、OSの話なのか、CPUの話なのか
509デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 12:22:47.52ID:nIs3KSLY0 フェンスが必要になったのはコンパイラ側の都合だから、C言語の話だね。
これが理解出来ないのはお前がゆとりの馬鹿だからだ。
マジな話、馬鹿の癖に煽るゆとりは死んで欲しいね。
お互いに何も得る物がない。
これが理解出来ないのはお前がゆとりの馬鹿だからだ。
マジな話、馬鹿の癖に煽るゆとりは死んで欲しいね。
お互いに何も得る物がない。
510デフォルトの名無しさん (バットンキン MM33-JU2d)
2018/12/15(土) 16:08:16.17ID:uiukVmhyM511デフォルトの名無しさん (ブーイモ MM6f-DFdf)
2018/12/15(土) 16:24:43.93ID:tkQQweukM フェンスが必要なのはCPUとコンパイラ双方のためだ。やっぱvoid君は馬鹿だね。
512デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 17:21:35.13ID:hAY8T09E0513デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 18:37:35.51ID:nIs3KSLY0 >>510-512
ゆとりは死ななきゃ直らないと再認識した。
ゆとりが馬鹿であり続ける権利を尊重し、教えてやらないことにする。
つっても、ググればいくらでも出てくるし、ゆとり以外には実害はないはず。
マジな話、上達したい奴は、ググっても疑問が解消しないときのみ、掲示板等に頼るようにした方がいい。
自力で勝手に進んでいけるか、いちいち構ってちゃん状態になるかでは、上達速度に雲泥の差が出る。
こんなところで下らない煽り合いに興じてるから、ゆとりはゆとりのままなのだと思うし。
StackOverflow(英語版)はかなりオススメだ。迷ったらそこを頼れ。
ゆとりは死ななきゃ直らないと再認識した。
ゆとりが馬鹿であり続ける権利を尊重し、教えてやらないことにする。
つっても、ググればいくらでも出てくるし、ゆとり以外には実害はないはず。
マジな話、上達したい奴は、ググっても疑問が解消しないときのみ、掲示板等に頼るようにした方がいい。
自力で勝手に進んでいけるか、いちいち構ってちゃん状態になるかでは、上達速度に雲泥の差が出る。
こんなところで下らない煽り合いに興じてるから、ゆとりはゆとりのままなのだと思うし。
StackOverflow(英語版)はかなりオススメだ。迷ったらそこを頼れ。
514デフォルトの名無しさん (ブーイモ MM6f-DFdf)
2018/12/15(土) 19:04:30.55ID:/O2tQ50qM void君は謎の捨て台詞好きだよね。かっこ悪いよ。
515デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/15(土) 19:15:51.64ID:qrRqm5Rq0 ここにはお前に用がある人はいないそうだ
516デフォルトの名無しさん (アメ MM47-KgdI)
2018/12/15(土) 19:17:41.02ID:CVS0UY4MM 霊界は存在するよね。ググればいくらでも出てくるしww
517デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 19:40:59.06ID:nIs3KSLY0 以下、C言語について詳しいつもりの、格好いいつもりの粘着君が教えてくれます。ご安心を。
(レベルはあのコードを糞コードと認識出来ないようなので推して知るべし)
マジな話、volatileをスレッド同期に使え、なんてのは世界中の誰も言ってないだろ。
勿論longjmpもgotoもその類だ。
ここはそれを分かってるロートル連中が与太話をするところであって、
マジの初心者が来るのは危険だと思うがな。ネタをネタと(ry
初心者なら、まずは正しいプログラミングを目指すべきだと思うぜ。
本来はリアルで先輩/上司/先生に教えを請えるのが一番いいが、
駄目ならStackOverflow(英語版)を俺はオススメするが。
最近は知恵遅れも知恵袋と化してきていて、例えば以下(PHPのスレより、ただし削除済み)
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10199147355
そこで焼け出された知恵遅れゆとりがこちらに押し寄せてきているのだと推測しているが、
お互いにとって不幸なことになってる。
ただし知恵袋が機能するなら、本来はIDがある分向こうの方がましだから、向こうを使った方がいいと思うが。
知恵遅れゆとりがスクラム組んで押し寄せることに対して、2chは防御手段がない。
実際、こいつらが役に立つことを一回も言ったことがないのも事実でさ。
こいつらは死ぬまでイナゴし続けるんだろうな、って思う。
(レベルはあのコードを糞コードと認識出来ないようなので推して知るべし)
マジな話、volatileをスレッド同期に使え、なんてのは世界中の誰も言ってないだろ。
勿論longjmpもgotoもその類だ。
ここはそれを分かってるロートル連中が与太話をするところであって、
マジの初心者が来るのは危険だと思うがな。ネタをネタと(ry
初心者なら、まずは正しいプログラミングを目指すべきだと思うぜ。
本来はリアルで先輩/上司/先生に教えを請えるのが一番いいが、
駄目ならStackOverflow(英語版)を俺はオススメするが。
最近は知恵遅れも知恵袋と化してきていて、例えば以下(PHPのスレより、ただし削除済み)
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10199147355
そこで焼け出された知恵遅れゆとりがこちらに押し寄せてきているのだと推測しているが、
お互いにとって不幸なことになってる。
ただし知恵袋が機能するなら、本来はIDがある分向こうの方がましだから、向こうを使った方がいいと思うが。
知恵遅れゆとりがスクラム組んで押し寄せることに対して、2chは防御手段がない。
実際、こいつらが役に立つことを一回も言ったことがないのも事実でさ。
こいつらは死ぬまでイナゴし続けるんだろうな、って思う。
518デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 21:18:31.36ID:hAY8T09E0 ニヤニヤ
519デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/15(土) 21:37:43.77ID:VC87camXa C言語について詳しいつもりの、格好いいつもりの粘着君ってこんな名言残した人の事ですか?
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
520デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 22:00:05.11ID:nIs3KSLY0521デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 22:03:06.74ID:hAY8T09E0 ぐうの音も出ねえって
こいつのためにあるような言葉だなw
こいつのためにあるような言葉だなw
522デフォルトの名無しさん (ワッチョイ aaf9-fk3u)
2018/12/15(土) 22:33:19.53ID:3LFJSGA60 void君て、半角カナ君とかなり似た匂いがするけど、亜種か別設定キャラだったりするのだろうか?
523デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/15(土) 22:35:12.80ID:MJLVMCBK0 C言語はあとから標準化されたのと、コンパイラの実装はUNIXを想定しているため、OSが異なるとコードの意味まで変わる。
524デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/15(土) 22:44:04.38ID:8aRCy95z0 オレは要点を簡潔明瞭にレスしてるからな
あったま悪い低学歴底辺のキミラの生きうつしになるvoid君と一緒にされたら困るワケ
キミラにとってvoid君はただの同族嫌悪
あったま悪い低学歴底辺のキミラの生きうつしになるvoid君と一緒にされたら困るワケ
キミラにとってvoid君はただの同族嫌悪
525デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/15(土) 23:22:08.85ID:BLCVn7NJ0 初心者です。
ソートとコンパイラの最適化について教えて頂きたいのですが、
挿入ソートを書いてその実行時間を計測しました。
動的に確保した10000の要素数を持つ配列に、rand()関数でランダムな値を入れて、
clock()関数でソート時間を計測しています。
コンパイラはMinGWから入れたGCC6.3.0で、-O1と-O無しで実行時間にかなりの差が出ます。
バブルソートや選択ソートでは極端に大きな差が出ないのですが、挿入ソートだけはかなり差が出ます。
-O無しだと7秒前後、-O1だと1.7秒ほどで完了します。
自分が書いた挿入ソートが正しい内容になっているかと、
このプログラムでの最適化でどのようなことが行われているのかおおまかに教えて頂きたいです。
挿入ソートは以下の様に書きました。
void insersion_sort(unsigned array[], unsigned length)
{
register unsigned *start = &array[0];
register unsigned *sorted = start;
register unsigned *end = &array[length - 1];
while (sorted < end) {
register unsigned *crnt = sorted + 1;
while (crnt > start && *crnt < *(crnt - 1)) {
swap(crnt, crnt - 1);
crnt--;
}
sorted++;
}
}
ソートとコンパイラの最適化について教えて頂きたいのですが、
挿入ソートを書いてその実行時間を計測しました。
動的に確保した10000の要素数を持つ配列に、rand()関数でランダムな値を入れて、
clock()関数でソート時間を計測しています。
コンパイラはMinGWから入れたGCC6.3.0で、-O1と-O無しで実行時間にかなりの差が出ます。
バブルソートや選択ソートでは極端に大きな差が出ないのですが、挿入ソートだけはかなり差が出ます。
-O無しだと7秒前後、-O1だと1.7秒ほどで完了します。
自分が書いた挿入ソートが正しい内容になっているかと、
このプログラムでの最適化でどのようなことが行われているのかおおまかに教えて頂きたいです。
挿入ソートは以下の様に書きました。
void insersion_sort(unsigned array[], unsigned length)
{
register unsigned *start = &array[0];
register unsigned *sorted = start;
register unsigned *end = &array[length - 1];
while (sorted < end) {
register unsigned *crnt = sorted + 1;
while (crnt > start && *crnt < *(crnt - 1)) {
swap(crnt, crnt - 1);
crnt--;
}
sorted++;
}
}
526デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 23:41:43.90ID:nIs3KSLY0 >>525
> コンパイラはMinGWから入れたGCC6.3.0で
そのレベルならVS使えってマジで。
GUIでグレークポイント貼って追跡出来るだけで全然違うから。
> 自分が書いた挿入ソートが正しい内容になっているかと、
自分でデバッグしろドアホ。
自前でチェックすれば済むんだから、簡単に出来るだろ。
for (int i=0;i<10000-1;i++) if (array[i]>array[i+1]) printf("BUG: %d, %d, %d, %d\n",i,i+1,array[i],array[i+1]);
とか。
> register
使うな。
ってかおまえ、何を参考にして学んでる?
> void insersion_sort(unsigned array[], unsigned length)
> unsigned array[]
これもあんまりやらないと思うけど。
> 最適化でどのようなことが行われているのかおおまかに教えて頂きたい
それをマジで聞きたいならオブジェクトコード(逆アセンブルコード)を貼る必要があるわけだが。
> コンパイラはMinGWから入れたGCC6.3.0で
そのレベルならVS使えってマジで。
GUIでグレークポイント貼って追跡出来るだけで全然違うから。
> 自分が書いた挿入ソートが正しい内容になっているかと、
自分でデバッグしろドアホ。
自前でチェックすれば済むんだから、簡単に出来るだろ。
for (int i=0;i<10000-1;i++) if (array[i]>array[i+1]) printf("BUG: %d, %d, %d, %d\n",i,i+1,array[i],array[i+1]);
とか。
> register
使うな。
ってかおまえ、何を参考にして学んでる?
> void insersion_sort(unsigned array[], unsigned length)
> unsigned array[]
これもあんまりやらないと思うけど。
> 最適化でどのようなことが行われているのかおおまかに教えて頂きたい
それをマジで聞きたいならオブジェクトコード(逆アセンブルコード)を貼る必要があるわけだが。
527デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/15(土) 23:50:10.65ID:BLCVn7NJ0 >>526
レスありがとうございます。
VSなら使っています。VSCodeですがw
ちなみにGUIでデバッグも出来ますね。
バグは出ていないのにデバッグする意味ってあるんですか?
質問の意図としては、「ちゃんと正しいアルゴリズムで実装できているか」という質問をしているのです。
「動かないからおかしいところ教えてください」という意味ではありません。
register指定子を付けるだけで、付けていないときに比べて2倍ほど変わるのですが、
付けないほうが良い理由を教えて頂けますでしょうか。
unsignedもあまりやらない意味を教えてください。
今はrand()から帰ってくる値が入っているだけですので意味ないのは確かですが。
レスありがとうございます。
VSなら使っています。VSCodeですがw
ちなみにGUIでデバッグも出来ますね。
バグは出ていないのにデバッグする意味ってあるんですか?
質問の意図としては、「ちゃんと正しいアルゴリズムで実装できているか」という質問をしているのです。
「動かないからおかしいところ教えてください」という意味ではありません。
register指定子を付けるだけで、付けていないときに比べて2倍ほど変わるのですが、
付けないほうが良い理由を教えて頂けますでしょうか。
unsignedもあまりやらない意味を教えてください。
今はrand()から帰ってくる値が入っているだけですので意味ないのは確かですが。
528デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/15(土) 23:53:27.39ID:BLCVn7NJ0 × 2倍ほど変わる
〇 ソート時間が2倍ほど変わる
連レス失礼
〇 ソート時間が2倍ほど変わる
連レス失礼
529デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/16(日) 00:07:00.48ID:w2yggEy4a 引数voidにすると魔除けになるかもな
530デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:10:07.53ID:GOuL0+IB0 度々ごめんなさい。配列の桁数を間違えていました。
×10000
〇100000
です。
×10000
〇100000
です。
531デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 00:11:33.51ID:nrAiyUBx0 >>527
C言語に詳しくない俺でもわかるが、CPUは正と負の数を扱っているから、正の数と指定されると余計な処理が挟まる。
C言語に詳しくない俺でもわかるが、CPUは正と負の数を扱っているから、正の数と指定されると余計な処理が挟まる。
532デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:13:46.60ID:+TcxNu6P0 >>527
> ちなみにGUIでデバッグも出来ますね。
それならいい。
> ちゃんと正しいアルゴリズムで実装できているか
ならwikiでもどうぞ。いちいち聞くんじゃなくてさ。
https://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5%E3%82%BD%E3%83%BC%E3%83%88
> register指定子を付けるだけで、付けていないときに比べて2倍ほど変わるのですが、
マジで?
> 付けないほうが良い理由を教えて頂けますでしょうか。
https://cpprefjp.github.io/lang/cpp11/deprecation_of_the_register_keyword.html
つかマジで、お前が参考にしている本なりサイトはかなりヤバいと思うぜ。
(Cでも同じはずだが、実際効いているのであれば違うのか?)
> unsignedもあまりやらない意味を教えてください。
いや、書き方が曖昧だったが、[]をやらない。大概は、 unsigned *array だと思う。
つか、全般的にコードが妙な書き方になってるから、直した方がいい。
初心者なら、単に教科書かその類に問題があるだけだと思うし。
>>528
この文脈でそこを誤解することはあり得ないから大丈夫。
(なのはリアルだけで、2chでは信じられないレベルのコミュ障がいるのもまた事実だが)
> ちなみにGUIでデバッグも出来ますね。
それならいい。
> ちゃんと正しいアルゴリズムで実装できているか
ならwikiでもどうぞ。いちいち聞くんじゃなくてさ。
https://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5%E3%82%BD%E3%83%BC%E3%83%88
> register指定子を付けるだけで、付けていないときに比べて2倍ほど変わるのですが、
マジで?
> 付けないほうが良い理由を教えて頂けますでしょうか。
https://cpprefjp.github.io/lang/cpp11/deprecation_of_the_register_keyword.html
つかマジで、お前が参考にしている本なりサイトはかなりヤバいと思うぜ。
(Cでも同じはずだが、実際効いているのであれば違うのか?)
> unsignedもあまりやらない意味を教えてください。
いや、書き方が曖昧だったが、[]をやらない。大概は、 unsigned *array だと思う。
つか、全般的にコードが妙な書き方になってるから、直した方がいい。
初心者なら、単に教科書かその類に問題があるだけだと思うし。
>>528
この文脈でそこを誤解することはあり得ないから大丈夫。
(なのはリアルだけで、2chでは信じられないレベルのコミュ障がいるのもまた事実だが)
533デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:15:38.43ID:GOuL0+IB0 >>531
なるほど、ありがとうございます。
書き始めたときは何も考えていなくて、とりあえず大きい値が入れられるようにunsignedにしていましたw
今後正負で大きい値も扱える型の配列に直そうと思います。
なるほど、ありがとうございます。
書き始めたときは何も考えていなくて、とりあえず大きい値が入れられるようにunsignedにしていましたw
今後正負で大きい値も扱える型の配列に直そうと思います。
534デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:24:06.30ID:GOuL0+IB0 >>532
レスありがとうございます。
ちなみにそのwikiの説明文を見て挿入ソートを書いています。
ソースの部分は読んでいませんが。
GCCは最適化を有効にしなければregisterが効くなんてのは結構有名だと思っていたんですがそうでもないんですかね。
配列引数に[]を書かないというのは、別に個人の趣味みたいなもんだと思うので良いんじゃないでしょうか。
他の人とコーディングするなら規約などに従いますが、今は自分一人で書いているだけなので。
[]が書いてあれば配列を渡すというのが一目瞭然であるから付けているだけです。(arrayという名前や、lengthが必要な時点で分かりますが)
*start = &array[0];としているのも同じ理由です。
*start = arrayと書くより分かりやすいと思うからそうしているだけです。
別にコーディング規約の話をしているわけではないのでこの辺でよろしいでしょうか?
レスありがとうございます。
ちなみにそのwikiの説明文を見て挿入ソートを書いています。
ソースの部分は読んでいませんが。
GCCは最適化を有効にしなければregisterが効くなんてのは結構有名だと思っていたんですがそうでもないんですかね。
配列引数に[]を書かないというのは、別に個人の趣味みたいなもんだと思うので良いんじゃないでしょうか。
他の人とコーディングするなら規約などに従いますが、今は自分一人で書いているだけなので。
[]が書いてあれば配列を渡すというのが一目瞭然であるから付けているだけです。(arrayという名前や、lengthが必要な時点で分かりますが)
*start = &array[0];としているのも同じ理由です。
*start = arrayと書くより分かりやすいと思うからそうしているだけです。
別にコーディング規約の話をしているわけではないのでこの辺でよろしいでしょうか?
535デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:25:21.59ID:+TcxNu6P0536デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:28:37.95ID:GOuL0+IB0 あとちなみに、registerが非推奨になっているのはC++の話ではないんですかね?
その辺も詳しい方いましたら教えてください。
その辺も詳しい方いましたら教えてください。
537デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:29:37.27ID:GOuL0+IB0 >>535
unsigned intの省略型がunsignedだと思っていたのですが違うのでしょうか?
unsigned intの省略型がunsignedだと思っていたのですが違うのでしょうか?
538デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:33:29.78ID:+TcxNu6P0 >>534
> GCCは最適化を有効にしなければregisterが効くなんてのは結構有名だと思っていたんですが
知らん。
というかそのそも最適化無効で使うことがほぼあり得ない。
さらに言えば、-O1ってのも奇妙で、普通は-O2か最近は-O3。
マジで君、全般的に色々おかしいんだよ。
> 別にコーディング規約の話をしているわけではないのでこの辺でよろしいでしょうか?
好きなように書けばいいんだが、上達速度を上げたいなら、『他人と同じコーディングルール』で書いとけ。
それで損はしない。
慣れてる書き方の方が速く読めるから、
他人のコードを読むときに同じ時間でより沢山のコードを読めるようになり、上達しやすくなる。
> GCCは最適化を有効にしなければregisterが効くなんてのは結構有名だと思っていたんですが
知らん。
というかそのそも最適化無効で使うことがほぼあり得ない。
さらに言えば、-O1ってのも奇妙で、普通は-O2か最近は-O3。
マジで君、全般的に色々おかしいんだよ。
> 別にコーディング規約の話をしているわけではないのでこの辺でよろしいでしょうか?
好きなように書けばいいんだが、上達速度を上げたいなら、『他人と同じコーディングルール』で書いとけ。
それで損はしない。
慣れてる書き方の方が速く読めるから、
他人のコードを読むときに同じ時間でより沢山のコードを読めるようになり、上達しやすくなる。
539デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:40:59.45ID:GOuL0+IB0 >>538
ちなみにO2とO3も試しましたが、O1と変わらないですね。
-O無しだとこの速度で、一体どこから速くなるんだろうと-O1を試したら速くなっていた、というだけの話です。
最適化無効で使うことがあり得ない、というのも今初めて知りました。ありがとうございます。
私から逆に言わせてもらうと、あなたも全般的におかしいと思います。
まず、質問に対する回答に全くなっていないという点。
あと、「上達速度を上げたい」などと一言も書いていないのですが、
一体どこからそう読み取って、「他人と同じコーディングルールで書け」などと余計なお世話を押し付けてきているのでしょうか。
先にも書きましたが、「今は自分一人で書いているだけ」なので勝手にさせていただきます。
あと万人に共通しうる「他人と同じコーディングルール」とやらのご教授もできたらお願いします。
できたらで結構ですが。
ちなみにO2とO3も試しましたが、O1と変わらないですね。
-O無しだとこの速度で、一体どこから速くなるんだろうと-O1を試したら速くなっていた、というだけの話です。
最適化無効で使うことがあり得ない、というのも今初めて知りました。ありがとうございます。
私から逆に言わせてもらうと、あなたも全般的におかしいと思います。
まず、質問に対する回答に全くなっていないという点。
あと、「上達速度を上げたい」などと一言も書いていないのですが、
一体どこからそう読み取って、「他人と同じコーディングルールで書け」などと余計なお世話を押し付けてきているのでしょうか。
先にも書きましたが、「今は自分一人で書いているだけ」なので勝手にさせていただきます。
あと万人に共通しうる「他人と同じコーディングルール」とやらのご教授もできたらお願いします。
できたらで結構ですが。
540デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:41:28.75ID:+TcxNu6P0 >>537
> 通常は、unsignedの後にintやlongなどと記述して用いるが、これを省略しunsignedとだけ記述した場合はunsigned intであるとして処理される。
> https://www.wdic.org/w/TECH/unsigned
そのようだが、ほぼ見ないと思うぞ。
まあ俺は仕様に詳しいわけではないし、俺の揚げ足取りをしたがっている粘着君に期待しよう。
彼は喜々としてヒャッハーしてくれるだろうし。
ただ何度も言ってるが、全般的に色々標準的ではないので、教科書なり参考サイトを見直した方がいい。
そこで意固地になられる理由も俺には分からないが。
> 通常は、unsignedの後にintやlongなどと記述して用いるが、これを省略しunsignedとだけ記述した場合はunsigned intであるとして処理される。
> https://www.wdic.org/w/TECH/unsigned
そのようだが、ほぼ見ないと思うぞ。
まあ俺は仕様に詳しいわけではないし、俺の揚げ足取りをしたがっている粘着君に期待しよう。
彼は喜々としてヒャッハーしてくれるだろうし。
ただ何度も言ってるが、全般的に色々標準的ではないので、教科書なり参考サイトを見直した方がいい。
そこで意固地になられる理由も俺には分からないが。
541デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 00:46:03.68ID:Q57qqdXG0 > 自分が書いた挿入ソートが正しい内容になっているかと、
じゃあまずチェックプログラムを作りなさい
@入力の列の値がすべて出力の列の値に含まれているかチェックする関数
A出力の列の大小関係が適切になっているかチェックする関数
@、Aが面倒だったら、同じ入力の列の値を使って
qsort()の結果と出力の列の結果が同一になっているかチェックする関数
いろんな大量の乱数列使って問題がおきなかったらとりあえず誤りは検出されなかったことにすればいい
で、その前に
こういった試験するためのテストドライバをまず作ってみなさい
試験するためにはこういった機能があるテストドライバ用の関数が必要になると考えられるからな
@擬似乱数を生成する
An個の乱数列を生成する
Bn個の列を複製する
Cn個の列をダンプする
というわけで作業に戻りなさい
じゃあまずチェックプログラムを作りなさい
@入力の列の値がすべて出力の列の値に含まれているかチェックする関数
A出力の列の大小関係が適切になっているかチェックする関数
@、Aが面倒だったら、同じ入力の列の値を使って
qsort()の結果と出力の列の結果が同一になっているかチェックする関数
いろんな大量の乱数列使って問題がおきなかったらとりあえず誤りは検出されなかったことにすればいい
で、その前に
こういった試験するためのテストドライバをまず作ってみなさい
試験するためにはこういった機能があるテストドライバ用の関数が必要になると考えられるからな
@擬似乱数を生成する
An個の乱数列を生成する
Bn個の列を複製する
Cn個の列をダンプする
というわけで作業に戻りなさい
542デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 00:46:05.25ID:+TcxNu6P0543デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 00:47:26.92ID:Q57qqdXG0 低学歴底辺ドカタのアドバイスなんか
聞く必要ないからな
聞く必要ないからな
544デフォルトの名無しさん (ワッチョイ a77b-KgdI)
2018/12/16(日) 00:50:09.46ID:JR5j914d0 半角まで出てきたwww
545デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 00:50:43.18ID:Q57qqdXG0 低学歴底辺ドカタ内部のオキテの話なんか
どうでもいいワケ
どうみても質問ではそんなどうでもいい話なんか書かれてないからな
どうでもいいワケ
どうみても質問ではそんなどうでもいい話なんか書かれてないからな
546デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 00:54:38.84ID:GOuL0+IB0 >>540
「unsigned int」と書くか「unsigned」と書くか、や、
「あなたがどう書いているかを見かけるか」なんて正直、本当にどうでも良い話です。本当にありがとうございました。
「あなたが思う『標準的』」とかも本当にどうでも良い話です。
揚げ足取りを従っている粘着君に期待するのは勝手なんですが、私を出しに使うのはご遠慮願いたいです。
もっというと他所でやってほしいです。どうでも良いので。
「unsigned int」と書くか「unsigned」と書くか、や、
「あなたがどう書いているかを見かけるか」なんて正直、本当にどうでも良い話です。本当にありがとうございました。
「あなたが思う『標準的』」とかも本当にどうでも良い話です。
揚げ足取りを従っている粘着君に期待するのは勝手なんですが、私を出しに使うのはご遠慮願いたいです。
もっというと他所でやってほしいです。どうでも良いので。
547デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 01:00:00.06ID:GOuL0+IB0 >>541
レスありがとうございます。
@入力の列の値がすべて出力の列の値に含まれているかチェックする関数
少ない要素数の配列では目でチェックしましたが、
100000の要素数の場合、これは行っていないので作ってみようと思います。
レスありがとうございます。
@入力の列の値がすべて出力の列の値に含まれているかチェックする関数
少ない要素数の配列では目でチェックしましたが、
100000の要素数の場合、これは行っていないので作ってみようと思います。
548デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 01:12:48.33ID:+TcxNu6P0 >>546
なるほど君も別の方向にコミュ障だから、>>528な訳か。
俺は別に君をダシにしたわけではなくて、
君の質問の>>536-537に関しては粘着君が喜々として答えてくれ、それが君の為にもなるだろう、と言っているだけ。
ちなみに君が欲しがっている回答は、現時点では情報不足で誰も正確には答えられないんだよ。
それも最初に言ったろ。
なんつーか、ゆとりはマジでこのパターン多過ぎ。
表面だけ丁寧で、中身がものすごく無礼、というか。
お前はお姫様/王子様ではないんだぜ。
逆に半角君も俺にはよく分からんが。
表面だけやたら人を罵倒しているが、実際はいちいちシコシコ回答してるから、手間はかかっている。
コンプレックスの固まりで他人を馬鹿にしたいだけなら粘着君みたいになるはずだし、
(馬鹿にするだけで一切自分の意見を言わない
=意見を言うとそこに反論される可能性が発生するから怖くて出来ない)
何がどうなると半角君になるのかよく分からん。
なるほど君も別の方向にコミュ障だから、>>528な訳か。
俺は別に君をダシにしたわけではなくて、
君の質問の>>536-537に関しては粘着君が喜々として答えてくれ、それが君の為にもなるだろう、と言っているだけ。
ちなみに君が欲しがっている回答は、現時点では情報不足で誰も正確には答えられないんだよ。
それも最初に言ったろ。
なんつーか、ゆとりはマジでこのパターン多過ぎ。
表面だけ丁寧で、中身がものすごく無礼、というか。
お前はお姫様/王子様ではないんだぜ。
逆に半角君も俺にはよく分からんが。
表面だけやたら人を罵倒しているが、実際はいちいちシコシコ回答してるから、手間はかかっている。
コンプレックスの固まりで他人を馬鹿にしたいだけなら粘着君みたいになるはずだし、
(馬鹿にするだけで一切自分の意見を言わない
=意見を言うとそこに反論される可能性が発生するから怖くて出来ない)
何がどうなると半角君になるのかよく分からん。
549デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 01:20:36.44ID:GOuL0+IB0550デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 01:26:00.46ID:+TcxNu6P0551デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 01:32:48.16ID:GOuL0+IB0552デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 01:35:58.25ID:nrAiyUBx0 >>534
C言語というよりコンピュータの基本を勉強した方がいい。CPUのレジストリは限られているから、本当にレジストリを使うマシン語がはかれたらOS、他のソフトウェアを阻害しかねない。
マルチプロセスではない昔のコンピュータならまだわかるが、CPUを占拠するようなコードを書くのは尋常ではない。
C言語というよりコンピュータの基本を勉強した方がいい。CPUのレジストリは限られているから、本当にレジストリを使うマシン語がはかれたらOS、他のソフトウェアを阻害しかねない。
マルチプロセスではない昔のコンピュータならまだわかるが、CPUを占拠するようなコードを書くのは尋常ではない。
553デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 01:37:47.75ID:nrAiyUBx0554デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 01:44:53.73ID:nrAiyUBx0555デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/16(日) 01:53:47.94ID:nrAiyUBx0 コーディングスタイルは個人の好みで、できればよい、動けばよいなどと言う人間がこのようなソート処理を作るはずがない。
速い遅いのこだわりもどこから出てくるのかわからない。
速い遅いのこだわりもどこから出てくるのかわからない。
556デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 01:57:29.82ID:GOuL0+IB0 >>552
メモリ周りの理解が深まると思い、C言語を学習してます。
レジストリ、というのはレジスタのことでしょうか?
register指定子ついてですが、
それをそのまま適用するどうかはコンパイラ依存だと認識しているのですが違うのでしょうか。
これら以外にレジスタを必要とする値や演算があったならば、それを采配するのはこのソートを行うプログラムではなくてOSではないでしょうか。
そもそも、たった3個のポインタ変数がCPUのレジスタを占拠してしまうほどのサイズを持っている変数とは思えません。
>>553
ふざけていませんし、そもそもここで質問する前提にコーディングしていませんでしたので、
「自分の分かりやすいように」記述していました。
つまり「可読性」は「自分にとって可読」であるものです。読みにくければ申し訳ないですね。
まぁこの数行程度のソースで読みにくいと騒ぐ上級者様がいるとは思えませんが。
あとさっきも書きましたが「コーディング規約」について質問しているのではありません。
この数行が読みにくくてしょうがない!というのであれば読んでいただかなくて結構です。
読んでくださる方に聞いているので。
確かに省略しすぎるのは自分もどうかと思っていますよ。
初めて「printf」なんて見たときは「なんのfやねん」って思いましたから。
メモリ周りの理解が深まると思い、C言語を学習してます。
レジストリ、というのはレジスタのことでしょうか?
register指定子ついてですが、
それをそのまま適用するどうかはコンパイラ依存だと認識しているのですが違うのでしょうか。
これら以外にレジスタを必要とする値や演算があったならば、それを采配するのはこのソートを行うプログラムではなくてOSではないでしょうか。
そもそも、たった3個のポインタ変数がCPUのレジスタを占拠してしまうほどのサイズを持っている変数とは思えません。
>>553
ふざけていませんし、そもそもここで質問する前提にコーディングしていませんでしたので、
「自分の分かりやすいように」記述していました。
つまり「可読性」は「自分にとって可読」であるものです。読みにくければ申し訳ないですね。
まぁこの数行程度のソースで読みにくいと騒ぐ上級者様がいるとは思えませんが。
あとさっきも書きましたが「コーディング規約」について質問しているのではありません。
この数行が読みにくくてしょうがない!というのであれば読んでいただかなくて結構です。
読んでくださる方に聞いているので。
確かに省略しすぎるのは自分もどうかと思っていますよ。
初めて「printf」なんて見たときは「なんのfやねん」って思いましたから。
557デフォルトの名無しさん (ワッチョイ a705-DFdf)
2018/12/16(日) 02:02:53.44ID:zisHaYIc0 voidはまた質問者の気分を害して悦に浸ってるのか。こいつマジでスレの害悪だわ。
558デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 02:04:29.37ID:GOuL0+IB0 >>554
良いも悪いも、そもそもサンプルなんて読んでいませんし、挿入ソートがどういうモノか、というのだけを読んで書いていますので。
そもそも、ここもそのネット上なわけで。私が書いている関数の内容が正しく動くかや、あなたが今書いていることも信用していいんですかね?
疑い始めたらきりがありませんよ。
くだらない議論なので無価値ですね。
>>555
作るはずがない、と言われても作りました。何の根拠が?w
速い遅いのこだわり、とか書いていますが、そもそもこだわっていません。
「なんで自分の書いた挿入ソートのコンパイルが、最適化の有無でこんなに速度が変わるんだろう」というふとした疑問を書いているだけです。
私が、「速い挿入ソートが書きたい」なんて一言でも書いたでしょうか?
良いも悪いも、そもそもサンプルなんて読んでいませんし、挿入ソートがどういうモノか、というのだけを読んで書いていますので。
そもそも、ここもそのネット上なわけで。私が書いている関数の内容が正しく動くかや、あなたが今書いていることも信用していいんですかね?
疑い始めたらきりがありませんよ。
くだらない議論なので無価値ですね。
>>555
作るはずがない、と言われても作りました。何の根拠が?w
速い遅いのこだわり、とか書いていますが、そもそもこだわっていません。
「なんで自分の書いた挿入ソートのコンパイルが、最適化の有無でこんなに速度が変わるんだろう」というふとした疑問を書いているだけです。
私が、「速い挿入ソートが書きたい」なんて一言でも書いたでしょうか?
559デフォルトの名無しさん (ワッチョイ a77b-KgdI)
2018/12/16(日) 02:11:16.40ID:JR5j914d0 レジストリwwwww
560デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 02:14:08.51ID:GOuL0+IB0 さて、夜はふけてきましたが、
一部やかましいだけで有用な情報も得られなさそうなので、そろそろ休みます。
私が原因でスレをお騒がせしてしまって申し訳ございませんでした。
もし、挿入ソートが速くなる理由等分かるかたいましたら、また別の日にご教授頂けると嬉しいです。
ひとまずはテスト用のドライバ関数を作ってみたいと思います。
>>541さんありがとうございました。
みなさまおやすみなさい。
一部やかましいだけで有用な情報も得られなさそうなので、そろそろ休みます。
私が原因でスレをお騒がせしてしまって申し訳ございませんでした。
もし、挿入ソートが速くなる理由等分かるかたいましたら、また別の日にご教授頂けると嬉しいです。
ひとまずはテスト用のドライバ関数を作ってみたいと思います。
>>541さんありがとうございました。
みなさまおやすみなさい。
561デフォルトの名無しさん (アメ MM47-KgdI)
2018/12/16(日) 02:26:17.39ID:cTh7msTfM 自演お疲れさまでした
562デフォルトの名無しさん (アウアウカー Sa6b-8Py6)
2018/12/16(日) 02:31:39.01ID:GdI2y+/Wa おやすみなさい
563デフォルトの名無しさん (アウアウカー Sa6b-8Py6)
2018/12/16(日) 02:44:07.72ID:GdI2y+/Wa 経験としては、O3にするとバクが顕在化するんであんまり使わないですね。
自分だけなら対応できるけど100人で作ってるプログラムはなかなか難しい。
自分だけなら対応できるけど100人で作ってるプログラムはなかなか難しい。
564デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/16(日) 04:45:04.91ID:lv3vm4Nk0 逆だろ
バグを顕在化させやすい条件を故意に作るんだよ
ストレステストとかそういうのだし
バグを顕在化させやすい条件を故意に作るんだよ
ストレステストとかそういうのだし
565デフォルトの名無しさん (ワッチョイ 9f2a-UKyl)
2018/12/16(日) 08:41:25.08ID:+JTyra3G0 >>525
一般に最適化は、常に同じ結果を出力する最短の計算に変換される。
ソートと書いてあるが、コードに特に比較条件がないので、これは単に
例えば(1 2 3 4 5)->(5 4 3 2 1)と入れ替えている。
元のコードは4+3+2+1=10の入れ替えが発生するが、単に入れ替えるだけなら、
5を1と4を2と、・・・と入れ替えればいい。計算数は2となる。
大小関係の確認を正しく入れれば、他のソートと同様なるかもしれない。
と、以上のように、俺が思っているだけなので、確認した方がいい。
一般に最適化は、常に同じ結果を出力する最短の計算に変換される。
ソートと書いてあるが、コードに特に比較条件がないので、これは単に
例えば(1 2 3 4 5)->(5 4 3 2 1)と入れ替えている。
元のコードは4+3+2+1=10の入れ替えが発生するが、単に入れ替えるだけなら、
5を1と4を2と、・・・と入れ替えればいい。計算数は2となる。
大小関係の確認を正しく入れれば、他のソートと同様なるかもしれない。
と、以上のように、俺が思っているだけなので、確認した方がいい。
566デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 09:54:31.21ID:+TcxNu6P0 おーい粘着!生きてるか!
折角俺様が「registerなんて見ねえ!」なノリなんだから、
一生懸命仕様を調べて突っ込みに来いよ!
お前の存在価値なんてそれくらいしかないんだし。
>>557
ゆとりなお前らはそれが駄目なんだよ。話が全く進まないだろ。
俺が間違っていることを言っていると思うのなら、ズバッと突っ込みに来るべきなのさ。
お前らはそれをする度胸もないまま、文句しか言えないわけでさ。
ゆとりが何万人いても何も作れなかったのはそれが根本的原因だよ。
少なくとも半角君は前に進むレスをしてるだろ。
彼が10人いれば確実に事態は進展する。
纏まることはないと思うが、それでも烏合の衆でしかないお前らより数段マシだ。
その言い方だと、お前も>>525のコードのやばさが分かってないだろ。
その他ゆとりも大概そんな感じだが。
それで粘着するのはお前らが全員馬鹿だと自身で証明しているようなものなのだが、
それも理解出来ないのだろ?
導くつもりなら、本当に見てやらないといけないのは「根本的に方向性を間違ってないか」であって、
完全にずれていると分かっている初心者の質問にも優しく答えてあげることではないんだよ。
それは逆に迷惑だと俺は思うがな。本人の為にならない。
とはいえ、どういうレスをするかは本人の自由だし、お前らなりのポリシーがあればやればいい。
それで「ゆとり専用:ぼくにやさしいすれ」が成立するのならそれもありだろう。
問題は、お前らゆとりは何もしない/出来ない癖に文句ばかり言ってるわけでさ。
それが本当にいけない。
折角俺様が「registerなんて見ねえ!」なノリなんだから、
一生懸命仕様を調べて突っ込みに来いよ!
お前の存在価値なんてそれくらいしかないんだし。
>>557
ゆとりなお前らはそれが駄目なんだよ。話が全く進まないだろ。
俺が間違っていることを言っていると思うのなら、ズバッと突っ込みに来るべきなのさ。
お前らはそれをする度胸もないまま、文句しか言えないわけでさ。
ゆとりが何万人いても何も作れなかったのはそれが根本的原因だよ。
少なくとも半角君は前に進むレスをしてるだろ。
彼が10人いれば確実に事態は進展する。
纏まることはないと思うが、それでも烏合の衆でしかないお前らより数段マシだ。
その言い方だと、お前も>>525のコードのやばさが分かってないだろ。
その他ゆとりも大概そんな感じだが。
それで粘着するのはお前らが全員馬鹿だと自身で証明しているようなものなのだが、
それも理解出来ないのだろ?
導くつもりなら、本当に見てやらないといけないのは「根本的に方向性を間違ってないか」であって、
完全にずれていると分かっている初心者の質問にも優しく答えてあげることではないんだよ。
それは逆に迷惑だと俺は思うがな。本人の為にならない。
とはいえ、どういうレスをするかは本人の自由だし、お前らなりのポリシーがあればやればいい。
それで「ゆとり専用:ぼくにやさしいすれ」が成立するのならそれもありだろう。
問題は、お前らゆとりは何もしない/出来ない癖に文句ばかり言ってるわけでさ。
それが本当にいけない。
567デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/16(日) 10:01:21.28ID:aG56rBWDa >>565
シェルソートとかコムソートじゃねえかなそれは
シェルソートとかコムソートじゃねえかなそれは
568デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/16(日) 10:11:10.20ID:lv3vm4Nk0569デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 10:18:48.77ID:+TcxNu6P0 >>568
それで、お前は525のコードに
・問題がない、のか、
・俺が指摘してないもっと大きな問題がある、のか
を言えない/意図的に言ってないだろ。
それがお前らの最悪なところだよ。
突っ込まれるのが怖くて言えないのだとは思うが、
だからゆとりは死ななければ直らない、と言ってるわけでさ。
で?どっちなんだ?
後者なら堂々とマウント取りに来いよ。
それで、お前は525のコードに
・問題がない、のか、
・俺が指摘してないもっと大きな問題がある、のか
を言えない/意図的に言ってないだろ。
それがお前らの最悪なところだよ。
突っ込まれるのが怖くて言えないのだとは思うが、
だからゆとりは死ななければ直らない、と言ってるわけでさ。
で?どっちなんだ?
後者なら堂々とマウント取りに来いよ。
570デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/16(日) 11:10:40.38ID:lv3vm4Nk0571デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 11:39:09.26ID:Q57qqdXG0 というワケで評価用のテストドライバをテキトーにさくっとオレが書いてやったぞ
https://ideone.com/FwRQ0E
あとはテキトーにやりなさい
オレのエレガントなテストドライバ関数群を使えば
いろんな整列アルゴリズムをバカでもチョンでも簡単に評価できる
@乱数列生成 :aho_malloc_random_data()
A列複製 :aho_malloc_clone_data()
B大小関係チェック:aho_check_seq1()
C要素存在チェック:aho_check_seq2()
リファレンス評価用に標準ライブラリqsort()もあわせて評価した
100,000件辺りの秒数で件数増加に伴うゴミっぷりの程度も評価している
このスレの低学歴知恵遅れたちが騒いでるようなコードについての問題は一切ない
vs2017でも適切に期待通りに動作することは確認した
評価する前から予見できてたことだが
挿入ソートがゴミすぎて困ることだけは改めて分かる
それ以外一切問題ない
低学歴知恵遅れが騒ぐコトはいつも的外れなワケ
https://ideone.com/FwRQ0E
あとはテキトーにやりなさい
オレのエレガントなテストドライバ関数群を使えば
いろんな整列アルゴリズムをバカでもチョンでも簡単に評価できる
@乱数列生成 :aho_malloc_random_data()
A列複製 :aho_malloc_clone_data()
B大小関係チェック:aho_check_seq1()
C要素存在チェック:aho_check_seq2()
リファレンス評価用に標準ライブラリqsort()もあわせて評価した
100,000件辺りの秒数で件数増加に伴うゴミっぷりの程度も評価している
このスレの低学歴知恵遅れたちが騒いでるようなコードについての問題は一切ない
vs2017でも適切に期待通りに動作することは確認した
評価する前から予見できてたことだが
挿入ソートがゴミすぎて困ることだけは改めて分かる
それ以外一切問題ない
低学歴知恵遅れが騒ぐコトはいつも的外れなワケ
572デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 11:49:03.98ID:+TcxNu6P0 >>570
それはお前のことだよゆとり。
そしてだからこそお前らは全く進歩せず、今でも池沼ゆとりのままな訳だ。
お前らは本当にワンパターンで、コミュ障も酷い。
それをパターン暗記で誤魔化そうとしているわけだが、そりゃ無理だ。
実際、それはお前にとって何ももたらさないし、その積み重ねが今な訳でさ。
少なくとも俺は何ヶ所も訂正すべき点を具体的に指摘している。
それに対してマウントを取るつもりなら、もっと重大なことを具体的に指摘せねばならない。
それをお前は出来ないから、どこかで見たフレーズで誤魔化そうとしているわけでさ。
ゆとりはマジでこれが酷い。
非ゆとりは、基本的には、自分で調べて理論武装し、挑んでくる。
この過程で成長する。だから、その後で紛糾しても、少なくとも当人には利益があるし、
当然勘違いしてたらぶっ叩かれるので修正もされる。つまり確実に本人は前進する。
お前らはこの過程をやろうとしないから、全く成長しないし、実際、してない。
だから今のお前が具体的に何も言えないわけでさ。
それを認めるのならまだしも、それをコピペフレーズで誤魔化そうとしているのだから重傷だよ。
聞くは一時の恥、聞かぬは一生の恥、って奴だよ。
リアルやID制のサイトならまだしも、
匿名掲示板ですら『恥』と思って聞けないその虚栄心では、リアルでは全く聞けてないだろ。
だからお前らは相変わらず池沼な訳でさ。
それはお前のことだよゆとり。
そしてだからこそお前らは全く進歩せず、今でも池沼ゆとりのままな訳だ。
お前らは本当にワンパターンで、コミュ障も酷い。
それをパターン暗記で誤魔化そうとしているわけだが、そりゃ無理だ。
実際、それはお前にとって何ももたらさないし、その積み重ねが今な訳でさ。
少なくとも俺は何ヶ所も訂正すべき点を具体的に指摘している。
それに対してマウントを取るつもりなら、もっと重大なことを具体的に指摘せねばならない。
それをお前は出来ないから、どこかで見たフレーズで誤魔化そうとしているわけでさ。
ゆとりはマジでこれが酷い。
非ゆとりは、基本的には、自分で調べて理論武装し、挑んでくる。
この過程で成長する。だから、その後で紛糾しても、少なくとも当人には利益があるし、
当然勘違いしてたらぶっ叩かれるので修正もされる。つまり確実に本人は前進する。
お前らはこの過程をやろうとしないから、全く成長しないし、実際、してない。
だから今のお前が具体的に何も言えないわけでさ。
それを認めるのならまだしも、それをコピペフレーズで誤魔化そうとしているのだから重傷だよ。
聞くは一時の恥、聞かぬは一生の恥、って奴だよ。
リアルやID制のサイトならまだしも、
匿名掲示板ですら『恥』と思って聞けないその虚栄心では、リアルでは全く聞けてないだろ。
だからお前らは相変わらず池沼な訳でさ。
573デフォルトの名無しさん (ワッチョイ 1e80-2dqZ)
2018/12/16(日) 11:54:04.82ID:Q57qqdXG0 コレで挿入ソートがゴミ同然なのが
一目瞭然で分かる
sort(>>525のコード)
https://i.imgur.com/I3aSs5K.png
qsort
https://i.imgur.com/gdiXaoz.png
つまりもともとこんなゴミみたいなシロモノを
時間かけて最適化するのはムダ
一目瞭然で分かる
sort(>>525のコード)
https://i.imgur.com/I3aSs5K.png
qsort
https://i.imgur.com/gdiXaoz.png
つまりもともとこんなゴミみたいなシロモノを
時間かけて最適化するのはムダ
574デフォルトの名無しさん (ワッチョイ d3b3-JU2d)
2018/12/16(日) 11:54:37.67ID:W0MJyJGm0575デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/16(日) 12:07:06.08ID:fTV/MXSFa ソートの性能は机上でわかるから、最適化について教えてくれや。
あとスーパースカラーの効き方とか絡めて語ってくれると助かるわ。
あとスーパースカラーの効き方とか絡めて語ってくれると助かるわ。
576デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/16(日) 12:24:14.24ID:+TcxNu6P0 >>575
× 教えてくれや
× 助かるわ
お前らゆとりが駄目なのはそこなんだよ。他力本願過ぎ。
そして指摘しても糞女と同様開き直るし、救いようがない。
お前がどういう風に分かってないかなんて誰も知らないのだから、
お前自身がいろいろ調べて、
○ 俺的にはこう思うんだが、どうかな?
とやらないと駄目なんだよ。
具体的に上手くやったのは497で、497-499-502-503とならざるを得ない。
そのサイトには「シグナルでは使う」と書いていたから、それを否定する俺の見解を質してきたわけだ。
このやりとりは少なくとも彼には利益があっただろう。
そしてこの積み重ねが差になっていく。
お前も含めて、粘着共は何一つ意見を言えない。言う知能すらないからだ。
その差がどうして生じたのか、いちいち教えてやってんだからよく考えろよマジで。
× 教えてくれや
× 助かるわ
お前らゆとりが駄目なのはそこなんだよ。他力本願過ぎ。
そして指摘しても糞女と同様開き直るし、救いようがない。
お前がどういう風に分かってないかなんて誰も知らないのだから、
お前自身がいろいろ調べて、
○ 俺的にはこう思うんだが、どうかな?
とやらないと駄目なんだよ。
具体的に上手くやったのは497で、497-499-502-503とならざるを得ない。
そのサイトには「シグナルでは使う」と書いていたから、それを否定する俺の見解を質してきたわけだ。
このやりとりは少なくとも彼には利益があっただろう。
そしてこの積み重ねが差になっていく。
お前も含めて、粘着共は何一つ意見を言えない。言う知能すらないからだ。
その差がどうして生じたのか、いちいち教えてやってんだからよく考えろよマジで。
577デフォルトの名無しさん (ワッチョイ 06f3-3flP)
2018/12/16(日) 12:25:29.13ID:XNrlNwMM0 >>525
挿入ソートの場合は、挿入すべき場所に直接挿入すればよいので、
swapで何度も入れ替えないようにして、必要なところに直接挿入するのがいいかもしれません。
一瞬バブルソートのように見えて、挿入ソートってこんなのだっけ?と思いました。
最適化についてはこのコードだけではなんともいえませんが、
大まかでよいのであれば、全体をclock関数で時間計測したように
この関数の中で経過時間を計測してみるのもよいと思います。
効果のある場所が限定できると推測もしやすくなりますので。
挿入ソートの場合は、挿入すべき場所に直接挿入すればよいので、
swapで何度も入れ替えないようにして、必要なところに直接挿入するのがいいかもしれません。
一瞬バブルソートのように見えて、挿入ソートってこんなのだっけ?と思いました。
最適化についてはこのコードだけではなんともいえませんが、
大まかでよいのであれば、全体をclock関数で時間計測したように
この関数の中で経過時間を計測してみるのもよいと思います。
効果のある場所が限定できると推測もしやすくなりますので。
578デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/16(日) 12:47:37.29ID:GOuL0+IB0 >>571
おおお、私の挿入ソートの為にありがとうござます。お手数おかけしました。
ちゃんと内容を読めていないので、時間を取ってテストドライバのソースを読んでみたいと思います。
一旦ひとまとめすると、
一応私の書いたソートは動いていて、ちゃんと「挿入ソート」になっているという感じでしょうか。
やはり、>>575さんもおっしゃる通り、なぜ-O無しと-O1の最適化の有無で、ソート時間が大幅に変わるのかが気になります。
コンパイラって不思議ですね。
>>577さん、ありがとうございます。
挿入ソート内での時間計測もやってみたいと思います。
この挿入ソートを作る前にバブルソートも作ったのですが、
以下の様に書きました。
void bubble_sort(unsigned array[], unsigned length)
{
register unsigned *l = &array[0];
register unsigned *r = &array[length - 1];
while (r > l) {
while (l < r) {
if (*l > *r) {
swap(l, r);
}
l++;
}
l = &array[0];
r--;
}
}
これに関しては、最適化の有無で極端にソート時間が変わる、というのはありませんでした。
と言っても最適化有効の方が速くはなっていましたが。
おおお、私の挿入ソートの為にありがとうござます。お手数おかけしました。
ちゃんと内容を読めていないので、時間を取ってテストドライバのソースを読んでみたいと思います。
一旦ひとまとめすると、
一応私の書いたソートは動いていて、ちゃんと「挿入ソート」になっているという感じでしょうか。
やはり、>>575さんもおっしゃる通り、なぜ-O無しと-O1の最適化の有無で、ソート時間が大幅に変わるのかが気になります。
コンパイラって不思議ですね。
>>577さん、ありがとうございます。
挿入ソート内での時間計測もやってみたいと思います。
この挿入ソートを作る前にバブルソートも作ったのですが、
以下の様に書きました。
void bubble_sort(unsigned array[], unsigned length)
{
register unsigned *l = &array[0];
register unsigned *r = &array[length - 1];
while (r > l) {
while (l < r) {
if (*l > *r) {
swap(l, r);
}
l++;
}
l = &array[0];
r--;
}
}
これに関しては、最適化の有無で極端にソート時間が変わる、というのはありませんでした。
と言っても最適化有効の方が速くはなっていましたが。
579デフォルトの名無しさん (ワッチョイ a77f-3flP)
2018/12/16(日) 13:49:55.21ID:1E8BbQgX0 乱数で特定のデータを作って、それがソートされてるっぽいから
アルゴリズムは正しい・・・って正しいのか?
アルゴリズムは正しい・・・って正しいのか?
580デフォルトの名無しさん (ワッチョイ da80-Da8q)
2018/12/16(日) 14:02:59.03ID:YrIrW4/W0 ほぼ整列済みのにデータに対してだけ速い挿入ソートがランダムなデータにはクッソ弱いのなんて当たり前じゃん
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】日本代表MF 中村敬斗 ボリビア戦のスーパーゴールに「惚れるわ」「痺れる程のゴールこれでご飯何杯いけるのよ」 [阿弥陀ヶ峰★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 自閉症が「んなっしょい」と連呼するお🏡
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
- 結婚しないやつは異性は嫌いなの?
