C++相談室 part132

■ このスレッドは過去ログ倉庫に格納されています
2017/10/10(火) 00:11:34.01ID:nc/5PI4P0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part131
http://mevius.2ch.net/test/read.cgi/tech/1501295308/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.101【環境依存OK】
http://mevius.2ch.net/test/read.cgi/tech/1500329247/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/10/10(火) 00:12:56.93ID:nc/5PI4P0
散々スレ散らかしておいて挙句誰もスレ立てないとか何なんだよおい
3デフォルトの名無しさん (ワッチョイ fd79-zkbM)
垢版 |
2017/10/10(火) 00:17:51.84ID:UbDU2trc0
>>1
2017/10/10(火) 00:20:07.57ID:QENrkQd80
swap(a,1);
2017/10/10(火) 00:34:49.46ID:xPjXx2fY0
int&& x=1;
乙 << x;
2017/10/10(火) 00:37:53.16ID:xPjXx2fY0
swap(T& x, T& y) { T tmp = x; x = y; y = tmp; }を
swap(T&&x, T&& y) { T&& tmp = x; x = y; y = tmp; }とかやったら死ぬ気しかしない
2017/10/10(火) 02:42:57.50ID:wYOMkRRU0
2 名前:デフォルトの名無しさん (ワッチョイ bf54-lR6P)[sage] 投稿日:2017/03/31(金) 16:52:18.52 ID:CoeIAoH10
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

---- テンプレ ここまで ----
2017/10/10(火) 12:31:02.91ID:EzEz7dGm0
テンプレに
>>970が建ててね
辺りを追加しとこうぜ
2017/10/10(火) 15:13:46.21ID:S8JfuHhfd
開発的なお話で単純に構造体の要素を一つ追加するって危険な行為でしょうか?
2017/10/10(火) 15:40:18.46ID:NgeFZ2kOM
質問がふわふわし過ぎ
そんなんじゃまともな回答は無理

個人的には
メンバをひとつ追加する程度で
破綻のリスクが増えるというなら
それは元々破綻していて
表面化していないだけだろうと思うが
2017/10/10(火) 16:32:52.19ID:S8JfuHhfd
>>10
ふわふわしすぎてました
意味合いとしては答えてくれてることで合致してます

メンバ変数を一つ追加することでその他への影響は大きいでしょうか?って意味でした
2017/10/10(火) 16:49:55.22ID:RmsAElXwd
>>11
メンバー変数を増やすと、構造体のサイズが増大する。また、変数の追加する場所によっては、メンバーの相対的な位置が変化する可能性がある。
よって、その構造体のバイナリーインターフェースに依存するプログラムは死亡する可能性がある。
2017/10/10(火) 17:03:33.96ID:RmsAElXwd
例えば、構造体データをバイナリーとしてファイルに出力していたら、サイズの増えた構造体では正しく読み取れない可能性がある。
構造体のメンバーの相対的位置が変化したら、古い構造体を使っている他のプログラムとは相性が悪くなる。
2017/10/10(火) 17:13:40.90ID:RmsAElXwd
Windows APIでは、構造体をバージョン管理して、構造体のサイズで処理を変えたりしている。
2017/10/10(火) 20:42:09.59ID:ISsQMV5w0
>>14
たまに半端な位置に「予約」とか説明されてるメンバがあったりするよね。
あれはバイナリサイズが変わると困るような理由があるからなんかなぁ。
まあ、たいした理由もなくやっちゃって互換性ゆえに変えられなくなったとかだろうけど。
2017/10/10(火) 22:10:42.42ID:RmsAElXwd
>>15
位置やサイズが違うとバグのもと。
昔はよく
#include <pshpack1.h>
...
#include <poppack.h>
を書いたものだ。
2017/10/10(火) 22:48:32.16ID:muYZ22/tM
膝を撃ち抜く自由も良し悪しだな。
2017/10/10(火) 23:50:05.54ID:4EEs5NsC0
cURLを限りなくスペックの低い組み込み機器に入れようとしてるところで問題が起きました

・処理能力が低い

cURLをsystem関数でコマンドライン実行しようとすると、
呼び出す側の処理がCPU50%平均的に食っている+cURLもCPU喰うでまともに通信が出来ません

呼び出す側を落とすとcURLの処理速度は改善されるから
確定でCPUの食い合いが原因ってのもわかっている

対策として下記二つが出たのだけど
・呼び出す側をcURLが実行中はsleepにする
・cURLを実行ファイルで取り込むのではなくプログラミングベースで取り込む

