次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part135
https://mevius.5ch.net/test/read.cgi/tech/1522495206/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
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
探検
C++相談室 part137
■ このスレッドは過去ログ倉庫に格納されています
2018/07/14(土) 17:53:02.14ID:FOAGvAbs
151デフォルトの名無しさん
2018/07/17(火) 17:51:00.62ID:rBemJlfB 悪いと思って無いだろ
152デフォルトの名無しさん
2018/07/17(火) 18:31:14.54ID:0lwIt+yt 消えろ
153デフォルトの名無しさん
2018/07/18(水) 18:38:21.90ID:zAL/THKp ハイ、謝罪と賠償の要求いただきました!
みんなー、謝罪と賠償の要求出たぞー!
みんなー、謝罪と賠償の要求出たぞー!
154デフォルトの名無しさん
2018/07/18(水) 19:24:54.30ID:xHEVxC3Y ごめんなさい
100円
100円
155さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/07/18(水) 19:48:18.30ID:IL3iPWys パーサーもパーザーも間違いではない。
156デフォルトの名無しさん
2018/07/18(水) 19:51:38.49ID:xHEVxC3Y はいはいwww
157デフォルトの名無しさん
2018/07/18(水) 22:02:52.32ID:L914sbje int a;
if( hoge ){
const a = 1;
}
else{
const a = 2;
}
とすると不安定な動きをするのですが、
このコードは許されないのでしょうか。
if( hoge ){
const a = 1;
}
else{
const a = 2;
}
とすると不安定な動きをするのですが、
このコードは許されないのでしょうか。
158デフォルトの名無しさん
2018/07/18(水) 22:17:00.15ID:WhjAyW4L 許される
159デフォルトの名無しさん
2018/07/18(水) 22:28:45.28ID:4KYHyXSz const a = 1; ってなんぞ??と一瞬思ったがintが省略されてるのか
それブロック内ローカル変数だから、外のint a;には関係しないよ
>157に書かれてるところは許されるけど、
書かれてないところでint a;を使ってたらそりゃ不安定だろうね
それブロック内ローカル変数だから、外のint a;には関係しないよ
>157に書かれてるところは許されるけど、
書かれてないところでint a;を使ってたらそりゃ不安定だろうね
160デフォルトの名無しさん
2018/07/20(金) 17:29:54.53ID:j7YVAWUD 不安定な動きはしないと思うが
ルールがわかってないだけで
ルールがわかってないだけで
161デフォルトの名無しさん
2018/07/20(金) 18:06:32.94ID:TP/FZeZJ 外側のaを初期化してないから不安定になる可能性はある。
162デフォルトの名無しさん
2018/07/20(金) 18:38:08.70ID:obfOsgMS163デフォルトの名無しさん
2018/07/20(金) 21:07:42.21ID:0P/bZCls 許すのは誰なのかというところから(ry
164デフォルトの名無しさん
2018/07/20(金) 21:08:02.97ID:j7YVAWUD コンパイラ様
165デフォルトの名無しさん
2018/07/20(金) 21:15:25.57ID:MVqkCRqy int a; // 未初期化
if (hoge) {
const a = 1; // if の中だけで使える変数aを新たに宣言
const int b = 1; // こう書いてbを使うのと同じ
} else {
const a = 1; // else の中だけで使える変数aを新たに宣言
const int c = 1; // こう書いてcを使うのと同じ
}
int i = a; // 未初期化のままaを使おうとして「不安定な動きをする」
if (hoge) {
const a = 1; // if の中だけで使える変数aを新たに宣言
const int b = 1; // こう書いてbを使うのと同じ
} else {
const a = 1; // else の中だけで使える変数aを新たに宣言
const int c = 1; // こう書いてcを使うのと同じ
}
int i = a; // 未初期化のままaを使おうとして「不安定な動きをする」
166デフォルトの名無しさん
2018/07/21(土) 03:52:30.13ID:ZZ4YytrN コンパイラ様は、代金を支払うお客様より偉いのか。
167デフォルトの名無しさん
2018/07/21(土) 07:09:59.33ID:CT2MO4Nk 機械は偉さで動いてはいない
168デフォルトの名無しさん
2018/07/21(土) 07:12:46.06ID:d0oYLoM2 そのうち褒める褒めないで動作が変わるようなAIコンパイラが出てくる
169デフォルトの名無しさん
2018/07/21(土) 07:16:56.35ID:ZZ4YytrN もうしわけない。金毘羅様に言及すべきだったのにそうしなかったのが情けない。
170デフォルトの名無しさん
2018/07/21(土) 11:56:28.78ID:KXd0ss1Q 警告オプション有効にして助言をもらおう
> warning: variable 'a' is uninitialized when used here [-Wuninitialized]
> warning: variable 'a' is uninitialized when used here [-Wuninitialized]
171デフォルトの名無しさん
2018/07/21(土) 12:20:29.40ID:RLP8Sp1U C++勉強するたびに嫌いになってきて草
172デフォルトの名無しさん
2018/07/21(土) 12:23:02.98ID:L4ZstKjT そんなのは道楽でC++やってるあまちゃんのたわごとだ
俺なんかは最初からC++以外に用意されてなかった
俺なんかは最初からC++以外に用意されてなかった
173デフォルトの名無しさん
2018/07/21(土) 12:34:14.56ID:Zy/M/93a c++はできるだけの範囲で出来るだけのことをやればいい
意欲があればさらに進めばいい
むりして難しいことをやらなくてもいい
c関数での文字列の処理が嫌ならstring使えばいい
楽なところは楽でいい
意欲があればさらに進めばいい
むりして難しいことをやらなくてもいい
c関数での文字列の処理が嫌ならstring使えばいい
楽なところは楽でいい
174デフォルトの名無しさん
2018/07/21(土) 13:42:42.85ID:V/L9XjgX template <typename TypeA, typename TypeB> void TempSet(TypeA* Obj, void (TypeB::*Method)())
{
*Obj->*Method;
}
これがエラーでコンパイルできないんですが、
TypeBのメンバ関数呼び出すのはどうやればいいんでしょうか?
TypeAはインスタンスのオブジェクトポインタです
{
*Obj->*Method;
}
これがエラーでコンパイルできないんですが、
TypeBのメンバ関数呼び出すのはどうやればいいんでしょうか?
TypeAはインスタンスのオブジェクトポインタです
175デフォルトの名無しさん
2018/07/21(土) 13:44:42.66ID:gIfo2zic でも++が一番ストレスなく組めると思う。
176デフォルトの名無しさん
2018/07/21(土) 13:53:05.91ID:0t9tN8g5177デフォルトの名無しさん
2018/07/21(土) 14:00:56.99ID:0t9tN8g5 おっとこうか
(Obj->*Method)();
(Obj->*Method)();
178デフォルトの名無しさん
2018/07/21(土) 16:20:10.80ID:FasZjosd >>177
なるほどそれですね、ありがとうございます。
なるほどそれですね、ありがとうございます。
179デフォルトの名無しさん
2018/07/21(土) 18:50:32.76ID:yF+tsqCG VMWare使ってLinux入れてみた
貧弱なPCでめちゃくちゃ重すぎるがコレで普通にコンパイルはできる
いままで黙ってたがMSのコンパイラでコンパイルしてたからな
やっとオレの芸術的なパーザをコピペで作る準備が整った
貧弱なPCでめちゃくちゃ重すぎるがコレで普通にコンパイルはできる
いままで黙ってたがMSのコンパイラでコンパイルしてたからな
やっとオレの芸術的なパーザをコピペで作る準備が整った
180デフォルトの名無しさん
2018/07/21(土) 19:53:50.78ID:IjOYQkhe やっぱワッチョイ必要だな これ
181デフォルトの名無しさん
2018/07/21(土) 19:54:08.06ID:4OwLAQG2 コンパイルするためだけにVMWarewwwwwwwwwwwwwwwww
182デフォルトの名無しさん
2018/07/21(土) 20:17:49.81ID:Y8T9UzT7 >>179
DELLのPC安いから買うといいよ
DELLのPC安いから買うといいよ
183デフォルトの名無しさん
2018/07/21(土) 20:18:57.06ID:ZZ4YytrN ubuntu on windows は、ウィルス対策ソフトのウィルス・バスターがubuntu上のプロセスを監視対象として認識しないらしく、きびきびと起動・実行できる。
それがいいことか悪いことかは、さておき。
それがいいことか悪いことかは、さておき。
184デフォルトの名無しさん
2018/07/21(土) 21:04:13.24ID:CT2MO4Nk >>181
何かおかしいか?
何かおかしいか?
185デフォルトの名無しさん
2018/07/21(土) 21:05:35.42ID:o4R9sYuw botに反応するなよ
186デフォルトの名無しさん
2018/07/21(土) 21:08:08.82ID:CT2MO4Nk botがそんな反応するか
そういうことにしたいのなら
見逃してやるが
そういうことにしたいのなら
見逃してやるが
187デフォルトの名無しさん
2018/07/21(土) 21:18:01.24ID:gFGCO6jl 見逃してもらえないとどうなっちゃうの?
188デフォルトの名無しさん
2018/07/21(土) 21:23:00.95ID:CT2MO4Nk 何がおかしいのか聞こうか
189デフォルトの名無しさん
2018/07/21(土) 22:50:00.50ID:yF+tsqCG 32bitのlinuxしか入らんから
それでもいちいちめんどくさいことは分かった
それでもいちいちめんどくさいことは分かった
190デフォルトの名無しさん
2018/07/21(土) 23:13:14.47ID:NpMyvs3y macならdockerでlinux環境作るのもありかなと思ったが、
winだとまだdockerインストールめんどくさげだね。
winだとまだdockerインストールめんどくさげだね。
191デフォルトの名無しさん
2018/07/22(日) 12:08:37.73ID:LuRYHz2h >>179
自分もvmwareでlinux入れてましたが、メモリ4GB(有効なのは約3GB)の初代i3ノートPCで、vmware割当メモリ700MBくらいで使ってましたが
かなり重かったけど立ち上がったらそこそこスムーズに使えてました。
メモリ8GBくらいあればvmwareに1GB〜2GBくらい割り当てれば、そこそこストレスなく使えそうな気がします。
ちなみにすでに知ってるかもしれませんが、win10だとubuntu?っぽいのを直接インストールできます。
windows内にゴミがたくさんできそうだから個人的には躊躇しますが。
ttp://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
自分もvmwareでlinux入れてましたが、メモリ4GB(有効なのは約3GB)の初代i3ノートPCで、vmware割当メモリ700MBくらいで使ってましたが
かなり重かったけど立ち上がったらそこそこスムーズに使えてました。
メモリ8GBくらいあればvmwareに1GB〜2GBくらい割り当てれば、そこそこストレスなく使えそうな気がします。
ちなみにすでに知ってるかもしれませんが、win10だとubuntu?っぽいのを直接インストールできます。
windows内にゴミがたくさんできそうだから個人的には躊躇しますが。
ttp://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
192デフォルトの名無しさん
2018/07/22(日) 14:07:01.86ID:ST9MozRw それは入れないほうがいいよ
互換性問題があるしかなり機能を絞られてる
使ってみてわかる誰得機能
容量も十数G必要
VirtualBoxを普通にいれたほうが使い勝手がいい
互換性問題があるしかなり機能を絞られてる
使ってみてわかる誰得機能
容量も十数G必要
VirtualBoxを普通にいれたほうが使い勝手がいい
193デフォルトの名無しさん
2018/07/22(日) 20:18:52.55ID:mbi94QjP > 容量も十数G必要
いや1GBも要らんよ、どこ確認したんだw
WSL丸ごと%LocalAppData%\Packages\CanonicalGroupLimited.*.ならんちゃらに突っ込まれる形式だから
ホストOSにゴミが残るってのも杞憂
最近はDocker Engineがそれなりに動く程度には互換性も高まってきてるみたいね
エクスプローラのアドレスバーからbashで窓側をカレントディレクトリにして起動できるのが良い
いや1GBも要らんよ、どこ確認したんだw
WSL丸ごと%LocalAppData%\Packages\CanonicalGroupLimited.*.ならんちゃらに突っ込まれる形式だから
ホストOSにゴミが残るってのも杞憂
最近はDocker Engineがそれなりに動く程度には互換性も高まってきてるみたいね
エクスプローラのアドレスバーからbashで窓側をカレントディレクトリにして起動できるのが良い
194デフォルトの名無しさん
2018/07/22(日) 20:20:13.96ID:Nia5Zbws >>192
> 互換性問題があるしかなり機能を絞られてる
WSL(Windows Subsystem for Linux)は、C++やLinuxシステムコールを使ったGNUプログラミング環境としては必要十分だと思うけど、具体的にどんな問題あるの?
> 互換性問題があるしかなり機能を絞られてる
WSL(Windows Subsystem for Linux)は、C++やLinuxシステムコールを使ったGNUプログラミング環境としては必要十分だと思うけど、具体的にどんな問題あるの?
195デフォルトの名無しさん
2018/07/22(日) 20:26:16.94ID:tfHLB3F/196デフォルトの名無しさん
2018/07/22(日) 20:28:26.39ID:tfHLB3F/ Linuxを使う意図はサーバーか組み込みなので、WSLで足りない場合もあると思うんだけど、ひな形があれば済む話かもしれんね。
197デフォルトの名無しさん
2018/07/22(日) 20:31:49.81ID:ST9MozRw198デフォルトの名無しさん
2018/07/22(日) 20:34:24.26ID:tfHLB3F/199デフォルトの名無しさん
2018/07/22(日) 20:41:37.63ID:tfHLB3F/ VMは一つのパソコンで複数のOSを動かすのでOSの数だけメモリーを食うんですよね。
その点、WSLはWindowsがLinuxのようにふるまうだけなのでWindows分のメモリーしか食いません。
そんなわけなので、お財布にやさしいんです。
それでいてサービスの開発以外では全く遜色在りませんし、そもそもサービス開発だって、大詰めを迎えるまではdaemonとして起動することはないでしょう。
その点、WSLはWindowsがLinuxのようにふるまうだけなのでWindows分のメモリーしか食いません。
そんなわけなので、お財布にやさしいんです。
それでいてサービスの開発以外では全く遜色在りませんし、そもそもサービス開発だって、大詰めを迎えるまではdaemonとして起動することはないでしょう。
200デフォルトの名無しさん
2018/07/22(日) 20:42:00.95ID:ST9MozRw bash使うだけならわかるけどコンパイルも含めて何か使おうとするなら
既知の問題や互換性に問題もあるものを選ぶのはクレバーだと思わない
既知の問題や互換性に問題もあるものを選ぶのはクレバーだと思わない
201デフォルトの名無しさん
2018/07/22(日) 20:44:34.92ID:ST9MozRw WSL上のバッドノウハウをひたすら集めたいとか
縛りのある環境のほうが燃えるというなら止めはしない
ただわからない人に勧めるものじゃないなって思う
不具合があった場合それがどこ由来なのか特定できない人間には特にすすめちゃダメ
縛りのある環境のほうが燃えるというなら止めはしない
ただわからない人に勧めるものじゃないなって思う
不具合があった場合それがどこ由来なのか特定できない人間には特にすすめちゃダメ
202デフォルトの名無しさん
2018/07/22(日) 20:45:31.78ID:tfHLB3F/ >>200
ディストリビューターが開発する本物のディストリビューションですからまったく問題ありませんね。
Canonicalが開発した本物のUbuntuがWindowsで動くのです。
もちろんDebianであっても同じことです。
ディストリビューターが開発する本物のディストリビューションですからまったく問題ありませんね。
Canonicalが開発した本物のUbuntuがWindowsで動くのです。
もちろんDebianであっても同じことです。
203デフォルトの名無しさん
2018/07/22(日) 20:50:22.91ID:ST9MozRw204デフォルトの名無しさん
2018/07/22(日) 20:56:04.07ID:tfHLB3F/ WSL、CMake、VCPKGがお勧めキーワードです。
C++ユーザーにはUbuntuをお勧めします。
gcc-7を導入してC++-17をご利用ください。
C++ユーザーにはUbuntuをお勧めします。
gcc-7を導入してC++-17をご利用ください。
205デフォルトの名無しさん
2018/07/22(日) 20:56:30.30ID:sWlXYLBw どこかおかしくても不思議じゃない(どこがおかしいのかは知らない)
206デフォルトの名無しさん
2018/07/22(日) 20:57:52.61ID:Nia5Zbws 今のWSLはLinuxのdaemonもサポートしてるから問題ないと思うんだけど、具体的にどんな問題起きたの?
207デフォルトの名無しさん
2018/07/22(日) 20:58:04.83ID:tfHLB3F/ Visual Studio 2017にはLinux DebugとLinux Releaseというターゲットがあり、標準でLinuxをサポートしていますよ。
208デフォルトの名無しさん
2018/07/22(日) 20:58:48.25ID:ST9MozRw c++使うような厳格さを求める人間がWSL使ってるとは思わなかった
WSLで動いたとして他の環境で動くとは保障されないのに
どこがおかしいのか推定もできない仕組みの上で何故ごみを作るんだ
WSLで動いたとして他の環境で動くとは保障されないのに
どこがおかしいのか推定もできない仕組みの上で何故ごみを作るんだ
209デフォルトの名無しさん
2018/07/22(日) 21:01:33.45ID:tfHLB3F/ >>206
init機構がWSL用だから。
それを言い出すと、RedhatとUbuntuだって違うじゃないかということになるけど、Redhatに配備するものはRedhatで開発してたのが今までのスタイルなので、VMのほうが良いという人はその点を指摘してるんじゃないのかな。
それ以外にWSLを使わない理由がないので。
init機構がWSL用だから。
それを言い出すと、RedhatとUbuntuだって違うじゃないかということになるけど、Redhatに配備するものはRedhatで開発してたのが今までのスタイルなので、VMのほうが良いという人はその点を指摘してるんじゃないのかな。
それ以外にWSLを使わない理由がないので。
210デフォルトの名無しさん
2018/07/22(日) 21:04:40.18ID:tfHLB3F/ まあ逆に言うと、WSLで動かないのであれば、Linuxディストリビューション間でも可搬性が無いよね。
211デフォルトの名無しさん
2018/07/22(日) 21:05:04.20ID:Nia5Zbws >>208
実機Linuxならどこがおかしいか推定できるという根拠はないでしょ。
むしろ、WSLのような抽象化された環境でさえ動かない稚拙なものを実機に持っていく気なの?と言い返すことさえできるのだけど。
実機Linuxならどこがおかしいか推定できるという根拠はないでしょ。
むしろ、WSLのような抽象化された環境でさえ動かない稚拙なものを実機に持っていく気なの?と言い返すことさえできるのだけど。
212デフォルトの名無しさん
2018/07/22(日) 21:07:21.30ID:ST9MozRw 違う違う
普通のlinuxで動くコード書いててもWSL上では動かせない場合があるのが問題だろ
普通のlinuxで動くコード書いててもWSL上では動かせない場合があるのが問題だろ
213デフォルトの名無しさん
2018/07/22(日) 21:09:42.72ID:tfHLB3F/ >>212
そういうものがあるのかどうか知らないけど、あるならなおさらWSLで開発したほうが可搬性を担保できてよいのでは。
そういうものがあるのかどうか知らないけど、あるならなおさらWSLで開発したほうが可搬性を担保できてよいのでは。
214デフォルトの名無しさん
2018/07/22(日) 21:10:55.12ID:ST9MozRw >>211
根拠とかそんなんじゃない
考慮すべきことが多すぎる
自分のコードがおかしいのか
linuxのそもそもの仕組みがおかしいのか
MSのWSLがおかしいのか
ディストリビューターの提供してるイメージがおかしいのか
それぞれが組み合わさっておかしくなってるのか考慮する条件が増えすぎる
根拠とかそんなんじゃない
考慮すべきことが多すぎる
自分のコードがおかしいのか
linuxのそもそもの仕組みがおかしいのか
MSのWSLがおかしいのか
ディストリビューターの提供してるイメージがおかしいのか
それぞれが組み合わさっておかしくなってるのか考慮する条件が増えすぎる
215デフォルトの名無しさん
2018/07/22(日) 21:11:03.95ID:Nia5Zbws216デフォルトの名無しさん
2018/07/22(日) 21:11:34.45ID:tfHLB3F/ clはかなり寛容なコンパイラなので、gccでコンパイルできるかチェックしとくとより良いコードが書けますよ。
そんな用途でもWSLは素晴らしいと思います。
そんな用途でもWSLは素晴らしいと思います。
217デフォルトの名無しさん
2018/07/22(日) 21:13:06.02ID:tfHLB3F/218デフォルトの名無しさん
2018/07/22(日) 21:14:34.32ID:ST9MozRw >>215
最初のころはめちゃくちゃだったのでもう入れてない
ハードリンクの仕組みもおかしいし
タイムスタンプもおかしいし
TCPなど制限も山盛りあった
すでにあるコードも何故か動かないことが多かった
最初のころはめちゃくちゃだったのでもう入れてない
ハードリンクの仕組みもおかしいし
タイムスタンプもおかしいし
TCPなど制限も山盛りあった
すでにあるコードも何故か動かないことが多かった
219デフォルトの名無しさん
2018/07/22(日) 21:16:43.51ID:tfHLB3F/ 開発環境はWSLがいいんじゃないですかね。
220デフォルトの名無しさん
2018/07/22(日) 21:19:27.33ID:Nia5Zbws221デフォルトの名無しさん
2018/07/22(日) 21:21:02.02ID:ST9MozRw linuxが安定ってジョークか
linuxカーネルは常にバグがボコボコ出てるよ
linuxカーネルは常にバグがボコボコ出てるよ
222デフォルトの名無しさん
2018/07/22(日) 21:22:41.34ID:tfHLB3F/ クロスプラットフォームを標榜するなら、開発環境としてWindowsを選択するとよいです。
Visual StudioはWindowsとMacで使えます。
WSLによってVisual StudioからLinuxバイナリを構築できます。
MSBuildとCMakeは悩みどころですが、MSBuildはサポートが手厚く、CMakeはVisual Studioが無くても構築できます。
そこらへんで選択するとよいのではないでしょうか。
Visual StudioはWindowsとMacで使えます。
WSLによってVisual StudioからLinuxバイナリを構築できます。
MSBuildとCMakeは悩みどころですが、MSBuildはサポートが手厚く、CMakeはVisual Studioが無くても構築できます。
そこらへんで選択するとよいのではないでしょうか。
223デフォルトの名無しさん
2018/07/22(日) 21:28:34.40ID:tfHLB3F/ まあ僕はVisual Studio、WSL、VCPKG、CMakeプロジェクトを使っているので、わかることはお答えしますよ。
224デフォルトの名無しさん
2018/07/22(日) 21:56:04.01ID:Nia5Zbws 悪いことは言わないので、LinuxプログラムはWSLで動くことを優先して書くことをお勧めする。
他人のために時間を使いたくないのは誰でも同じ。おのずと楽に評価できる環境に流れるのは止められない。
他人のために時間を使いたくないのは誰でも同じ。おのずと楽に評価できる環境に流れるのは止められない。
225デフォルトの名無しさん
2018/07/22(日) 22:35:05.45ID:Nia5Zbws イスラームの救貧制度がかえって免罪符の役割を果たしてないか。
イスラームの救貧制度があることで、かえって商業上の強欲が横行していないか。
イスラームの救貧制度があることで、かえって商業上の強欲が横行していないか。
226デフォルトの名無しさん
2018/07/22(日) 22:37:37.06ID:Nia5Zbws 誤爆したけど、謝罪はしない。
イスラム教は野蛮な宗教である ★4
ttps://lavender.5ch.net/test/read.cgi/whis/1525163440/
イスラム教は野蛮な宗教である ★4
ttps://lavender.5ch.net/test/read.cgi/whis/1525163440/
227デフォルトの名無しさん
2018/07/22(日) 23:57:15.36ID:g7OD+nvH だいたいでけてきたわ
コード修正をすることによって効果を簡単に計測できるように修正してる
こっちのが結構大変だったわ
コード修正をすることによって効果を簡単に計測できるように修正してる
こっちのが結構大変だったわ
228デフォルトの名無しさん
2018/07/23(月) 01:50:38.00ID:SStA1pnM というわけでうpした
長い戦いだった
http://fast-uploader.com/file/7087832585811/
baka_source.zip
build.shを実行すると、3つの実行モジュールができる
3つとも少し修正した(解析処理はファイルがものすごい増えたから大きく修正したように見えるハズ)
・テストデータジェネレータ(データの出力個数の出方を少し修正した)
・ストレージ能力計測プログラム(I/OのアドバイスをOSに与えるように修正)
・解析処理(1. 解析の処理方法自体は一切かわってないがコードの構成をバカでも分かるように変更 2. I/OのアドバイスをOSに与えるように修正)
長い戦いだった
http://fast-uploader.com/file/7087832585811/
baka_source.zip
build.shを実行すると、3つの実行モジュールができる
3つとも少し修正した(解析処理はファイルがものすごい増えたから大きく修正したように見えるハズ)
・テストデータジェネレータ(データの出力個数の出方を少し修正した)
・ストレージ能力計測プログラム(I/OのアドバイスをOSに与えるように修正)
・解析処理(1. 解析の処理方法自体は一切かわってないがコードの構成をバカでも分かるように変更 2. I/OのアドバイスをOSに与えるように修正)
229デフォルトの名無しさん
2018/07/23(月) 01:56:28.48ID:SStA1pnM で、パーザーは基本に則った作りになってる
クラスに分ける意味があるかどうかはおいといて
一般的な再帰下降パーザーになってる
BNFを構文解析する要領と同じといっていい
バカでもチョンでも分かるハズ
baka_parser_all
┣baka_parser_title
┗baka_parser_sections
┣baka_sub_parser_section
┣baka_parser_section_stat
┣baka_parser_text
┗baka_parser_elem
┣baka_sub_parser_xy
┃┗baka_sub_parser_qq_value
┣baka_parser_numbers_x
┃┣baka_sub_parser_qq
┃┃┗baka_sub_parser_qq_value
┃┣baka_sub_parser_rr
┃┗baka_sub_parser_number_x
┗baka_parser_numbers_x
┣baka_sub_parser_qq
┃┗baka_sub_parser_qq_value
┣baka_sub_parser_rr
┗baka_sub_parser_number_y
詳細な解析処理をする前に
簡易な解析処理をしたい場合(ブロックの位置情報やサイズ情報なんかだけを先に取りたい場合)、
そのクラスにそのレベルの処理を突っ込んどけばいい
解析処理の詳細さの粒度はそこでテキトーにきめればいいと思う
クラスに分ける意味があるかどうかはおいといて
一般的な再帰下降パーザーになってる
BNFを構文解析する要領と同じといっていい
バカでもチョンでも分かるハズ
baka_parser_all
┣baka_parser_title
┗baka_parser_sections
┣baka_sub_parser_section
┣baka_parser_section_stat
┣baka_parser_text
┗baka_parser_elem
┣baka_sub_parser_xy
┃┗baka_sub_parser_qq_value
┣baka_parser_numbers_x
┃┣baka_sub_parser_qq
┃┃┗baka_sub_parser_qq_value
┃┣baka_sub_parser_rr
┃┗baka_sub_parser_number_x
┗baka_parser_numbers_x
┣baka_sub_parser_qq
┃┗baka_sub_parser_qq_value
┣baka_sub_parser_rr
┗baka_sub_parser_number_y
詳細な解析処理をする前に
簡易な解析処理をしたい場合(ブロックの位置情報やサイズ情報なんかだけを先に取りたい場合)、
そのクラスにそのレベルの処理を突っ込んどけばいい
解析処理の詳細さの粒度はそこでテキトーにきめればいいと思う
230デフォルトの名無しさん
2018/07/23(月) 02:11:50.60ID:SStA1pnM 一応、parserとsub_parserの違いだけ捕捉しておく
結論からいえばデータの形式がくさってるからそういうのを入れた
parserクラスは最初に一行読んで、必ず次の行頭(LFの次)でポインタが停止するようになってる
sub_parserクラスは行は読まずに、与えられたポインタから行の途中でポインタが停止するようになってる
※ 例外はあるがsub_parserクラスは大体 LF の上(行末)で停止する
※ 停止しない例外は、sub_parserクラスが連続してる箇所が間違いなく該当することになる
結論からいえばデータの形式がくさってるからそういうのを入れた
parserクラスは最初に一行読んで、必ず次の行頭(LFの次)でポインタが停止するようになってる
sub_parserクラスは行は読まずに、与えられたポインタから行の途中でポインタが停止するようになってる
※ 例外はあるがsub_parserクラスは大体 LF の上(行末)で停止する
※ 停止しない例外は、sub_parserクラスが連続してる箇所が間違いなく該当することになる
231デフォルトの名無しさん
2018/07/23(月) 20:33:09.90ID:SStA1pnM コードの記述に一箇所誤りがあった
動作に影響は一切ないが記述ルールに問題があるから
修正しといたほうがいい
削除
baka_sub_parser_section.h
(L34) ++c_buf_p_; // skip LF
追加
baka_parser_sections.h
(L48)++c_buf_p_; // skip LF
ひたすら元のコードをコピペして貼り付けてたから
気付かなかったわ
このスレで相談してたバカはちゃんと動作確認してんのか
動作に影響は一切ないが記述ルールに問題があるから
修正しといたほうがいい
削除
baka_sub_parser_section.h
(L34) ++c_buf_p_; // skip LF
追加
baka_parser_sections.h
(L48)++c_buf_p_; // skip LF
ひたすら元のコードをコピペして貼り付けてたから
気付かなかったわ
このスレで相談してたバカはちゃんと動作確認してんのか
232デフォルトの名無しさん
2018/07/23(月) 20:39:12.44ID:SStA1pnM ちなみにオレのpcのosはvistaだからな
まずwslなんか動くワケがない
あと、オレのpcは32bitの計算機だから
32bitのlinuxしか動かない
pcが32bitだからな
512MBのメモリでvmware動かして
slackwareのlinuxで動作確認をした
ちなみに64bitのwindowsは一切考慮してない
考慮不要だからな
32bitのlinuxと32bitのwindowsで動作確認はできてる
つまり64bitのlinuxでは動作確認はしてないが
一応、64bitのlinuxにも対応できてる想定になってる
きっと動く
※ baka_common.hぐらいの考慮で十分なハズ
まずwslなんか動くワケがない
あと、オレのpcは32bitの計算機だから
32bitのlinuxしか動かない
pcが32bitだからな
512MBのメモリでvmware動かして
slackwareのlinuxで動作確認をした
ちなみに64bitのwindowsは一切考慮してない
考慮不要だからな
32bitのlinuxと32bitのwindowsで動作確認はできてる
つまり64bitのlinuxでは動作確認はしてないが
一応、64bitのlinuxにも対応できてる想定になってる
きっと動く
※ baka_common.hぐらいの考慮で十分なハズ
233デフォルトの名無しさん
2018/07/23(月) 20:41:46.46ID:i+VNk600 しょぼ
234デフォルトの名無しさん
2018/07/23(月) 20:47:36.06ID:i+VNk600 実行速度は?
235デフォルトの名無しさん
2018/07/23(月) 20:53:16.24ID:SStA1pnM ほとんどストレージの読み込み時間
パーズはばっちり
これ以上ないデキだ
解析する量を減らせばもっと速くなる
動かせば分かる
印字されるスループットを
どうすれば最大化できるか考えるのはこのスレのバカだ
道具はほぼすべて揃ってる
パーズはばっちり
これ以上ないデキだ
解析する量を減らせばもっと速くなる
動かせば分かる
印字されるスループットを
どうすれば最大化できるか考えるのはこのスレのバカだ
道具はほぼすべて揃ってる
236デフォルトの名無しさん
2018/07/23(月) 21:36:54.74ID:rtZ7opge >>231
ブーメラン投げてんじゃねえよバカ
ブーメラン投げてんじゃねえよバカ
237デフォルトの名無しさん
2018/07/23(月) 21:41:33.21ID:2Wpd7Nw8 パーズ
238デフォルトの名無しさん
2018/07/23(月) 21:56:50.52ID:owbFvtjn >>228
I/Oのアドバイスとか何言ってるのか分からない。日本語でOk
I/Oのアドバイスとか何言ってるのか分からない。日本語でOk
239デフォルトの名無しさん
2018/07/23(月) 22:01:24.41ID:JOGfItcj >>228
ありがとうございます。
なぜか下記修正をしないとコンパイルエラーで怒られました。
gcc-8.1を使っているけどそのせい?
baka_common.h
PRIu64を有効にするため27行目に行追加:#include <cinttypes>
baka_spec.cpp
107, 111, 125行目を修正:%d → %zd
build.sh
clock_gettimeを有効にするためコンパイルオプションに-lrtを追加
少しコードを見ましたが、クラスのオブジェクト生成時に&があるのが
何を意味しているのかよくわかってなかったり、classのpublic内に関数名だけでなく
関数の中身も直接そのまま記述できるのを初めて知ったりと
色々新しい所があるのでじっくり見て勉強したいと思います。
つづけて実行結果を書きます。↓
ありがとうございます。
なぜか下記修正をしないとコンパイルエラーで怒られました。
gcc-8.1を使っているけどそのせい?
baka_common.h
PRIu64を有効にするため27行目に行追加:#include <cinttypes>
baka_spec.cpp
107, 111, 125行目を修正:%d → %zd
build.sh
clock_gettimeを有効にするためコンパイルオプションに-lrtを追加
少しコードを見ましたが、クラスのオブジェクト生成時に&があるのが
何を意味しているのかよくわかってなかったり、classのpublic内に関数名だけでなく
関数の中身も直接そのまま記述できるのを初めて知ったりと
色々新しい所があるのでじっくり見て勉強したいと思います。
つづけて実行結果を書きます。↓
240デフォルトの名無しさん
2018/07/23(月) 22:02:12.57ID:i+VNk600 他でやれって何度も言われてなかった?
241デフォルトの名無しさん
2018/07/23(月) 22:03:34.73ID:JOGfItcj 取り急ぎ新しいgenツールで13GBを作り、読み込んでみました。
※ >>231 の修正ままだしてませんが大丈夫ですかね?
## spec(ハード性能チェック?)
LINUX% ../baka_spec ./aaa_13GB
Mon Jul 23 18:14:22 2018 : starting... 14107393277 bytes read (read block size = 131072 bytes) ./aaa_13GB
〜
Mon Jul 23 18:14:24 2018 : done... 14107393277 bytes read (read block size = 131072 bytes) ./aaa_13GB
read_block_size ::= 131072 bytes, file_size ::= 13453.86 MiB, turnaround_time ::= 2.27 sec, throughput ::= 5920.39 MiB/sec
※複数回実行でだいたい5500〜6000 MiB/sec
## parser
LINUX% ../baka_par ./aaa_13GB
"./aaa_13GB" : size = 14107393277 bytes
Mon Jul 23 18:15:19 2018 : starting... ../baka_par ./aaa_13GB
Mon Jul 23 18:15:19 2018 : section_count = 1, offset = 144275554 bytes, size = 144275513 bytes, turnaround_time = 0.21 sec, throughput =
646.15 MiB/sec
〜
Mon Jul 23 18:15:39 2018 : section_count = 79, offset = 14107393277 bytes, size = 176862384 bytes, turnaround_time = 0.25 sec, throughput = 662.80 MiB/sec
Mon Jul 23 18:15:39 2018 : done... ../baka_par ./aaa_13GB
turnaround time : 20(secs)
ついでに前回のコードでも試しました。↓つづく
※ >>231 の修正ままだしてませんが大丈夫ですかね?
## spec(ハード性能チェック?)
LINUX% ../baka_spec ./aaa_13GB
Mon Jul 23 18:14:22 2018 : starting... 14107393277 bytes read (read block size = 131072 bytes) ./aaa_13GB
〜
Mon Jul 23 18:14:24 2018 : done... 14107393277 bytes read (read block size = 131072 bytes) ./aaa_13GB
read_block_size ::= 131072 bytes, file_size ::= 13453.86 MiB, turnaround_time ::= 2.27 sec, throughput ::= 5920.39 MiB/sec
※複数回実行でだいたい5500〜6000 MiB/sec
## parser
LINUX% ../baka_par ./aaa_13GB
"./aaa_13GB" : size = 14107393277 bytes
Mon Jul 23 18:15:19 2018 : starting... ../baka_par ./aaa_13GB
Mon Jul 23 18:15:19 2018 : section_count = 1, offset = 144275554 bytes, size = 144275513 bytes, turnaround_time = 0.21 sec, throughput =
646.15 MiB/sec
〜
Mon Jul 23 18:15:39 2018 : section_count = 79, offset = 14107393277 bytes, size = 176862384 bytes, turnaround_time = 0.25 sec, throughput = 662.80 MiB/sec
Mon Jul 23 18:15:39 2018 : done... ../baka_par ./aaa_13GB
turnaround time : 20(secs)
ついでに前回のコードでも試しました。↓つづく
242デフォルトの名無しさん
2018/07/23(月) 22:04:55.29ID:JOGfItcj ## ついでに https://ideone.com/E6QH2r で同じファイルを読み込んだ時間
LINUX% time ./a.cpp aaa_13GB
strat... ./a.out /mnt/home2/pjupm/dbl/work/kinoshit/rve/cpp/final2/baka_source_kino/temp/aaa_13GB (null)
done... ./a.out /mnt/home2/pjupm/dbl/work/kinoshit/rve/cpp/final2/baka_source_kino/temp/aaa_13GB (null)
real 0m16.243s
user 0m14.024s
sys 0m2.199s
↑の実行時間約16秒と >>241 の約20秒の約4秒の差分はざっくり言うと
文字や数値をt_all_db構造体に格納するのに要した時間ということでしょうか?
LINUX% time ./a.cpp aaa_13GB
strat... ./a.out /mnt/home2/pjupm/dbl/work/kinoshit/rve/cpp/final2/baka_source_kino/temp/aaa_13GB (null)
done... ./a.out /mnt/home2/pjupm/dbl/work/kinoshit/rve/cpp/final2/baka_source_kino/temp/aaa_13GB (null)
real 0m16.243s
user 0m14.024s
sys 0m2.199s
↑の実行時間約16秒と >>241 の約20秒の約4秒の差分はざっくり言うと
文字や数値をt_all_db構造体に格納するのに要した時間ということでしょうか?
243デフォルトの名無しさん
2018/07/23(月) 22:09:26.85ID:i+VNk600 読み込み2秒
全部で16秒
ほとんどが読み込み時間?
嘘つき
全部で16秒
ほとんどが読み込み時間?
嘘つき
244デフォルトの名無しさん
2018/07/23(月) 22:18:11.65ID:SW13TXDW245デフォルトの名無しさん
2018/07/23(月) 22:23:23.05ID:hE7BXV+L 続きは半角とLINEでも交換してやれよ
246デフォルトの名無しさん
2018/07/23(月) 23:09:13.26ID:SStA1pnM オレのとこでは
baka_parもbaka_specも
どっちも30〜32MiB/secだから同じだ
つまりほとんど読み込み時間
どっちも8分ぐらいかかる
で、そっちのは
baka_spec
turnaround_time ::= 2.27 sec ← 2秒で読み込めてる!
baka_par
turnaround time : 20(secs)
そっちでは明らかに解析処理が足をひっぱってる
つまり初回の解析処理をさぼればもっと速くなるハズ
baka_parもbaka_specも
どっちも30〜32MiB/secだから同じだ
つまりほとんど読み込み時間
どっちも8分ぐらいかかる
で、そっちのは
baka_spec
turnaround_time ::= 2.27 sec ← 2秒で読み込めてる!
baka_par
turnaround time : 20(secs)
そっちでは明らかに解析処理が足をひっぱってる
つまり初回の解析処理をさぼればもっと速くなるハズ
247デフォルトの名無しさん
2018/07/23(月) 23:24:47.71ID:SStA1pnM http://man7.org/linux/man-pages/man2/posix_fadvise.2.html
posix_fadviseを追加したからな
シーケンシャルリードであると
ちゃんと日本語になってるわ
posix_fadviseを追加したからな
シーケンシャルリードであると
ちゃんと日本語になってるわ
248デフォルトの名無しさん
2018/07/24(火) 00:12:21.91ID:dbjTOx+1 >>246
par, specともにほぼ同じですか。
すみません。話についていけてないです。。
初回の解析処理をサボるとはどういうことですか?
自分が書いたら40〜50secだったので20secですでにかなり速いと思ってるんですが、まだ高速化の余地があるんですね。
par, specともにほぼ同じですか。
すみません。話についていけてないです。。
初回の解析処理をサボるとはどういうことですか?
自分が書いたら40〜50secだったので20secですでにかなり速いと思ってるんですが、まだ高速化の余地があるんですね。
249デフォルトの名無しさん
2018/07/24(火) 01:27:55.10ID:2rkV2Cvq 普通に考えたらこんなもん全部メモリに格納しようというほうが
普通に考えて狂ってると個人的には思うからな、それ専用の計算機ならともかく
ちなみに全部メモリに格納しようとすれば、その格納のオーバーヘッドで
さらに時間がかかることになることは予見できてる
すべてメモリにのせるDBの発想に近いが、そういうDBMSでも起動時のロードにはものすごい時間がかかる
かりにな全部データをメモリに格納しないなら
全部解析する必要はない
過去にセクションは100個ないぐらいといってたと記憶してる
仮定の話になるが、例えば1セクション読みこむのにどれぐらい時間がかかるかということになる
いまぐらいの速度がでるなら
セクションの位置とサイズだけを先に取得して
後で必要な部分のデータを再度読みこんでオンデマンドで解析しても
十分な速度がでるような気がしないでもない
(最初にどこまで解析して取得するかはとりあえず今はおいといて)
普通に考えて狂ってると個人的には思うからな、それ専用の計算機ならともかく
ちなみに全部メモリに格納しようとすれば、その格納のオーバーヘッドで
さらに時間がかかることになることは予見できてる
すべてメモリにのせるDBの発想に近いが、そういうDBMSでも起動時のロードにはものすごい時間がかかる
かりにな全部データをメモリに格納しないなら
全部解析する必要はない
過去にセクションは100個ないぐらいといってたと記憶してる
仮定の話になるが、例えば1セクション読みこむのにどれぐらい時間がかかるかということになる
いまぐらいの速度がでるなら
セクションの位置とサイズだけを先に取得して
後で必要な部分のデータを再度読みこんでオンデマンドで解析しても
十分な速度がでるような気がしないでもない
(最初にどこまで解析して取得するかはとりあえず今はおいといて)
250デフォルトの名無しさん
2018/07/24(火) 01:32:16.00ID:2rkV2Cvq で、やりたいことは、これまでのレスを読むかぎりでは
でっかいファイルの内容を画面に表示するだけだと思う
それだけのことなら実機の高い処理能力を考慮すれば
トップダウン方式で必要な箇所をオンデマンドでロードして取得する方法で十分な気がする
そのほうが計算機にも優しいし、15Gのデータを全部眺めるバカなんかまずいないだろうしな
こんな感じのことをやるのかなあとは思ってる
Ex.
データ取得の要求が3段階でされると仮定してる
@セクションの列
AXY with QQ、RRの列(入力:セクションのSEQ)
B数値の列(入力:XYのSEQ)
A) 画面の初期表示では@で十分
B) セクションを展開して表示するときはAの取得で十分
C) X、Yを展開して表示するときはBの取得で十分
でっかいファイルの内容を画面に表示するだけだと思う
それだけのことなら実機の高い処理能力を考慮すれば
トップダウン方式で必要な箇所をオンデマンドでロードして取得する方法で十分な気がする
そのほうが計算機にも優しいし、15Gのデータを全部眺めるバカなんかまずいないだろうしな
こんな感じのことをやるのかなあとは思ってる
Ex.
データ取得の要求が3段階でされると仮定してる
@セクションの列
AXY with QQ、RRの列(入力:セクションのSEQ)
B数値の列(入力:XYのSEQ)
A) 画面の初期表示では@で十分
B) セクションを展開して表示するときはAの取得で十分
C) X、Yを展開して表示するときはBの取得で十分
251デフォルトの名無しさん
2018/07/24(火) 06:39:30.18ID:0yPjFIBM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★3 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」★2 [冬月記者★]
- かつや、明日からカツ丼(竹)790円→590円、ロースカツ定食830円→630円、カツカレー(竹)990円→790円 画像あり [お断り★]
- タイがカンボジアを空爆、トランプ氏仲介の和平合意は“事実上崩壊”軍事衝突へ タイ首相「もはや対話の余地ない」 [お断り★]
- 空自機レーダー照射、音声データ公開 中国 ★5 [蚤の市★]
- 【速報】 米国政府、中国が日本の自衛隊にレーダー照射を批判、同事案で中国を批判するのは初めて ★2 [お断り★]
- 防衛省「了解は言っていない」 [966095474]
- 【愛国】田母神俊雄「日本は米国に追い込まれて真珠湾攻撃に踏み切っただけ」 [834922174]
- 中国、日本人tiktokの収益剥奪開始wmwmwmwmwmwm [834922174]
- 【世界人権デー】“胎児も事故の被害者”と認めるよう県議会が国に意見へ _スカラカ、チャカポコ。チャカポコ、チャカポコ。。。 [979264442]
- 【速報】共同通信スクープキタ━(゚∀゚)━!!「実際は日本の自衛隊機が中国機に対してレーダ照射ロックオンしていたことが発覚」 [339712612]
- マリン船長のラーメン、投げ売りされてしまう😭
