https://mevius.5ch.net/test/read.cgi/tech/1589424805/
※前スレ
C++相談室 part152
https://mevius.5ch.net/test/read.cgi/tech/1594528940/
テンプレおしまい
探検
C++相談室 part153
■ このスレッドは過去ログ倉庫に格納されています
2020/10/10(土) 23:18:20.00ID:i4F+i14Y
782デフォルトの名無しさん
2020/12/19(土) 13:26:14.15ID:biviwPkb 正式版は有料だがドラフトはタダで手に入るからヒジョーに得がたいが、
やっぱドラフトの内容は随時変わるから、
居丈高に相手を論破してなじり倒すにはやっぱ最新のドラフトでないとイマイチ、
やっぱドラフトの内容は随時変わるから、
居丈高に相手を論破してなじり倒すにはやっぱ最新のドラフトでないとイマイチ、
783デフォルトの名無しさん
2020/12/19(土) 13:50:09.89ID:B7wez7Ce よくわかりませんが、Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソというのと似た話ですか?
784デフォルトの名無しさん
2020/12/19(土) 14:02:30.06ID:biviwPkb Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソとなじったら
ドラフトの版が変わったらChromeの方がクソだった、みたいな
ドラフトの版が変わったらChromeの方がクソだった、みたいな
785デフォルトの名無しさん
2020/12/19(土) 14:41:50.09ID:+cK8B71a ゴミみたいなやり合いだな
くだらな
建設的な議論ができんのか
くだらな
建設的な議論ができんのか
786デフォルトの名無しさん
2020/12/19(土) 18:35:13.01ID:dM4VNuuI C++のプロジェクトに始めて関わって既存コード眺めてたんだけど、関数やメソッドを呼び出す時って、呼び出す側が結果を格納する箱となる変数とかポインタを渡して、
メソッドや関数は成功失敗のint値をreturnする書き方しているんだけど、
これってC++の書き方なの?
メソッドや関数は成功失敗のint値をreturnする書き方しているんだけど、
これってC++の書き方なの?
787デフォルトの名無しさん
2020/12/19(土) 18:41:15.86ID:5blMWj9s788デフォルトの名無しさん
2020/12/19(土) 18:42:49.16ID:x1EY5aRu どう世界が違うの?
いじわるしないで教えてよ
いじわるしないで教えてよ
789デフォルトの名無しさん
2020/12/19(土) 18:46:00.09ID:dM4VNuuI メモリ管理の文化的な作法なのね。
790デフォルトの名無しさん
2020/12/19(土) 18:47:02.46ID:5blMWj9s791デフォルトの名無しさん
2020/12/19(土) 19:25:11.20ID:p4OhEmVF792デフォルトの名無しさん
2020/12/19(土) 19:59:05.03ID:HGWooSzm Cだと不定長の配列やら文字列やら返す関数ひとつ作るだけで大事件だからなぁ
「いいですかー!この関数が返す配列はヒープ確保したものですよー!使い終わったらXXX__free()で解放してくださいよー!
解放忘れたらリークしますよー!!!絶対に最後に解放してくださいよー!忘れないでねー!絶っっっっっっ対に忘れないでねー!!!」
ってコメントやドキュメントやサンプルコードにしつこくしつこくしつこく書いて書いて書いて徹底的に注意喚起しないといけない
そして当然のように忘れられて「分かりにくい関数作りやがって」って叩かれる所までがお約束
vectorやstringをゴロッと返せば済む今はいい時代になったと思う
「いいですかー!この関数が返す配列はヒープ確保したものですよー!使い終わったらXXX__free()で解放してくださいよー!
解放忘れたらリークしますよー!!!絶対に最後に解放してくださいよー!忘れないでねー!絶っっっっっっ対に忘れないでねー!!!」
ってコメントやドキュメントやサンプルコードにしつこくしつこくしつこく書いて書いて書いて徹底的に注意喚起しないといけない
そして当然のように忘れられて「分かりにくい関数作りやがって」って叩かれる所までがお約束
vectorやstringをゴロッと返せば済む今はいい時代になったと思う
793デフォルトの名無しさん
2020/12/19(土) 20:17:48.73ID:vl/1bKki 消費者が買い物袋用意するなんてレジ袋有料化みたいだな
794デフォルトの名無しさん
2020/12/19(土) 20:19:43.48ID:yZxXMpJa 右辺値参照のおかげですよ。
795デフォルトの名無しさん
2020/12/19(土) 21:06:02.20ID:ISt3uDJM 質問@:
例えば…std::vectorで配列を確保したとします…push_backで追加した時に…アロケーター??が…
アドレスの再割当てをしたとします…この時…vectorは要素のアドレスは連続である事は保証されますが…
この時のアドレスの再割当てって…同期?非同期?どうなるの?
つまり…push_back時に同期で行うのか…非同期でロジック流れて行っちゃうか…って所…。
非同期だと怖いんだけど…。
質問A:
std::vector<char>とやった場合…data()でchar*を取れますが…std::vector<char>に'\0'の概念って
あります?どうなんでしょうねぇ…。'\0'のために+1多めに確保するなんて事はしないと思いますが…
どうなん?内部でどうなってるのかは…解りません…。
例えば…std::vectorで配列を確保したとします…push_backで追加した時に…アロケーター??が…
アドレスの再割当てをしたとします…この時…vectorは要素のアドレスは連続である事は保証されますが…
この時のアドレスの再割当てって…同期?非同期?どうなるの?
つまり…push_back時に同期で行うのか…非同期でロジック流れて行っちゃうか…って所…。
非同期だと怖いんだけど…。
質問A:
std::vector<char>とやった場合…data()でchar*を取れますが…std::vector<char>に'\0'の概念って
あります?どうなんでしょうねぇ…。'\0'のために+1多めに確保するなんて事はしないと思いますが…
どうなん?内部でどうなってるのかは…解りません…。
796デフォルトの名無しさん
2020/12/19(土) 21:33:09.17ID:HGWooSzm 普通に質問しろ
797デフォルトの名無しさん
2020/12/19(土) 22:28:27.67ID:yZxXMpJa798デフォルトの名無しさん
2020/12/19(土) 22:39:50.71ID:u3YcA1fK799デフォルトの名無しさん
2020/12/19(土) 22:59:41.56ID:vl/1bKki 確かにCだと必要メモリの問い合わせの為に二度呼び出したり面倒でしたわ…
800デフォルトの名無しさん
2020/12/19(土) 23:18:45.05ID:biviwPkb >>798
正式版の規格票は金かかるやんけヽ(`Д´)ノ
正式版の規格票は金かかるやんけヽ(`Д´)ノ
801デフォルトの名無しさん
2020/12/19(土) 23:20:05.98ID:biviwPkb >std::vectorは末尾に0を追加したりしません。
左様いまだにstd::string::c_str()が内部で何をやっているのかわからん…
左様いまだにstd::string::c_str()が内部で何をやっているのかわからん…
802デフォルトの名無しさん
2020/12/20(日) 00:32:15.85ID:zH6cQZTj 誰もstringの話してないと思うが
803デフォルトの名無しさん
2020/12/20(日) 07:06:06.65ID:u5Xjtcw/804デフォルトの名無しさん
2020/12/20(日) 09:47:23.01ID:C7ljP8CG805デフォルトの名無しさん
2020/12/20(日) 10:51:49.27ID:KSHt8d36 今どきのC++(C++11以降)だと基本的にスコープ抜けたら開放される方式で実装するものなの?
なるべくnewせずにスタック変数にする or ヒープ確保するにしてもスマートポインタ使う
とかで
なるべくnewせずにスタック変数にする or ヒープ確保するにしてもスマートポインタ使う
とかで
806デフォルトの名無しさん
2020/12/20(日) 11:14:31.35ID:IFRd5RXQ >>805
そうしたほうが簡単だから、C++11とか関係無くそうするだろ。
そうしたほうが簡単だから、C++11とか関係無くそうするだろ。
807デフォルトの名無しさん
2020/12/20(日) 11:16:20.77ID:B3eFXD1J RAIIなんて今どきでもないだろ
808デフォルトの名無しさん
2020/12/20(日) 11:27:39.08ID:KSHt8d36 そうかな?
ライブラリとかでわざわざInitialize/Finalizeとか明示的に呼ばなきゃいけないの
結構ある気がするけど
ライブラリとかでわざわざInitialize/Finalizeとか明示的に呼ばなきゃいけないの
結構ある気がするけど
809デフォルトの名無しさん
2020/12/20(日) 11:52:43.58ID:mkiVvOjR Finalizeが失敗する可能性があってエラーハンドリングしないといけない場合はあえてそうしているかもね
810デフォルトの名無しさん
2020/12/20(日) 13:25:24.04ID:8M1CEzDz あえてね!
811デフォルトの名無しさん
2020/12/20(日) 13:31:53.40ID:1w6q/2mK というかスコープ内で完結しない、グローバルな状態を持つものならそうするやろ
812デフォルトの名無しさん
2020/12/20(日) 13:48:55.12ID:KSHt8d36 グローバルバカかな?
813デフォルトの名無しさん
2020/12/20(日) 13:52:50.85ID:BqPIIXKk お前が挙げてたそういうライブラリがInitialize/Finalizeの中で何やってるか考えれば自ずと答えはでるだろ
814デフォルトの名無しさん
2020/12/20(日) 14:05:47.98ID:S1Ae4PMu グローバルな初期化と後始末ならInitialize/Finalizeとか明示的に呼ぶ設計のが一番闇が少ない
ファクトリメソッドでオブジェクトを作ることにして、ファクトリ元オブジェクトの
コンストラクタとデストラクタでそれぞれInitializeとFinalizeでも良いが(呼び忘れ対策は完璧になるが
InitializeやFinalize自体のエラーハンドリングを考えるとやっぱビミョー
ファクトリメソッドでオブジェクトを作ることにして、ファクトリ元オブジェクトの
コンストラクタとデストラクタでそれぞれInitializeとFinalizeでも良いが(呼び忘れ対策は完璧になるが
InitializeやFinalize自体のエラーハンドリングを考えるとやっぱビミョー
815デフォルトの名無しさん
2020/12/20(日) 21:00:32.48ID:POdM0+je 変数名で対象変数のポインタを取得してくる実装(リフレクション?)をしたいんですけど
対象変数をポインタテーブルとかに書き下すことなくコンパイル時に変数名リテラルと対応するポインタを自動生成することってできますか?
対象変数をポインタテーブルとかに書き下すことなくコンパイル時に変数名リテラルと対応するポインタを自動生成することってできますか?
816デフォルトの名無しさん
2020/12/20(日) 21:02:59.13ID:POdM0+je 対象変数はstructかclassのメンバ変数を想定しています
817デフォルトの名無しさん
2020/12/20(日) 21:23:18.64ID:B3eFXD1J 直接には無理
目的次第だけど基本的にはプリプロ駆使して頑張るしかない
目的次第だけど基本的にはプリプロ駆使して頑張るしかない
818デフォルトの名無しさん
2020/12/20(日) 22:39:57.26ID:pIq+bOjP まずC#処理系を書きます
819デフォルトの名無しさん
2020/12/20(日) 22:49:36.29ID:ZSjgwNod 車輪がでかすぎる
820デフォルトの名無しさん
2020/12/20(日) 23:37:12.93ID:XnWb8UXr マップファイルから生成
821デフォルトの名無しさん
2020/12/21(月) 02:47:40.73ID:HVkDagg+ 数値計算に興味がある方に聞きたいのですが、ベクトル演算はどのように実行していますか?
valarrayかeigenなのか、vectorでforを回すのか…C++の常識ではどうやるのか伺いたいです
valarrayかeigenなのか、vectorでforを回すのか…C++の常識ではどうやるのか伺いたいです
822デフォルトの名無しさん
2020/12/21(月) 03:43:19.44ID:tQs5NvLs >>821
blasやlapackにルーチンがあるならそれを使う(ラッパーを作る)
要素の持ち方はvectorでもvalarrayでもその他クラスでも、一次元的にメモリに格納されるなら何でも良い
二次元以上の配列が行優先か列優先かさえ固定しておけば何でも良い
blasやlapackにルーチンがあるならそれを使う(ラッパーを作る)
要素の持ち方はvectorでもvalarrayでもその他クラスでも、一次元的にメモリに格納されるなら何でも良い
二次元以上の配列が行優先か列優先かさえ固定しておけば何でも良い
823デフォルトの名無しさん
2020/12/21(月) 12:49:04.92ID:h5UrY03S >>821
時と場合による
時と場合による
824デフォルトの名無しさん
2020/12/21(月) 12:49:33.35ID:h5UrY03S ベクトル演算
ていうだけじゃ広すぎて
ていうだけじゃ広すぎて
825デフォルトの名無しさん
2020/12/21(月) 12:52:20.80ID:XzTX0Cyb SVDとかするなら自前実装なんか無駄だからeigen使う。それ以外なら>>822 の通りだな。
826デフォルトの名無しさん
2020/12/21(月) 19:14:50.06ID:5SN4/ItM みなさんありがとうございます
主に多次元の常微分方程式を解く目的でFortranからc++へ移行しようと考えていたのですが、ベクトル和やスカラーベクトル積等の計算がFortranほど簡単ではなさそうに感じて質問しました
eigen等を活用しつつ頑張ってみます
主に多次元の常微分方程式を解く目的でFortranからc++へ移行しようと考えていたのですが、ベクトル和やスカラーベクトル積等の計算がFortranほど簡単ではなさそうに感じて質問しました
eigen等を活用しつつ頑張ってみます
827デフォルトの名無しさん
2020/12/21(月) 20:22:43.20ID:94n2fENi そりゃそうだろな
汎用機の時点で科学計算と銀行計算の両方ができる
だから科学専用に作られているFortranと汎用のC言語は根本的に用途が違う
そもそもFortranの後に作られたのがC言語だし、時期も近いし、
だからFortranで出来ることをわざわざC言語でやったりはしない、
用途での住み分けがそのころからある
後発の方が簡単に出来るというのは幻想
汎用機の時点で科学計算と銀行計算の両方ができる
だから科学専用に作られているFortranと汎用のC言語は根本的に用途が違う
そもそもFortranの後に作られたのがC言語だし、時期も近いし、
だからFortranで出来ることをわざわざC言語でやったりはしない、
用途での住み分けがそのころからある
後発の方が簡単に出来るというのは幻想
828デフォルトの名無しさん
2020/12/21(月) 21:07:13.89ID:HyYYfsZ0 簡単なことは簡単に言え
既成のソフトを使い慣れているならそれを使え
不満があるときに自分の理想との違いを埋めるのに
打って出る手段の1つにプログラミングがある
それはC++に限らない
たまたまC++を選んだのなら自らの名誉に恥じぬ努力をせいや
これまたC++に限ったことではないがな
あれ使えばいいやー、これ使えばいいやー
自分なんか物事を考えるだけ無駄なんだー
↑
こういうスタンスのやつ、俺は反吐が出るほど大大大大大嫌い
既成のソフトを使い慣れているならそれを使え
不満があるときに自分の理想との違いを埋めるのに
打って出る手段の1つにプログラミングがある
それはC++に限らない
たまたまC++を選んだのなら自らの名誉に恥じぬ努力をせいや
これまたC++に限ったことではないがな
あれ使えばいいやー、これ使えばいいやー
自分なんか物事を考えるだけ無駄なんだー
↑
こういうスタンスのやつ、俺は反吐が出るほど大大大大大嫌い
829デフォルトの名無しさん
2020/12/21(月) 23:35:19.34ID:5SN4/ItM ヘッダファイルに
double hoge = 1.0/3.0;
みたいに書いてた場合、除算はどのタイミングで行われるんですか?初回呼び出し時のみですよね?
double hoge = 1.0/3.0;
みたいに書いてた場合、除算はどのタイミングで行われるんですか?初回呼び出し時のみですよね?
830デフォルトの名無しさん
2020/12/21(月) 23:51:47.03ID:3sOyVj6l 大昔(40年ぐらい前?)とかもんのすごい特殊な環境用のコンパイラはしらんが
今の普通のコンパイラではそれはコンパイル時に計算される
今の普通のコンパイラではそれはコンパイル時に計算される
831デフォルトの名無しさん
2020/12/22(火) 00:34:06.43ID:M/dL4DYR >>829
コンパイル時に解決されてると思います
コンパイル時に解決されてると思います
832デフォルトの名無しさん
2020/12/22(火) 00:35:40.93ID:M/dL4DYR すみません、830で回答されてましたね
畳み込み、とかで検索してみては
畳み込み、とかで検索してみては
833デフォルトの名無しさん
2020/12/22(火) 02:07:17.74ID:bzbnZ90n >>826
Fortranでも基本的にblasとかlapackに投げるだけじゃないの?
しかもC/C++からFortranルーチン呼べるし
「FortranではやりやすかったがC/C++ではやりにくかったこと」って非常に興味あるから具体的にどういうものか教えてほしい
Fortranでも基本的にblasとかlapackに投げるだけじゃないの?
しかもC/C++からFortranルーチン呼べるし
「FortranではやりやすかったがC/C++ではやりにくかったこと」って非常に興味あるから具体的にどういうものか教えてほしい
834デフォルトの名無しさん
2020/12/22(火) 06:36:52.20ID:GAvzsgv/ blasとかlapackがfortanで記述されてるからね
中身いじるような人がどれほどいるかはわからんけど
中身いじるような人がどれほどいるかはわからんけど
835デフォルトの名無しさん
2020/12/22(火) 08:38:11.38ID:+a9RX7vJ836デフォルトの名無しさん
2020/12/22(火) 09:08:43.07ID:z2CQLL3J 翻訳(interpret)ですか?
C++はコンパイル言語ではないのですか?
C++はコンパイル言語ではないのですか?
837デフォルトの名無しさん
2020/12/22(火) 09:23:29.08ID:Yt10VcGs 翻訳(translate)でしょ。
838デフォルトの名無しさん
2020/12/22(火) 09:26:00.82ID:AY4u6Qzg コンパイラと構文解析とオートマトンって大学の授業でやったなぁ
839デフォルトの名無しさん
2020/12/22(火) 10:18:51.71ID:hq0fof4K Cコンパイラ作ったよね。
840デフォルトの名無しさん
2020/12/22(火) 12:04:28.60ID:GAvzsgv/ constexprとか中身がどうなってるのかもうわけわからん
841デフォルトの名無しさん
2020/12/22(火) 16:28:31.76ID:cQdMNR1v >>834
中身いじるような人がいないからこそ、fortranで(blasやlapack)でできる線形代数計算はC/C++でもできるだろうと思うのだが
中身いじるような人がいないからこそ、fortranで(blasやlapack)でできる線形代数計算はC/C++でもできるだろうと思うのだが
842デフォルトの名無しさん
2020/12/22(火) 23:28:55.02ID:cWduRySe constexprともなるとどこまでコンパイル時計算してくれるかは
処理系依存と聞く…!
関数が絡んだ場合だけかもしれんが
処理系依存と聞く…!
関数が絡んだ場合だけかもしれんが
843デフォルトの名無しさん
2020/12/22(火) 23:41:36.57ID:Yt10VcGs844デフォルトの名無しさん
2020/12/23(水) 00:29:07.29ID:0vtm2rCB constexpr指定したものはコンパイル計算でしょう?
845デフォルトの名無しさん
2020/12/23(水) 01:06:37.35ID:BffjS4vY >>844
コンパイル時評価可能(コンパイル時に評価するとは言っていない)
コンパイル時評価可能(コンパイル時に評価するとは言っていない)
846はちみつ餃子 ◆8X2XSCHEME
2020/12/23(水) 02:19:42.25ID:wEQUKH0P >>844
constexpr 指定が付いた関数は定数式が要求される文脈において
与えられる引数も定数 (定数式) である場合に限りその関数呼出しは
定数式という扱いになる。
定数式が要求される文脈で入力が定数でないならエラーになるし、
定数式が要求されていない文脈であれば実行時計算だよ。
実行時計算にはならない (実行時計算が必要な文脈だとエラーにする) 指定として consteval が導入されたのは、
constexpr の文脈依存な挙動が面倒だと思ったやつがいたからだと思うよ。
constexpr 指定が付いた関数は定数式が要求される文脈において
与えられる引数も定数 (定数式) である場合に限りその関数呼出しは
定数式という扱いになる。
定数式が要求される文脈で入力が定数でないならエラーになるし、
定数式が要求されていない文脈であれば実行時計算だよ。
実行時計算にはならない (実行時計算が必要な文脈だとエラーにする) 指定として consteval が導入されたのは、
constexpr の文脈依存な挙動が面倒だと思ったやつがいたからだと思うよ。
847デフォルトの名無しさん
2020/12/23(水) 06:16:15.13ID:ZPrNOuha C++はまだ色々と足し続けてるのか
constexprはともかくconstinit, constevalて...
constexprはともかくconstinit, constevalて...
848デフォルトの名無しさん
2020/12/23(水) 06:17:06.41ID:ZPrNOuha まるで言語開発屋のおもちゃじゃねえか
849デフォルトの名無しさん
2020/12/23(水) 08:41:53.85ID:iOQdV6uo 今頃気づいたのw
850はちみつ餃子 ◆8X2XSCHEME
2020/12/23(水) 09:20:18.63ID:wEQUKH0P 自動で呼び分けて欲しいと思うこともあれば
コンパイル時に限って欲しいことだってあるだろう。
コンパイル時に限って欲しいことだってあるだろう。
851デフォルトの名無しさん
2020/12/23(水) 19:37:56.48ID:lj5PdyQr 1秒間に1万回くらい数値判定の計算をしてるのですが
Xが3桁の時のみTrueを返すようなコードで一番速いのってどんなコードですかね?
愚直にif(1000>X>=100)でやるのと
if(10>X/100>=1)ではどっちが速いんでしょうか
Xが3桁の時のみTrueを返すようなコードで一番速いのってどんなコードですかね?
愚直にif(1000>X>=100)でやるのと
if(10>X/100>=1)ではどっちが速いんでしょうか
852デフォルトの名無しさん
2020/12/23(水) 19:39:04.22ID:PgZc4XsV 前者
853デフォルトの名無しさん
2020/12/23(水) 19:43:53.01ID:PgZc4XsV 多くのコンパイラは以下に変形しそうな気がする
if (X-100u<900u)
後者をコンパイラが最適化するかどうかはコンパイラ次第
if (X-100u<900u)
後者をコンパイラが最適化するかどうかはコンパイラ次第
854デフォルトの名無しさん
2020/12/23(水) 19:47:49.74ID:PgZc4XsV PCなら1秒に1万回程度なら気にしなくて良い
8bitマイコンだとこの判定だけでも10個以上の命令になったり
8bitマイコンだとこの判定だけでも10個以上の命令になったり
855デフォルトの名無しさん
2020/12/23(水) 20:03:20.62ID:rWjdGSAm 長さ数十億のbool型配列用意すれば早いんじゃね
isDigit3[x] だけで出るじゃん
isDigit3[x] だけで出るじゃん
856デフォルトの名無しさん
2020/12/23(水) 20:04:42.24ID:psZzhFw3 >>851
それ条件式が間違ってるだろ
それ条件式が間違ってるだろ
857デフォルトの名無しさん
2020/12/23(水) 21:04:06.12ID:oO0RWe4j 根本的には、速度って環境依存の性質だから、本当に重要な話なら実測で確かめるしかない。
一般論としては、現代のコンパイラはそこらの人間より賢いから、やりたいことを素直に書いて最適化を任せるのがいい。
わかってない人が余計なことをやると、かえって遅くなる可能性が高い。
計算量のオーダーを変えるような、アルゴリズムレベルの最適化なら意味があるんだけど。
小手先のテクニックは通用しないと思っていい。
一般論としては、現代のコンパイラはそこらの人間より賢いから、やりたいことを素直に書いて最適化を任せるのがいい。
わかってない人が余計なことをやると、かえって遅くなる可能性が高い。
計算量のオーダーを変えるような、アルゴリズムレベルの最適化なら意味があるんだけど。
小手先のテクニックは通用しないと思っていい。
858デフォルトの名無しさん
2020/12/23(水) 22:00:42.78ID:p3n5tJou859デフォルトの名無しさん
2020/12/23(水) 22:21:55.80ID:JqE6cd4a 最適化にも限界はあるから、どういうコードの書き方ならコンパイラが最適化しやすいか、
ってのを知るのは必要なんやろうね
データアクセスの局所化とか偽の依存関係の除去とか
ってのを知るのは必要なんやろうね
データアクセスの局所化とか偽の依存関係の除去とか
860デフォルトの名無しさん
2020/12/23(水) 23:11:04.90ID:pgaSoeQc typedefで二重定義になった場合さぁ…同じ型だとコンパイルエラーにはならないんだよ…
なんか気持ち悪いので…typedefだけのヘッダーを呼ぶようにしたけど…同じ型だとOKなん?
なんか気持ち悪いので…typedefだけのヘッダーを呼ぶようにしたけど…同じ型だとOKなん?
861デフォルトの名無しさん
2020/12/23(水) 23:12:13.58ID:pgaSoeQc ヘッダーに渡しても同じことか…相互参照してるんだった…
862デフォルトの名無しさん
2020/12/23(水) 23:13:21.42ID:pgaSoeQc 一応…間違えないように…ヘッダーに集約しておく…
863デフォルトの名無しさん
2020/12/23(水) 23:13:34.29ID:KqYWGLnc Ruby VM では、1秒間に、100万回ループすると、
Ruby中間言語を、JIT で機械語にコンパイルして、
1秒間に、1,000万回ループ出来るようになる
Ruby中間言語を、JIT で機械語にコンパイルして、
1秒間に、1,000万回ループ出来るようになる
864デフォルトの名無しさん
2020/12/23(水) 23:43:55.33ID:iOQdV6uo いや指定した数だけループしろよ
何勝手に回数10倍に増やしとんじゃい
何勝手に回数10倍に増やしとんじゃい
865デフォルトの名無しさん
2020/12/24(木) 06:19:28.22ID:TzdYJrci サムソンを守るためのHuawei潰しという側面もある。
866デフォルトの名無しさん
2020/12/24(木) 06:55:00.49ID:fOK7nTKz んあ?
867デフォルトの名無しさん
2020/12/24(木) 06:58:51.74ID:TzdYJrci 文大統領がトランプ大統領に、Huaweiを潰すよう勧めたそうです。
868デフォルトの名無しさん
2020/12/24(木) 07:53:25.30ID:X8ie3AzF >>863
C++ならはじめから秒2000万回ループできるコードになる
C++ならはじめから秒2000万回ループできるコードになる
869デフォルトの名無しさん
2020/12/24(木) 08:12:44.86ID:TzdYJrci このプログラムは応答していないためシステムによって閉じられますって出るんじゃないの。
870はちみつ餃子 ◆8X2XSCHEME
2020/12/24(木) 10:18:24.14ID:ys2W6z1g871デフォルトの名無しさん
2020/12/24(木) 11:16:41.02ID:h4Gph9I0 >>854
手元の32bitマイコン(除算器なし)だと
uint16_t v; に値入ってたとして、
if(v >= 100 && v < 1000) よりは ((v >= 100) & (v < 100p
手元の32bitマイコン(除算器なし)だと
uint16_t v; に値入ってたとして、
if(v >= 100 && v < 1000) よりは ((v >= 100) & (v < 100p
872デフォルトの名無しさん
2020/12/24(木) 11:27:11.76ID:h4Gph9I0 >>871
途中で送ってもうたorz
((v >= 100) && (v < 1000))のが気休め速い感じだったな。
あとLUTもほぼ変わらん。LUTはもう少し複雑な計算で、
かつキャッシュにテーブルが入ってくると鬼速だろうけど。
単純な比較のみだからあまり速い方法ないのかもね〜
ダメ元で掛け算とビットシフトで/100する処理も試したけど
ちょっと遅くなったorz
つか、32bitマイコンだと100us周期程度の割り込みハンドラで
この水準まで自分は気にしないだす。
あとC++ならinline化とかその辺をまずチェックでしょうさ。
途中で送ってもうたorz
((v >= 100) && (v < 1000))のが気休め速い感じだったな。
あとLUTもほぼ変わらん。LUTはもう少し複雑な計算で、
かつキャッシュにテーブルが入ってくると鬼速だろうけど。
単純な比較のみだからあまり速い方法ないのかもね〜
ダメ元で掛け算とビットシフトで/100する処理も試したけど
ちょっと遅くなったorz
つか、32bitマイコンだと100us周期程度の割り込みハンドラで
この水準まで自分は気にしないだす。
あとC++ならinline化とかその辺をまずチェックでしょうさ。
873デフォルトの名無しさん
2020/12/24(木) 17:12:04.54ID:tg7gMCA8874デフォルトの名無しさん
2020/12/24(木) 19:53:19.25ID:9+0irhfK if ((unsigned)v - 100u < 900u)
こういうのは減算とコンペア(実質減算)の2回の演算が常に走るから必ずしも速くないんじゃないかな。
&&で繋ぐ方がショートサーキットが働いて1回で済む場合がある。
演算で0との比較に落とせるなら別だけど。
こういうのは減算とコンペア(実質減算)の2回の演算が常に走るから必ずしも速くないんじゃないかな。
&&で繋ぐ方がショートサーキットが働いて1回で済む場合がある。
演算で0との比較に落とせるなら別だけど。
875デフォルトの名無しさん
2020/12/24(木) 19:56:18.95ID:VQIKvM0h そのくらいなら最適化に任せた方がいい気がするが……
876デフォルトの名無しさん
2020/12/24(木) 21:38:01.43ID:B83YCBUh 比較がボトルネックってのは本当だろうかとは思わなくもない
まあ、データ転送とか切り詰めまくって残すは比較のみ、ってのもありうるけど
まあ、データ転送とか切り詰めまくって残すは比較のみ、ってのもありうるけど
877デフォルトの名無しさん
2020/12/24(木) 21:38:20.67ID:X8ie3AzF878デフォルトの名無しさん
2020/12/24(木) 21:41:03.65ID:X8ie3AzF コード的には普通に
if (100 <= x && x < 1000)
と書いておけば良い
コンパイラが最適化するから
x/100を比較するのは
意味的にも意味不明だし
速くなることもない
if (100 <= x && x < 1000)
と書いておけば良い
コンパイラが最適化するから
x/100を比較するのは
意味的にも意味不明だし
速くなることもない
879デフォルトの名無しさん
2020/12/24(木) 21:51:18.77ID:X8ie3AzF ISRの最適化なら
レジスタを節約して待避する数を減らすとか
レジスタバンクを使ってレジスタを切り替えるとか
RAM上で実行するとか
割り込みを許可せずに高速化とか(MIPSの場合)
まあ色々とチューニング出来る余地がある
小規模DSPなんかだと
いまだにISRをアセンブラで書いたりする
レジスタを節約して待避する数を減らすとか
レジスタバンクを使ってレジスタを切り替えるとか
RAM上で実行するとか
割り込みを許可せずに高速化とか(MIPSの場合)
まあ色々とチューニング出来る余地がある
小規模DSPなんかだと
いまだにISRをアセンブラで書いたりする
880デフォルトの名無しさん
2020/12/25(金) 14:04:51.84ID:L6KY61Ck バンク切り替えテクニックですか。
むかしのインターフェース誌っぽいですね。
むかしのインターフェース誌っぽいですね。
881デフォルトの名無しさん
2020/12/25(金) 17:40:14.36ID:j6GWo/XP 昔のテクニックが今でも有効
882デフォルトの名無しさん
2020/12/25(金) 20:23:57.32ID:KGl9PDWX template<size_t A, size_t B>
class tmp{};
template<size_t N>
void test(tmp<N, N>&){
std::cout << “A”;
}
template<size_t A, size_t B>
void test(tmp<A, B>&){
std::cout << “B”;
}
上のような関数があったときにtest(tmp<1,1>{});がどちらを呼ぶか規格で決まってる?
class tmp{};
template<size_t N>
void test(tmp<N, N>&){
std::cout << “A”;
}
template<size_t A, size_t B>
void test(tmp<A, B>&){
std::cout << “B”;
}
上のような関数があったときにtest(tmp<1,1>{});がどちらを呼ぶか規格で決まってる?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★7 [ぐれ★]
- 東京の自販機そばに金塊4200万円分、何者かに持ち去られる…札幌の50代が8000万円振り込んだ後に上京して被害 [どどん★]
- 山田邦子 ひょうきん族時代の年収は12億円「ただ税金が80%」 [muffin★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 【高市SONY】PSPはなぜニンテンドーDSに勝てなかったのか????? [242521385]
- テメェは俺を怒らせたオラァ👊💢😅💢👊🏡
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪
- おさかなさんあつまれえ
- 【悲報】粗品さん、頭おかしい
- 死にたいすぎるンゴ