上は常に通信をしているためにsleepを挟むことはできず
下のプログラミングベースについてもクロスコンパイルの問題でなぜか上手く行かない
これ以外の方法で対処方法ってありますか?
2017/10/10(火) 23:55:48.47ID:RmsAElXwd
>>18
なぜかうまくいかないときのエラーメッセージは何だ?
2017/10/11(水) 00:02:11.03ID:qOpcxgfAd
スペックが低いなら、そもそもマルチスレッドが未実装の可能性がある。
ならばsleepは無意味ということになるかも知れない。
2017/10/11(水) 00:06:14.17ID:qOpcxgfAd
スペックが低すぎると、ANSI Cなどの規格に準拠してない恐れがある。
マシンとコンパイラーのマニュアルを確認して、準拠状況を確認しろ。
2017/10/11(水) 02:03:02.75ID:xVJHolx50
>>18
状況がよくわからんなぁ。
system 関数自体は普通は同期的だよね?
スレッドを分けて system 関数を実行した上で、
メインプロセスと cURL がプロセス間通信
2017/10/11(水) 02:03:35.16ID:xVJHolx50
してるってことかな。
(すまん、ミスって変なところで投稿してしもうた)
2017/10/11(水) 02:18:21.03ID:xVJHolx50
この件に関しては >>19 の疑問が当然だなぁ。
クロスビルドでこの手の問題がありがちなのは、
ライブラリのサーチパスとかかな。
ライブラリが見つからんとかメッセージ出てないかね?
2017/10/11(水) 02:27:32.03ID:qOpcxgfAd
http://www.ne.jp/asahi/hishidama/home/tech/c/exec.html#h_fork
forkを使えば、プロセスを分けることができるらしい。
2017/10/11(水) 06:22:13.21ID:Fgfx0EWk0
>>19
undefined 系統のエラーが沢山出る
arm-linux-gnueabi-gccを使ってコンパイルするとそうなる
ただgccだとエラーは起きない。ただi386系になるから実行環境で動かない

クロスコンパイルでcURLの単体がARMにできているから
.aファイルもARM担っていると思っているのだけどもなっていないのだろうか
objdump実行でARMって文字を確認したからARMだと思いたいとこではあるが…

エラー時の実行例
arm-linux-gnueabi-gcc test.c -o test.out -LXXXXXX -lcurl

通るけどi386系で実行環境で実行できない
gcc test.c -o test.out -LXXXXXX -lcurl

>>22
今の状況はPCA-PCBと通信がしたい。着目しているのはPCA
PCAがPCBと通信をする独自規格を元々持っていたのだけど、そのPCAが持っている独自規格を色々な規格をサポートしているcURLに置き換えるって話

今まではPCAの中のメインプロセス(CPUを一番食っているやつ)が通信を行っていただけだったから特に問題は発生しなかったけども
今回はメインプロセスがcURLをコマンドライン実行で呼び出す設計にしようとしている
そのためメインプロセスと別のcURLというプロセスが起動することになると考えている

なので、実装前にメインプロセスが生きている状態で直接コマンドプロンプトでcURLを実行し、動作検証したら通信自体はできるけど動作がとても遅いってとこ露に行きついた
調べてみると、メインプロセス・cURLともにCPUを食いあって速度が遅くなっていることも確認できて
どうやったら上手く実装できるだろうか…と悩んでいるところです

sleepに関しては実装して確認したわけではないけど、kill -stop PIDで実行したら
上手く行ったからsleepも上手く組み込めば対応できrのではないかと思ってる

>>25
forkでこれ以上増えるとさらに遅くなると思ってる…
2017/10/11(水) 07:22:11.99ID:pdXZ47r80
メンバ変数が1個増えたぐらいで崩壊するのは
対外的にはカプセル化がうまくいっていない例、

