1 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:20:06.25 ID:o3PNwIlC0.net] 次スレを立てる時は本文の1行目に以下を追加して下さい。 !extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part134 mevius.5ch.net/test/read.cgi/tech/1516406742/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1509780815/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
730 名前:コードを書いてみ。 そしたらそのコードの中でオーバーフローするから無限ループだね。 そんな言語が実用だったとでも? [] [ここ壊れてます]
731 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:15:00.22 ID:sI+Q43v80.net] >>705 例外については「お前は頭が悪すぎて会話にならん」とだけ コンテナは 「C++の方が遅い例だけ扱って、速い例は自分の想定と違う」 という主張を続けるならお前と会話しても無意味だ
732 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:16:02.69 ID:sI+Q43v80.net] IDが変わってしまった まあそんな事はどうでもいいか
733 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:18:43.30 ID:PbE4ojLD0.net] ちなみに速度比較についてはいろんな人が様々やってるけど、 俺的にまあ公平だと思えるのはこれだね。俺の体感ともだいたい一致する。 おれはC++は1.1-1.3位かと思っているけど。 > C 1.00 > C++ 1.56 > Java 1.89 > C# 3.14 > https://jaxenter.com/wp-content/uploads/2017/09/energy-efficient-languages-768x689.png > https://jaxenter.com/energy-efficient-programming-languages-137264.html C++の機能をバリバリに使ったら、そりゃJavaと大して変わらんだろ、ということになるし。 スマポってのは良くできたGCとコストはほぼ同じだし。(GCは全自動なだけ) Javaは以前は3程度だったが、ゴリゴリチューニングしてきているらしい。
734 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:19:13.36 ID:sI+Q43v80.net] >>706 速度優先のコード前提ってことなら 保護されまくった高機能汎用コンテナを使うこと自体アホってことになるねえ さらに条件を加えちゃってもう
735 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:19:20.53 ID:PbE4ojLD0.net] >>709 僕は知りません、まで読んだ。
736 名前:デフォルトの名無しさん [2018/05/12(土) 15:20:34.21 .net] >>708 なんで喧嘩腰なのかがよくわからないけど、 C言語では「n <= DBL_MAX」というif文が必要ってことだろ? double p = 1.; int n; for (n = 1 ; n < DBL_MAX; n++){ p *= n; }
737 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:23:37.01 ID:PbE4ojLD0.net] >>714 いやオーバーフローするのは p だろ。 と思ったが、もしかして n の方なのか?
738 名前:デフォルトの名無しさん [2018/05/12(土) 15:33:27.39 .net] >>715 なんでもない、忘れて><
739 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:48:51.69 ID:PbE4ojLD0.net] >>716 通じたようで何より。 だからオーバーフローの検出はソフトウェアでは辛くて、通常はハードウェアのはずだ。 そしてその場合は割り込みとなり、Cの場合は割り込みハンドラにコードを書くことになる。 C++の場合は『そこから例外処理ルーチンまで引っ張ってきてくれるコード』をコンパイラが用意し、 ユーザーのcatchコードを実行する。つまり、上記『』内コードでラップされてる分だけ遅い。 (実際にはラップだけではなくスタックウォークも行うから相当遅いはずだが) なんだが、実際俺はゼロ割例外しか見てないからオーバーフローについてはよくは知らん。 ハードウェア的には上記の動作になる。 一般的にはオーバーフロー例外は出ない環境(無限大に貼り付けるだけ)で使うのではないかと。 Cではアホみたいにゼロ割チェックやってるよ。 これはC++でも同じだと思うが、C++erはやらないのが作法なのか? とはいえ、ゼロ割はCMP+Brachであり、通常は分岐しないから、x86ではほぼゼロコストだ。 割り込みは関数呼び出し自体が遅くなるから、結局これもCの方が速いはずだが。
740 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 16:03:54.80 ID:68o7JYmcM.net] >>712 お前話の流れが読めてないだろ w >>638 から読み直せ、バカ
741 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 16:11:14.40 ID:eFTG6CfX0.net] overflowてexception吐くんだっけか
742 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 16:35:26.68 ID:68o7JYmcM.net] >>708 バカはこれだから w isfinite( ) マクロとかも知らんのかよ
743 名前: mailto:sage [2018/05/12(土) 16:40:25.40 ID:HeMwMf3D0.net] >>717 オー
744 名前:oーフローで例外や割り込みが起動することはないのでは? 普通、無符号ならキャリー、符号有りならオーバーフローのどっちかのフラグで判定するかと [] [ここ壊れてます]
745 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:14:24.19 ID:D96wT16B0.net] unsigned long long array[100000000]; ↑ ここに同じファイルから乱数を読み込んで比較してみた clのオプションは /Ox /arch:AVX gccのオプションは -O3 -mtune=sandybridge qsort cl 27.171[sec] gcc 26.139[sec] std::sort
746 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:16:00.99 ID:D96wT16B0.net] 途中で書き込まれてしまった unsigned long long array[100000000]; ↑ ここに同じファイルから乱数を読み込んで比較してみた clのオプションは /Ox /arch:AVX gccのオプションは -O3 -mtune=sandybridge qsort cl 27.171[sec] gcc 26.139[sec] std::sort cl 13.456[sec] gcc 9.103[sec] おまけ std::sortにstd::execution::parを指定してみた cl 3.288[sec] gcc 未実装
747 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:16:40.49 ID:D96wT16B0.net] >>690 が正解だったね
748 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:49:15.49 ID:D96wT16B0.net] >>698 そこの2通目に箇条書きしてある部分は 1992年当時に俺が思っていたことに近い ・例外がクソ うん、マジクソだ C++11以後マシになったが下痢が治ったという程度 ・newいらねー 演算子newを初めて聞いた瞬間、 mallocの設計理念が大声でわめき立てた C++11以後ブーイングが更にエスカレートした ・キーワードclassいらねー 禿自身が認めやがった ・・・しかし、それがなぜ>>685 への反駁に引用されるのかがわからん
749 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:15:21.20 ID:VFvkGYoW0.net] >>721 大抵のプロセッサの浮動小数点ユニットにはオーバーフローしたら例外を発生させる機能がある それを有効にしてるかどうかは環境による あとC言語の話で割込ハンドラーとか言ってる>>717 は単なる知ったかなのでスルーした方がいい
750 名前: mailto:sage [2018/05/12(土) 18:29:10.59 ID:HeMwMf3D0.net] >>726 >大抵のプロセッサの浮動小数点ユニットには 「浮動小数点ユニット」なんですね、ここで確認しておきます。 >オーバーフローしたら例外を発生させる 演算結果が ±inf になることを「オーバーフロー」と言うのですか?ちょっと耳慣れないですね >>726 >C言語の話で割込ハンドラー lsi-c ver3, MS-C ver6 あたりでは、そういうのもあったと記憶してます、 matherr() ですね だから >>717 はあながち間違いとはいいきれない面もあります
751 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:40:33.53 ID:PbE4ojLD0.net] >>725 世間では「どちらのコンパイラを使うか」ではなく、 「どちらのスタイルで書いているか」でCとC++を区別してるんだよ。
752 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:42:16.14 ID:VFvkGYoW0.net] >>727 > 演算結果が ±inf になることを「オーバーフロー」と言うのですか?ちょっと耳慣れないですね それ反対、オーバーフローしたら結果をinfにしてるだけ
753 名前: mailto:sage [2018/05/12(土) 18:49:16.74 ID:HeMwMf3D0.net] >>729 inf も NaN も浮動小数点表現の中にあるので「オーバーフロー」と呼びにくい、と思っています、まあ人それぞれ
754 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 19:04:56.38 ID:VFvkGYoW0.net] >>730 だから誰もinfがオーバーフローとは言ってないだろ オーバーフローしたらそれっぽい値としてinfを入れてるだけ
755 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 19:24:22.69 ID:yANyZ1HYd.net] >>728 それなら Cスタイル、C++スタイル と言えば良い CかC++かは当然コンパイラで決まる C++は元々上位互換を目標に作られた物だ
756 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 19:29:38.17 ID:VFvkGYoW0.net] >>728 お前の変な世間はどうでもいい
757 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 19:48:04.17 ID:PbE4ojLD0.net] >>732 > C++は元々上位互換を目標に作られた物だ そうだ。そしてだからこそ、スタイルで区別されるんだよ。 元々C++はCの完全上位互換だった。 だから君らの定義なら、C++が登場したときから全てのCは消滅し、C++になっているはずだろ。 実際はそうじゃない。 「○○のコードはCで書かれています」 「○○のコードはC++で書かれています」というのは、 世間では俺の言った定義(>>676 )で使われてる。 その後、CとC++が仕様的に分離してしまったから、 今現
758 名前:在はCコンパイラで通るコードがC++コンパイラで通らないケースが存在する。 だから今は明確に「どちらのコンパイラを使うか」を想定しておく必要があるが、 それもコーナーケースで、 大半の「Cのコード」はC++コンパイラでもそのまま通る。 お前らがC++信者でC++の範囲を広く取りたいのは分かるが、世間はそうじゃない。 C++がCの仕様を全て取り込んだら、 お前らにとってはCは消滅、全てはC++になり、お前らは幸せになれるだろうさ。 ただ、その後も世間はCとC++を引き続き区別するだろうよ。 [] [ここ壊れてます]
759 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 20:09:12.78 ID:sI+Q43v80.net] お前用語の定義の説明とかどうでもいい スタイルの意味ならスタイルと書け
760 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 20:09:24.63 ID:D4Rf+0xLd.net] >>734 それは嘘だなぁ extern "C"が無いとCライクに見えるオブジェクトを吐かない事が常となっているC++(コンパイラ)について、いくらpure Cライクなコードを書いてもpure Cでないextern "C"を書かないとCライクに見えるオブジェクトは吐けないってそれはもうC++でしょう 他の内容にも誤りがあって君の世間ではCライクなコードであればCで書いたと宣言していいらしいけど、少しでも世間のOSSのコードを見て回れば良いよ Cで書かれているのはCだから
761 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 20:30:38.36 ID:PbE4ojLD0.net] お前らが誤解したままでいるのはお前らの自由だが、 お前らの定義だと、CとObjective-Cを区別できないだろ。 あれはCの完全上位互換で、Cコードそのまま食えるらしいからね。 お前らも少し考えれば自分で矛盾に気づけるはずだが。
762 名前:デフォルトの名無しさん [2018/05/12(土) 20:58:42.38 ID:cTj25fOrM.net] >>734 それは言い過ぎでしょ。 流石にそれは、世間を知らなすぎ、と言われても仕方ない意見にみえてきたなあ。。。
763 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 21:57:33.16 ID:PbE4ojLD0.net] ならもうちょっと分かりやすい説明をしてやる。 >>677-678 について、お前らの定義では『コード』について議論できないだろ。 俺の定義では、677は「Cのコード」で、678は「C++のコード」だ。コンパイラに依らない。 お前らの定義では、678は明確に「C++のコード」だが、677については、 「Cコンパイラを通した場合、677はCのコード」 「C++コンパイラを通した場合、677はC++のコード」 になってしまうだろ。 それだと、CとC++の『コード』の速度比較自体が定義できないだろ。 677をCコンパイラを通した場合とC++コンパイラを通した場合の速度差は、 「コードの差」ではなく、「コンパイラの差」なんだよ。 当たり前だろ。 というか、C++erもここまでレベルが落ちたのか。世も末だな。
764 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 22:16:57.78 ID:DXsEIRbfM.net] std::filesystemで片方のスレッドでファイルを出力し もう片方のスレッドでファイルが存在していたら読み込むというプログラムを書いた場合 出力中に存在すると判定されて読み込んでしまいそうですが、 そんなことないでしょうか? もし読み込んでしまう場合、自力でフラグ管理かMutexを使うなどして 判定する以外の方法はあるでしょうか?
765 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 23:29:24.63 ID:sI+Q43v80.net] >>739 お前が考えた定義とかどうでも良いって言ってるの
766 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 23:53:40.44 ID:PbE4ojLD0.net] というか何でお前らそんなに必死なんだ? 俺の言ってる定義が世間一般の定義だよ。 そうじゃなきゃ『コード』の善し悪しの議論が出来ないだろ。自明だと思うが。 繰り返すが、C++がCよりも遅いのは事実で、それもググレばいくらでも出てくるだろ。 ただこれはC++そのものよりもオブジェクト指向の弊害だが。 chrismdp.com/2015/04/how-i-doubled-the-speed-of-my-game-by-giving-up-on-c-plus-plus/ https://www.quora.com/Why-is-object-oriented-programming-OOP-slower-than-procedural 逆に言えば、C++の機能をふんだんに使ったとして、Javaに対する速度優位がどれだけあると思ってるの? C++で世界が再統一されることは、今のC++の仕様/方向
767 名前:性ではあり得ない。C++ではCを殺しきれない。 だからRustが生まれた。 >>711 の表を信じるなら、RustはCの代替としてはC++以上に上手く行ってる。 [] [ここ壊れてます]
768 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 23:56:27.27 ID:sI+Q43v80.net] お前の定義じゃないと議論が出来ないのは おまえがアホだから
769 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 00:02:56.89 ID:VV8A9gRv0.net] 定義の布教なんかより技術的な会話をしろよ
770 名前:デフォルトの名無しさん [2018/05/13(日) 00:03:10.09 ID:C4Q8t1mmM.net] 必死なのはどちらなんだろう…
771 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 00:20:47.86 ID:OjngaL1la.net] C++スレらしい流れだと思うよ
772 名前: mailto:sage [2018/05/13(日) 00:59:58.71 ID:eWw2CnRZ0.net] 面白くていいじゃないですかぁ… ここで linus メールをコピペ(省略)
773 名前: mailto:sage [2018/05/13(日) 01:17:46.49 ID:eWw2CnRZ0.net] >>742 面白い表ですね つい C# とか lisp の立ち位置を確認してしまった…
774 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 08:12:09.87 ID:pAG2qz7m0.net] >>739 だからお前のオレオレ定義なんてどうでもいい そもそも>>638 みたいな話でC++→Cで全面書き換えなんてする奴はいないだろ まともなプログラマーならボトルネックを見つけてその部分を書き換える 例えば1つのファイルに関数f1()とf2()があってf2()がボトルネックだからC++からCの範囲で動くようなコードに書き換えたとする お前はそのファイルの記述言語は何て言うんだよ? 関数毎に記述言語が違うとか言い出すのかよ w
775 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 08:18:26.86 ID:pAG2qz7m0.net] >>740 > 出力中に存在すると判定されて読み込んでしまいそうですが、 > そんなことないでしょうか? そりゃ普通にそんなことあるだろ > もし読み込んでしまう場合、自力でフラグ管理かMutexを使うなどして > 判定する以外の方法はあるでしょうか? そもそも何をしたいのよ? 出力完了してから読みたいだけなら出力完了してから読み込む側のスレッド起動するとかする方法もあるだろうし
776 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 09:30:39.74 ID:tSRcUD9w0.net] >>749 お前がIDコロコロしてまでも定義にこだわる理由が分からん。 お前の定義なら、仮に全面インラインアセンブラで記述してあっても、 Cコンパイラを通したらそれは「Cのコード」であり、 C++コンパイラを通したらそれは「C++のコード」になり、 Objective-Cコンパイラを通したらそれは「Objective-Cのコード」と言うんだろ。 そんな定義の奴はいない。それは「アセンブラ」と言うんだよ。 ただこの定義はもういい。 君は間違いを認めないようだし、仮に俺が間違っていたとしても、 お互いの認識のズレは確認できたのだからそれでいいだろ。 そして>>638 は最初からそう言っているだけだ。 お前は「コンパイル単位」でしか言語を規定できないからおかしな事になっている。 世間は「コード単位」でも言語を規定する。だから、お前が > f2()がボトルネックだからC++からCの範囲で動くようなコードに書き換え と言うのを、世間では「f2()をCコードに書き換え」と言うんだよ。 仮にお前の定義が正しくても、これを日常的にやるようなら、じきに略されて 俺(世間)の言い方に落ち着くのも分かるだろ。 だから>>638 は最初から、お前の言葉で言う、 > f2()がボトルネックだからC++からCの範囲で動くようなコードに書き換える 「f2()がボトルネックだからC++からアセンブラの範囲で動くようなコードに書き換える」事を > もっと速くしたい所をCやasmで書く と表現している。元々「コンパイル」単位ではなく、「コード」単位なんだよ。 その「コード」について議論するのに、「コンパイル」単位を持ち出すのはおかしいだろ。 「速くしたい『所』」ってのは一部限定って事を明示してるだろ。 お前はどうしても認めないようだが。 お前は根本的に考え方がおかしい。それではまともな議論が成立しないだろ。 議論している粒度に合わせた言葉を使え。
777 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 09:51:06.22 ID:pAG2qz7m0.net] >>751 > ただこの定義はもういい。 > 君は間違いを認めないようだし、仮に俺が間違っていたとしても、 > お互いの認識のズレは確認できたのだからそれでいいだろ。 いきなり弱気になってて笑うわ w
778 名前:740 mailto:sage [2018/05/13(日) 10:01:51.37 ID:ntCzq/+YF.net] 自己解決しました。 仮の名前でファイルを書き出してからリネームすれば書き込み中か書き込み済みか 判定する処理をなくせるみたいでした。
779 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 11:07:48.71 ID:Q3HZm9Uhd.net] >>751 コンパイラが変わらない単なる最適化で C++からCにする なんて言わないから普通 少なくともエンジニアの会話では無い 簡単にいう場合は「最適化」「チューニング」だし 詳しくいう場合は中身を具体的に言う 頭の悪い文系を騙すのには使えるのかもしれないけど
780 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 11:09:34.85 ID:Q3HZm9Uhd.net] C言語風なコード と C言語のコード 全く意味が違う
781 名前:638 mailto:sage [2018/05/13(日) 11:24:15.00 ID:YEhpfoS10.net] 「C++で書く」→カジュアルにSTLとか使って読みやすく書く 「Cやasmで書く」→キャッシュやSIMDとか低級に考慮してガリガリ最適化する くらいの軽い気持ちで書いただけなのに紛糾しすぎててワイ将困惑
782 名前:デフォルトの名無しさん [2018/05/13(日) 12:17:41.91 ID:oMdj20B0d.net] 話が長い上にどうでもよすぎる
783 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 12:26:54.36 ID:yds9udeH0.net] またいつものキチガイか
784 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 12:43:30.13 ID:AL0mRZz+0.net] >>756 おまえさんの頭がC++03のまま更新が止まってしまっていることはわかった
785 名前: mailto:sage [2018/05/13(日) 12:46:19.41 ID:eWw2CnRZ0.net] >>759 そう判断した理由は?
786 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 12:51:49.36 ID:AL0mRZz+0.net] C++11以後の「低級」を知らんだろ
787 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 13:01:15.34 ID:DrlMjc+O0.net] C++xx この末尾のへんなナンバリングが施されるようになったのっていつ頃から?
788 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 14:22:28.62 ID:pAG2qz7m0.net] >>762 元々はC++09を狙ってたらしいから2008年頃じゃね?
789 名前: mailto:sage [2018/05/13(日) 14:53:37.16 ID:eWw2CnRZ0.net] >>761 具体的に
790 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 15:27:50.96 ID:AL0mRZz+0.net] >>764 人に聞くのは知らないからだな
791 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 15:47:31.87 ID:CI2jyTw+0.net] >>759 STLが03から入ったと思ってんのか あと >Cコンパイラってポインタ周りは最適化をかけないから、多分、 >速度差はコンパイラ起因であって こんなこと言ってる時点でID:PbE4ojLD0の話は聞くに値しない
792 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 16:22:20.14 ID:AL0mRZz+0.net] >>766 あの流れからどうやってSTLが03からという話になったんだ?
793 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 17:44:42.77 ID:tSRcUD9w0.net] >>756 馬鹿につき合ってすまんかった。 少なくとも俺とLinusは君と同じ定義で使ってるよ。俺の認識では世間もそう。 俺はこれでこれまで話が通じなかったことはないから。 おそらくはCをやらずにC++だけやってる世代と、 必ずCをやったうえでC++に進んだ世代の違いだ。 ゆとりだけで閉じてる世界では、彼らの主張する定義なのかもしれん。 ただまあ、話を聞いてる限り、こいつらは色々と無知だし、無知なことに無自覚だね。 まあもういいが。 自分が知らないだけのことをすべて間違いだと断定しているようでは上達しない。 C++erもここまでゆとり化が進んだのは残念だ。
794 名前:デフォルトの名無しさん [2018/05/13(日) 19:37:46.91 ID:5h/P5YlNM.net] 本当に通じていたのかな? いわゆるフツーの人達は、めんどくさいから適当に話し合わせてテキトーに打ち切るものだが…
795 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:05:09.29 ID:tSRcUD9w0.net] ついでだからもう少し書いておいてやるよ。 ゆとりC++erが「C++は速い」ということにしたがるのは、C++「言語」以下の解像度がないからだ。 「C++コンパイラさえ使えばおk」になってくれてないと困るからこそ、そこに異常にこだわる。 (他言語でも同様に、低位実装を直感的に推測できない馬鹿はこの傾向がある) お前らは>>722-723 の結果、同じデータ構造で同じアルゴリズムを適用した物に対し、 速度差が出た場合にそれを「言語の差」と言い張るようだが、 それは明確な間違いだ。ただの不勉強でしかない。 実際、それだとそれ以上の最適化は
796 名前:出来ないだろ。 C出身者なら、必要ならasm書いてチューニングすることも出来る。 現在C++は失敗しつつある。 それはRustを見ても明らかだ。以下ページを見てみろ。 https://imoz.jp/note/rust-functions.html スマポ(キリッな連中にとってはC++よりもRustの方が明らかにいい言語だろ。(後発なので当たり前だが) C++だけにすがるのは止めとけ。 もうそういう時代じゃないし、C++はそれを満たせる言語ではない。 [] [ここ壊れてます]
797 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:17:51.87 ID:CI2jyTw+0.net] 別にC++とCの宗教論争に加わるつもりはないが、 お前qsortがstd::sortより遅くなりがちな理由わかってないだろ アセンブラ使わんでも自分で書きゃCでも同等の速度は出る (というかVCの最適化にハンドアセンブルで本当に勝てるんか?こいつ) >CよりもC++の方が速くなるコードの方があり得ないと思うが。 >CのほうがC++より遅いケース出してみろ。ないから。 調べもせずにこんな決めつけを書く低レベルさ以前に これをC++のスレで書くお前はどう見てもただの荒らしだから。
798 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:53:01.09 ID:tSRcUD9w0.net] >>771 お前は根本的に勘違いしている。 出発点は自前のコードでもいいが、逆アセンブル結果でもいいんだから、 改善できなくとも、遅くなることはあり得ない。 アセンブラを読めない君らでは、これは無理だ。 そして、遅くなる可能性の方が高いからやらないってのは、 馬鹿な君らなりの対処法としては正しい。 まあ、C++スレではC++マンセーしないと荒らしだ、ってのは理解した。 C++erがそこまで落ちぶれたのは残念だが、俺は去るよ。
799 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:57:13.19 ID:HhTyaKjTd.net] それぞれの言語の良くある使い方であれば Cの方が速いコードもC++の方が速いコードも どちらも存在する 同じ処理を同じように書けば普通は同じ速度 (ただし、一部細かい例外あり)
800 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 20:59:07.22 ID:HhTyaKjTd.net] 一般的な使い方では C++の方が開発効率が高く Cの方がバイナリの性能が高い事が多い (もちろん逆になる要素もある)
801 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:06:47.71 ID:CI2jyTw+0.net] >>772 以前ここに書いたこともあるけど、最近ET+simd(SSE、NEONのイントリンシック)で ゲーム用の自前の線形代数ライブラリとか作ったんで >アセンブラを読めない君ら 残念ながらこれは当てはまらないよw どれだけ逆アセ読んで比較したか・・・・ >C++マンセーしないと お前が”正しい批判をしてれば”荒れてないんだよ ついでに言えば、 >「C++で書く」→カジュアルにSTLとか STLをカジュアルとか呼ぶ辺り、最近のC++界隈は 「流行に流されて自分で考えることを放棄する」という、かつてJavaの流行に荒らされた時代と 同じ愚を犯してるな、とは思うけどねぇ C++er憎し、では色々と話がおかしくなるよ
802 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:07:47.84 ID:HhTyaKjTd.net] 同じ処理を同じ動作で記述出来ない例 Cの可変長配列 C++の例外処理
803 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:09:03.49 ID:pAG2qz7m0.net] もうアホらしくなって途中離脱したけど 例えば関数内のループで使ってるstd::unique_ptr が遅いからその部分だけ生ポインタに書き換えたら ID:tSRcUD9w0 は何言語で書いたって言うんだろ? って言うのはちょっと気にはなる まあまた明後日の長文書くだけだと思うけど w
804 名前:デフォルトの名無しさん [2018/05/13(日) 21:32:59.83 ID:Q+Wg2L410.net] 禿は神。 禿4はバイブル。
805 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 21:41:37.55 ID:AL0mRZz+0.net] 禿5マダー?(tntn
806 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 22:13:01.62 ID:tSRcUD9w0.net] >>775 > どれだけ逆アセ読んで比較したか・・・・ ならコンパイラ出力コードが手書きアセンブラと比べてどれだけ糞かも知ってるはずだ。 それでその言い方には矛盾を感じるけどね。 > STLをカジュアルとか呼ぶ辺り、最近のC++界隈は その発言は俺ではないが、 基本的には抽象度を上げるのは簡単にプログラミングする為であって、 「カジュアル」という表現は妥当だ。 Cみたいに全部手でゴリゴリ書く意味なんて無い。 速度が問題ない部分は出来るだけ手抜きすべきだ。STLがそれに適しているのなら使えばいい。 ただ、「STL使わなくてもどうとでもなる奴が手抜きでSTLを使う」のと、 「STLを使わないと何も出来ない連中がSTLを使う」のは全然意味が違う。 とはいえ、俺は後者が前者になるべきだとは思ってない。 ただ、後者ならC++ではなくJavaやC#を使った方が妥当だとは思うが。 君が見落としているのは、STLをカジュアルと呼ぶ連中は、 基本的に、STLを使わずに最速な実装が出来るものの、面倒なので、 「手抜き」を「カジュアル」と言い換えてごまかしているだけだということだ。 連中は君みたいにSTLが無いと何も出来ない馬鹿ではないんだよ。 > C++er憎し、では色々と話がおかしくなるよ これは違うぞ。俺は無知なくせにデタラメを言い張るゆとりは死ねと思っているだけだ。 ただし、お前が無知のままで死ぬ権利は尊重するので、 有用な情報は書かないようにするが。
807 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 22:14:29.75 ID:VV8A9gRv0.net] キチガイにさわるな
808 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 22:15:45.94 ID:AL0mRZz+0.net] 密度が低い
809 名前:デフォルトの名無しさん [2018/05/13(日) 22:19:54.88 .net] >>772 >俺は去るよ。 >俺は去るよ。 >俺は去るよ。 >俺は去るよ。 >俺は去るよ。 >俺は去るよ。 >俺は去るよ。 >俺は去るよ。 >俺は去るよ。 >俺は去るよ。 >俺は去るよ。
810 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 22:28:00.02 ID:AL0mRZz+0.net] 吐いた唾は呑ませんぞ
811 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 23:48:52.64 ID:d5CbxlL9M.net] >>780 > ならコンパイラ出力コードが手書きアセンブラと比べてどれだけ糞かも知ってるはずだ。 爺いは早めに滅びればいいのに
812 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 00:21:52.22 ID:BWBgd2BN0.net] constexpr+UCS=ニューパラダイムのはずだったんだがなぁ。 コンパイルタイムは夢がある。
813 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 02:44:09.99 ID:xNObD1oN0.net] 昔はライブラリもそんなに充実してなかったしアルゴリズム事典とか読み漁りながら色々自作してやってたけどね しかしまぁ便利な時代になったもんだ C言語だと型が変わるだけで使い物にならなくなっていたものが大半だったけど 型に囚われないSTLライブラリは本当に有能だよ 型に囚われない部分は全部インラインになっちゃうけどね
814 名前:デフォルトの名無しさん [2018/05/14(月) 13:39:06.22 ID:0aBfdvZZ0.net] オンラインになるんか!
815 名前:デフォルトの名無しさん [2018/05/14(月) 13:40:44.68 ID:0aBfdvZZ0.net] 実行可能形式はC++、スクリプトはPython。 これができる大人の選択。
816 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 13:48:17.86 ID:mA8jyKTp0.net] バッチは?
817 名前:デフォルトの名無しさん [2018/05/14(月) 13:56:29.91 ID:0aBfdvZZ0.net] バッチは他人からパクるので贅沢は言いませぬ。
818 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 20:21:01.90 ID:L6tD5feN0.net] スタイルについての質問なんですけど、Cの文法で書けるならできるだけCで書いたほうがいいのでしょうか 上司のC++のコードがもうほんとゴリゴリのCって感じで、C++でcharの配列も無かろうよと思ったりするんですよ 確かにその方が分かる人は多くなるかもしれないですけど
819 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 20:32:27.71 ID:tHLzTn7F0.net] >>792 C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが 簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを 追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。 C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、 それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる: - うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が 安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、 もはや笑えるレベルを超えている) - 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに 効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の コードがその素晴らしいオブジェクトモデルに依存していて、直すためには アプリ全体を書き直さなきゃなんない。 言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに 限定するってことは、他の人がそれをめちゃくちゃにしないってことで、 ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい 「オブジェクト・モデル」のたわごとを持ちこまないってことだ。
820 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 20:34:21.22 ID:joZeDATc0.net] いや別に C++で問題ない 上司の意図は知らんが パフォーマンスを考えたコードとか 互換性を考えたコードとか そういう可能性も 5chの一般的な価値観とは違って C++っぽいのが良いコードって訳じゃない
821 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 20:36:35.58 ID:joZeDATc0.net] 逆に若者はコストも考えずに安易に汎用コンテナを使ったりと思うことがある
822 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 21:03:22.33 ID:5psId9wb0.net] ものによるのじゃん? メモリイメージを意識するならCスタイルの方がきれいにおさまる。
823 名前:デフォルトの名無しさん [2018/05/15(火) 21:09:12.04 .net] バグを生む可能性が一切ないならCスタイルのほうがいいに決まってる
824 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 21:41:08.24 ID:h7VmA7z3a.net] c言語って移植性あるの?まともなの?
825 名前:片山博文MZ mailto:sage [2018/05/15(火) 21:41:08.58 ID:NlOsi0K3d.net] 最近のC++は、std::vectorが配列に最適化されるのか? 遅いだろ
826 名前:片山博文MZ mailto:sage [2018/05/15(火) 22:23:39.58 ID:NlOsi0K3d.net] C++11以降ならstd::array使うけど、覚えることがともかく多い
827 名前:片山博文MZ mailto:sage [2018/05/15(火) 22:26:59.43 ID:NlOsi0K3d.net] 区間チェックしてくれる配列を簡単に指定できると嬉しいの†
828 名前:片山博文MZ mailto:sage [2018/05/15(火) 22:31:58.98 ID:NlOsi0K3d.net] 例えば、[ ]を二重に書くと添字チェックしてくれるとか。どうかな。 int a[[10]];
829 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 22:42:37.30 ID:PNM8l+laM.net] atじゃだめなんか?
830 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 22:43:36.39 ID:sqV4cudU0.net] 例外投げるインデクサと投げないインデクサ両方ありますから。