内部的にはクラスのふるまいに激甚な影響を与えるような重大なメンバ変数の追加が
後から必要になるというのはマズーな設計の例、
2017/10/11(水) 07:26:23.14ID:pdXZ47r80
フォークは低速な外部記憶からプログラムコードを新たにロードする手間が無い分高速な可能性が微レ存、
フォーク先とフォーク元でコードが共有されるためメモリ使用効率も多少UP、
あとサーバとクライアントの関係にある処理を(無理矢理)1本のプログラムとして書けるので
開発環境のリソース自体厳しく制限されていた昔はややうれしかったのかも知れん、、
2017/10/11(水) 07:54:56.70ID:pdXZ47r80
ていうか根本的な疑問として
CPUが低速であるとわかっていながら応答速度の要求があるタスクの一環に
プロセスの起動を含めるのってどうなんじゃ…
(プロセスやスレッドの起動は低廉なOSでは一般にリアルタイム性が全く最強度で担保されない
応答速度の要求が見積もれていなかったんだとすると極めてご愁傷様な話…
30デフォルトの名無しさん (ワッチョイ 0db3-XSap)
垢版 |
2017/10/11(水) 20:57:32.43ID:gwIT2xqO0
%%%%4NEL%%%%
000-SAV-&1.0888214%ML<\47MBL%0.2\MSSSS4.213>
1.8882/%B/%SB/<\2/7BL\%\%B!B%47L%Si72B>%10.2%\
002%\B%===>>>52.B<\rbc/2.8>>\7B<<\7LB>>\72S\<%\42%><\br>001BYON$\%7L2%3.33GHz>>>2.3GHz<\br>
41.B%LB%"<<%11.6$%><<\86.1B>>2LB>"B???S3>>71$-?>6%<\br>
082@<\7L@@<\br>
\LOOP>0<1Entra
2017/10/11(水) 22:47:02.58ID:pdXZ47r80
つかだいたいやるべきこと:
1. プログラムを全般的に速くする
2. (今から可能ならば)要求元とハンドシェークして必要なだけ待ってもらうしくみにする
3. 間に合わせたい処理の優先度を間に合っている処理より上げる
 (できればワーストケースでの応答時間の上限を担保する

>>20
sleepしてもスレッドコンテキストが切り替わらないOSというのはさすがに都市伝説なんじゃ…
2017/10/12(木) 05:46:12.53ID:4g8heiq80
ハンドシェイカー?時間の支配者?
2017/10/12(木) 07:21:15.63ID:K6ixfN2F0
訂正
 ×: プログラムを全般的に速くする
 ●: プログラムのボトルネック箇所を探して速くする
この場合プロセスの起動がボトルネックなのはまちがいなさげなのでそこを速くなるように修正汁、
2017/10/12(木) 09:09:50.72ID:VRKsQXfP0
汁?
35デフォルトの名無しさん (ワッチョイ 0b32-MWTH)
垢版 |
2017/10/12(木) 11:20:59.76ID:PQ1d1y2O0
汁=しろ
2ch地方の方言たい
2017/10/12(木) 12:07:42.25ID:GDIRJBKR0
汁を知らないのにも今時汁を見られたのにも戸惑う
2017/10/12(木) 13:46:59.50ID:CaCBhzNq0
cURLでググったらlibcurlってのがある。こっち使えばすべて解決する話じゃないの。
そもそもC++スレなのにlib使わずコマンド経由する理由が謎。
38デフォルトの名無しさん (ガックシ 06eb-HijE)
垢版 |
2017/10/12(木) 14:05:01.65ID:OhN0e73F6
ウンコの画像を生成するプログラムの作り方を教えて下さい
2017/10/12(木) 14:27:08.43ID:loBt1/dEd
>>38
板違い。CG板へ行け。
40デフォルトの名無しさん (ガックシ 06eb-HijE)
垢版 |
2017/10/12(木) 14:29:18.75ID:OhN0e73F6
お願いします!
2017/10/12(木) 14:44:27.75ID:loBt1/dEd
MMD、Blender、メタセコイアなど好きなヤツを使ってオブジェクトを三次元モデリングしろ。
ボーンを設定して、思ったとおりに変形できるようにしろ。
レンダリングして、画像として保存しろ。
42デフォルトの名無しさん (ガックシ 06eb-HijE)
垢版 |
2017/10/12(木) 14:45:58.16ID:OhN0e73F6
線を引いて多様なウンコ画像を生成するプログラムお願いします!
2017/10/12(木) 14:49:53.72ID:loBt1/dEd
基本オブジェクトをいくつか作れ。
基本オブジェクトを変形し、組み合わせれば、求める画像がレンダリングできる。
重力とボーンを考慮すれば自然な形になる。
2017/10/12(木) 14:52:00.26ID:y2YbOREJ0
AIがウンコ画像を識別できるなら、逆にウンコ画像を生成することもできるのではないか?
これを応用するとエロ画像を識別できるAIにエロ画像を生成させることもできるのでは?
2017/10/12(木) 16:00:49.56ID:Q2Fs2fOZd
まずは、MMD、Blender、メタセコイアのどれかを選んでダウンロード&インストールしろ。
2017/10/12(木) 19:02:41.71ID:eq5Al9lp0
>ボーンを設定して、思ったとおりに変形
要らんだろ・・・・w
アラレちゃんにつんつんでもさせるのかよ
2017/10/12(木) 21:58:15.37ID:9n97WZ1N0
cURLの起動云々の話に答えてくれた人ありがとう

応答速度についてはめちゃくちゃ遅いってレベルにならなければ問題なく
プロセスを立ち上げるような処理を入れても問題ないとの判断
極端な話10秒で終わっていたのが20秒になりましたぐらいなら問題なく、これが600秒かかりますとかなら問題あった

実際にプロセスを立ち上げてみて処理させてみたけど
CPUの食い合いがなければこの問題は解決できていると考えている

処理についてsleep入れるのは無理そうってレスしたけども
ソースコードを追ってみたらpollなどではなくwhile&usleepでの待機が存在していて
CPU喰ってたからこいつをちゃんと制御すれば問題なさそうってなりました
考えてくれた人ありがとう


別案件なんだけど何か良い実装方法がないか相談させてほしい
2017/10/12(木) 22:19:04.32ID:BE/Y4M/40
>while&usleep

時間の掛かる、I/O で、busy wait する奴って、素人だろ
■ このスレッドは過去ログ倉庫に格納されています