1 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:53:02.14 ID:FOAGvAbs.net] 次スレを立てる時は本文の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】 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
152 名前:デフォルトの名無しさん [2018/07/16(月) 22:56:02.09 ID:6luw5g3K.net] とりあえず、バカでも使えて修正できる パーザーのクラスのサンプルでも気が向いたら作っといてやるわ こんなもんデータを全部格納できるワケがないからな 今の解析コードのサンプルでも位置とサイズの情報はガッチリとってるから いくらでも改良できる オレみたいなプロフェッショナルになると、こんなことハナから予見できてるワケ
153 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 23:55:04.74 ID:k7Gq2lBS.net] >>94-97 「ぼくちんのログ解析ソフトを半角さんが作ってくれるスレ」を立ててそっちでやってくれないか
154 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 04:14:16.72 ID:eLk9EV06.net] パーザーw
155 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火)
] [ここ壊れてます]
156 名前:12:14:32.32 ID:laha5pLP.net mailto: 頭がパーザー [] [ここ壊れてます]
157 名前:デフォルトの名無しさん [2018/07/17(火) 14:06:01.71 ID:I4a/6mEU.net] >>146 今のサーバはメモリに多少余裕があるから全部メモリに格納しようと 思ってましたが、よく考えると数人同時に使ったり他の低スペックサーバを 使うことを想定すると確かに名称、テキスト、数値の番号と位置など 最低限の情報だけ拾ってその都度ファイルにアクセスした方が 他の人に迷惑がかからず良さそうです。 気が向いたらよろしくお願いします。 自分でも検討してみます。 >>147 相談しっぱなしは悪いと思い、色々調べた結果を出してしまいました、すみません。
158 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 17:51:00.62 ID:rBemJlfB.net] 悪いと思って無いだろ
159 名前:デフォルトの名無しさん mailto:sage [2018/07/17(火) 18:31:14.54 ID:0lwIt+yt.net] 消えろ
160 名前:デフォルトの名無しさん [2018/07/18(水) 18:38:21.90 ID:zAL/THKp.net] ハイ、謝罪と賠償の要求いただきました! みんなー、謝罪と賠償の要求出たぞー!
161 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 19:24:54.30 ID:xHEVxC3Y.net] ごめんなさい 100円
162 名前:さまよえる蟻人間 mailto:sage [2018/07/18(水) 19:48:18.30 ID:IL3iPWys.net] パーサーもパーザーも間違いではない。
163 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 19:51:38.49 ID:xHEVxC3Y.net] はいはいwww
164 名前:デフォルトの名無しさん [2018/07/18(水) 22:02:52.32 ID:L914sbje.net] int a; if( hoge ){ const a = 1; } else{ const a = 2; } とすると不安定な動きをするのですが、 このコードは許されないのでしょうか。
165 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 22:17:00.15 ID:WhjAyW4L.net] 許される
166 名前:デフォルトの名無しさん mailto:sage [2018/07/18(水) 22:28:45.28 ID:4KYHyXSz.net] const a = 1; ってなんぞ??と一瞬思ったがintが省略されてるのか それブロック内ローカル変数だから、外のint a;には関係しないよ >157に書かれてるところは許されるけど、 書かれてないところでint a;を使ってたらそりゃ不安定だろうね
167 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 17:29:54.53 ID:j7YVAWUD.net] 不安定な動きはしないと思うが ルールがわかってないだけで
168 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 18:06:32.94 ID:TP/FZeZJ.net] 外側のaを初期化してないから不安定になる可能性はある。
169 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 18:38:08.70 ID:obfOsgMS.net] aを不定なまま使えば不安定になるかも知れないが >>157 のコードだけならなにも問題ない >>157 の回答としては 「許される」が正解
170 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:07:42.21 ID:0P/bZCls.net] 許すのは誰なのかというところから(ry
171 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:08:02.97 ID:j7YVAWUD.net] コンパイラ様
172 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:15:25.57 ID:MVqkCRqy.net] 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を使おうとして「不安定な動きをする」
173 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 03:52:30.13 ID:ZZ4YytrN.net] コンパイラ様は、代金を支払うお客様より偉いのか。
174 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 07:09:59.33 ID:CT2MO4Nk.net] 機械は偉さで動いてはいない
175 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 07:12:46.06 ID:d0oYLoM2.net] そのうち褒める褒めないで動作が変わるようなAIコンパイラが出てくる
176 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 07:16:56.35 ID:ZZ4YytrN.net] もうしわけない。金毘羅様に言及すべきだったのにそうしなかったのが情けない。
177 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 11:56:28.78 ID:KXd0ss1Q.net] 警告オプション有効にして助言をもらおう > warning: variable 'a' is uninitialized when used here [-Wuninitialized]
178 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 12:20:29.40 ID:RLP8Sp1U.net] C++勉強するたびに嫌いになってきて草
179 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 12:23:02.98 ID:L4ZstKjT.net] そんなのは道楽でC++やってるあまちゃんのたわごとだ 俺なんかは最初からC++以外に用意されてなかった
180 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 12:34:14.56 ID:Zy/M/93a.net] c++はできるだけの範囲で出来るだけのことをやればいい 意欲があればさらに進めばいい むりして難しいことをやらなくてもいい c関数での文字列の処理が嫌ならstring使えばいい 楽なところは楽でいい
181 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 13:42:42.85 ID:V/L9XjgX.net] template <typename TypeA, typename TypeB> void TempSet(TypeA* Obj, void (TypeB::*Method)()) { *Obj->*Method; } これがエラーでコンパイルできないんですが、 TypeBのメンバ関数呼び出すのはどうやればいいんでしょうか? TypeAはインスタンスのオブジェクトポインタです
182 名前:デフォルトの名無しさん [2018/07/21(土) 13:44:42.66 ID:gIfo2zic.net] でも++が一番ストレスなく組めると思う。
183 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 13:53:05.91 ID:0t9tN8g5.net] >>174 TypeA はTypeBの間違いで、 Obj->Method(); でないの?
184 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 14:00:56.99 ID:0t9tN8g5.net] おっとこうか (Obj->*Method)();
185 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 16:20:10.80 ID:FasZjosd.net] >>177 なるほどそれですね、ありがとうございます。
186 名前:デフォルトの名無しさん [2018/07/21(土) 18:50:32.76 ID:yF+tsqCG.net] VMWare使ってLinux入れてみた 貧弱なPCでめちゃくちゃ重すぎるがコレで普通にコンパイルはできる いままで黙ってたがMSのコンパイラでコンパイルしてたからな やっとオレの芸術的なパーザをコピペで作る準備が整った
187 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 19:53:50.78 ID:IjOYQkhe.net] やっぱワッチョイ必要だな これ
188 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 19:54:08.06 ID:4OwLAQG2.net] コンパイルするためだけにVMWarewwwwwwwwwwwwwwwww
189 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:17:49.81 ID:Y8T9UzT7.net] >>179 DELLのPC安いから買うといいよ
190 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:18:57.06 ID:ZZ4YytrN.net] ubuntu on windows は、ウィルス対策ソフトのウィルス・バスターがubuntu上のプロセスを監視対象として認識しないらしく、きびきびと起動・実行できる。 それがいいことか悪いことかは、さておき。
191 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:04:13.24 ID:CT2MO4Nk.net] >>181 何かおかしいか?
192 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:05:35.42 ID:o4R9sYuw.net] botに反応するなよ
193 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:08:08.82 ID:CT2MO4Nk.net] botがそんな反応するか そういうことにしたいのなら 見逃してやるが
194 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:18:01.24 ID:gFGCO6jl.net] 見逃してもらえないとどうなっちゃうの?
195 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:23:00.95 ID:CT2MO4Nk.net] 何がおかしいのか聞こうか
196 名前:デフォルトの名無しさん [2018/07/21(土) 22:50:00.50 ID:yF+tsqCG.net] 32bitのlinuxしか入らんから それでもいちいちめんどくさいことは分かった
197 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:13:14.47 ID:NpMyvs3y.net] macならdockerでlinux環境作るのもありかなと思ったが、 winだとまだdockerインストールめんどくさげだね。
198 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 12:08:37.73 ID:LuRYHz2h.net] >>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
199 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 14:07:01.86 ID:ST9MozRw.net] それは入れないほうがいいよ 互換性問題があるしかなり機能を絞られてる 使ってみてわかる誰得機能 容量も十数G必要 VirtualBoxを普通にいれたほうが使い勝手がいい
200 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:18:52.55 ID:mbi94QjP.net] > 容量も十数G必要 いや1GBも要らんよ、どこ確認したんだw WSL丸ごと%LocalAppData%\Packages\CanonicalGroupLimited.*.ならんちゃらに突っ込まれる形式だから ホストOSにゴミが残るってのも杞憂 最近はDocker Engineがそれなりに動く程度には互換性も高まってきてるみたいね エクスプローラのアドレスバーからbashで窓側をカレントディレクトリにして起動できるのが良い
201 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:20:13.96 ID:Nia5Zbws.net] >>192 > 互換性問題があるしかなり機能を絞られてる WSL(Windows Subsystem for Linux)は、C++やLinuxシステムコールを使ったGNUプログラミング環境としては必要十分だと思うけど、具体的にどんな問題あるの?
202 名前:デフォルトの名無しさん [2018/07/22(日) 20:26:16.94 ID:tfHLB3F/.net] >>194 サービス書くときかな。 他はWSLが楽だと思う。
203 名前:デフォルトの名無しさん [2018/07/22(日) 20:28:26.39 ID:tfHLB3F/.net] Linuxを使う意図はサーバーか組み込みなので、WSLで足りない場合もあると思うんだけど、ひな形があれば済む話かもしれんね。
204 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:31:49.81 ID:ST9MozRw.net] サーバ系がサポートされてない 使うならVM使ったほうがいいよ ファイルシステムもwindowsのものの上に作られてるのであれこれ問題が出る >>193 1Gというのが笑えるw コンパイルしないのかw
205 名前:デフォルトの名無しさん [2018/07/22(日) 20:34:24.26 ID:tfHLB3F/.net] >>197 VMは大げさすぎるかな。 使えるときはWSLを積極的に使っていきましょうよ。 とてもいいものですから。
206 名前:デフォルトの名無しさん [2018/07/22(日) 20:41:37.63 ID:tfHLB3F/.net] VMは一つのパソコンで複数のOSを動かすのでOSの数だけメモリーを食うんですよね。 その点、WSLはWindowsがLinuxのようにふるまうだけなのでWindows分のメモリーしか食いません。 そんなわけなので、お財布にやさしいんです。 それでいてサービスの開発以外では全く遜色在りませんし、そもそもサービス開発だって、大詰めを迎えるまではdaemonとして起動することはないでしょう。
207 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:42:00.95 ID:ST9MozRw.net] bash使うだけならわかるけどコンパイルも含めて何か使おうとするなら 既知の問題や互換性に問題もあるものを選ぶのはクレバーだと思わない
208 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:44:34.92 ID:ST9MozRw.net] WSL上のバッドノウハウをひたすら集めたいとか 縛りのある環境のほうが燃えるというなら止めはしない ただわからない人に勧めるものじゃないなって思う 不具合があった場合それがどこ由来なのか特定できない人間には特にすすめちゃダメ
209 名前:デフォルトの名無しさん [2018/07/22(日) 20:45:31.78 ID:tfHLB3F/.net] >>200 ディストリビューターが開発する本物のディストリビューションですからまったく問題ありませんね。 Canonicalが開発した本物のUbuntuがWindowsで動くのです。 もちろんDebianであっても同じことです。
210 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:50:22.91 ID:ST9MozRw.net] >>199 >>202 ディストリビューターが提供しようが WSLはlinuxでもないwindowsでもない不思議な物 両方の制限の積 windows ∩ linuxでありわざわざ苦労することはないよ windows上の疑似linuxであってかなりニッチな物 どこかおかしくても不思議じゃない
211 名前:デフォルトの名無しさん [2018/07/22(日) 20:56:04.07 ID:tfHLB3F/.net] WSL、CMake、VCPKGがお勧めキーワードです。 C++ユーザーにはUbuntuをお勧めします。 gcc-7を導入してC++-17をご利用ください。
212 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:56:30.30 ID:sWlXYLBw.net] どこかおかしくても不思議じゃない(どこがおかしいのかは知らない)
213 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:57:52.61 ID:Nia5Zbws.net] 今のWSLはLinuxのdaemonもサポートしてるから問題ないと思うんだけど、具体的にどんな問題起きたの?
214 名前:デフォルトの名無しさん [2018/07/22(日) 20:58:04.83 ID:tfHLB3F/.net] Visual Studio 2017にはLinux DebugとLinux Releaseというターゲットがあり、標準でLinuxをサポートしていますよ。
215 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:58:48.25 ID:ST9MozRw.net] c++使うような厳格さを求める人間がWSL使ってるとは思わなかった WSLで動いたとして他の環境で動くとは保障されないのに どこがおかしいのか推定もできない仕組みの上で何故ごみを作るんだ
216 名前:デフォルトの名無しさん [2018/07/22(日) 21:01:33.45 ID:tfHLB3F/.net] >>206 init機構がWSL用だから。 それを言い出すと、RedhatとUbuntuだって違うじゃないかということになるけど、Redhatに配備するものはRedhatで開発してたのが今までのスタイルなので、VMのほうが良いという人はその点を指摘してるんじゃないのかな。 それ以外にWSLを使わない理由がないので。
217 名前:デフォルトの名無しさん [2018/07/22(日) 21:04:40.18 ID:tfHLB3F/.net] まあ逆に言うと、WSLで動かないのであれば、Linuxディストリビューション間でも可搬性が無いよね。
218 名前:デフォルトの名無しさん [2018/07/22(日) 21:05:04.20 ID:Nia5Zbws.net] >>208 実機Linuxならどこがおかしいか推定できるという根拠はないでしょ。 むしろ、WSLのような抽象化された環境でさえ動かない稚拙なものを実機に持っていく気なの?と言い返すことさえできるのだけど。
219 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 21:07:21.30 ID:ST9MozRw.net] 違う違う 普通のlinuxで動くコード書いててもWSL上では動かせない場合があるのが問題だろ
220 名前:デフォルトの名無しさん [2018/07/22(日) 21:09:42.72 ID:tfHLB3F/.net] >>212 そういうものがあるのかどうか知らないけど、あるならなおさらWSLで開発したほうが可搬性を担保できてよいのでは。
221 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 21:10:55.12 ID:ST9MozRw.net] >>211 根拠とかそんなんじゃない 考慮すべきことが多すぎる 自分のコードがおかしいのか linuxのそもそもの仕組みがおかしいのか MSのWSLがおかしいのか ディストリビューターの提供してるイメージがおかしいのか それぞれが組み合わさっておかしくなってるのか考慮する条件が増えすぎる
222 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 21:11:03.95 ID:Nia5Zbws.net] >>212 問題なんてほぼないでしょ。 VM上で動いて喜べるレベルならWSLでも同じだから。 あなた、WSLで動作確認したことあるの?もしや憶測で書いてない?
223 名前:デフォルトの名無しさん [2018/07/22(日) 21:11:34.45 ID:tfHLB3F/.net] clはかなり寛容なコンパイラなので、gccでコンパイルできるかチェックしとくとより良いコードが書けますよ。 そんな用途でもWSLは素晴らしいと思います。
224 名前:デフォルトの名無しさん [2018/07/22(日) 21:13:06.02 ID:tfHLB3F/.net] >>214 それたぶん、自分のコードが悪いと思いますよ。 Linuxは十分安定してるので、Linuxの問題を真っ先に疑うのは、自信ありすぎだろって感じます。
225 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 21:14:34.32 ID:ST9MozRw.net] >>215 最初のころはめちゃくちゃだったのでもう入れてない ハードリンクの仕組みもおかしいし タイムスタンプもおかしいし TCPなど制限も山盛りあった すでにあるコードも何故か動かないことが多かった
226 名前:デフォルトの名無しさん [2018/07/22(日) 21:16:43.51 ID:tfHLB3F/.net] 開発環境はWSLがいいんじゃないですかね。
227 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 21:19:27.33 ID:Nia5Zbws.net] >>214 抽象化されていると問題特定が容易と考えるのが一般的だと思っていたのだけど、 抽象化された環境は問題特定が難しくなるという考え方は画期的ですね。
228 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 21:21:02.02 ID:ST9MozRw.net] linuxが安定ってジョークか linuxカーネルは常にバグがボコボコ出てるよ
229 名前:デフォルトの名無しさん [2018/07/22(日) 21:22:41.34 ID:tfHLB3F/.net] クロスプラットフォームを標榜するなら、開発環境としてWindowsを選択するとよいです。 Visual StudioはWindowsとMacで使えます。 WSLによってVisual StudioからLinuxバイナリを構築できます。 MSBuildとCMakeは悩みどころですが、MSBuildはサポートが手厚く、CMakeはVisual Studioが無くても構築できます。 そこらへんで選択するとよいのではないでしょうか。
230 名前:デフォルトの名無しさん [2018/07/22(日) 21:28:34.40 ID:tfHLB3F/.net] まあ僕はVisual Studio、WSL、VCPKG、CMakeプロジェクトを使っているので、わかることはお答えしますよ。
231 名前:デフォルトの名無しさん [2018/07/22(日) 21:56:04.01 ID:Nia5Zbws.net] 悪いことは言わないので、LinuxプログラムはWSLで動くことを優先して書くことをお勧めする。 他人のために時間を使いたくないのは誰でも同じ。おのずと楽に評価できる環境に流れるのは止められない。
232 名前:デフォルトの名無しさん [2018/07/22(日) 22:35:05.45 ID:Nia5Zbws.net] イスラームの救貧制度がかえって免罪符の役割を果たしてないか。 イスラームの救貧制度があることで、かえって商業上の強欲が横行していないか。
233 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 22:37:37.06 ID:Nia5Zbws.net] 誤爆したけど、謝罪はしない。 イスラム教は野蛮な宗教である ★4 ttps://lavender.5ch.net/test/read.cgi/whis/1525163440/
234 名前:デフォルトの名無しさん [2018/07/22(日) 23:57:15.36 ID:g7OD+nvH.net] だいたいでけてきたわ コード修正をすることによって効果を簡単に計測できるように修正してる こっちのが結構大変だったわ
235 名前:デフォルトの名無しさん [2018/07/23(月) 01:50:38.00 ID:SStA1pnM.net] というわけでうpした 長い戦いだった fast-uploader.com/file/7087832585811/ baka_source.zip build.shを実行すると、3つの実行モジュールができる 3つとも少し修正した(解析処理はファイルがものすごい増えたから大きく修正したように見えるハズ) ・テストデータジェネレータ(データの出力個数の出方を少し修正した) ・ストレージ能力計測プログラム(I/OのアドバイスをOSに与えるように修正) ・解析処理(1. 解析の処理方法自体は一切かわってないがコードの構成をバカでも分かるように変更 2. I/OのアドバイスをOSに与えるように修正)
236 名前:デフォルトの名無しさん [2018/07/23(月) 01:56:28.48 ID:SStA1pnM.net] で、パーザーは基本に則った作りになってる クラスに分ける意味があるかどうかはおいといて 一般的な再帰下降パーザーになってる 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 詳細な解析処理をする前に 簡易な解析処理をしたい場合(ブロックの位置情報やサイズ情報なんかだけを先に取りたい場合)、 そのクラスにそのレベルの処理を突っ込んどけばいい 解析処理の詳細さの粒度はそこでテキトーにきめればいいと思う
237 名前:デフォルトの名無しさん [2018/07/23(月) 02:11:50.60 ID:SStA1pnM.net] 一応、parserとsub_parserの違いだけ捕捉しておく 結論からいえばデータの形式がくさってるからそういうのを入れた parserクラスは最初に一行読んで、必ず次の行頭(LFの次)でポインタが停止するようになってる sub_parserクラスは行は読まずに、与えられたポインタから行の途中でポインタが停止するようになってる ※ 例外はあるがsub_parserクラスは大体 LF の上(行末)で停止する ※ 停止しない例外は、sub_parserクラスが連続してる箇所が間違いなく該当することになる
238 名前:デフォルトの名無しさん [2018/07/23(月) 20:33:09.90 ID:SStA1pnM.net] コードの記述に一箇所誤りがあった 動作に影響は一切ないが記述ルールに問題があるから 修正しといたほうがいい 削除 baka_sub_parser_section.h (L34) ++c_buf_p_; // skip LF 追加 baka_parser_sections.h (L48)++c_buf_p_; // skip LF ひたすら元のコードをコピペして貼り付けてたから 気付かなかったわ このスレで相談してたバカはちゃんと動作確認してんのか
239 名前:デフォルトの名無しさん [2018/07/23(月) 20:39:12.44 ID:SStA1pnM.net] ちなみにオレの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ぐらいの考慮で十分なハズ
240 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 20:41:46.46 ID:i+VNk600.net] しょぼ
241 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 20:47:36.06 ID:i+VNk600.net] 実行速度は?
242 名前:デフォルトの名無しさん [2018/07/23(月) 20:53:16.24 ID:SStA1pnM.net] ほとんどストレージの読み込み時間 パーズはばっちり これ以上ないデキだ 解析する量を減らせばもっと速くなる 動かせば分かる 印字されるスループットを どうすれば最大化できるか考えるのはこのスレのバカだ 道具はほぼすべて揃ってる
243 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 21:36:54.74 ID:rtZ7opge.net] >>231 ブーメラン投げてんじゃねえよバカ
244 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 21:41:33.21 ID:2Wpd7Nw8.net] パーズ
245 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 21:56:50.52 ID:owbFvtjn.net] >>228 I/Oのアドバイスとか何言ってるのか分からない。日本語でOk
246 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 22:01:24.41 ID:JOGfItcj.net] >>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内に関数名だけでなく 関数の中身も直接そのまま記述できるのを初めて知ったりと 色々新しい所があるのでじっくり見て勉強したいと思います。 つづけて実行結果を書きます。↓
247 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 22:02:12.57 ID:i+VNk600.net] 他でやれって何度も言われてなかった?
248 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 22:03:34.73 ID:JOGfItcj.net] 取り急ぎ新しい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 ※複数回
249 名前:実行でだいたい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) ついでに前回のコードでも試しました。↓つづく [] [ここ壊れてます]
250 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 22:04:55.29 ID:JOGfItcj.net] ## ついでに 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構造体に格納するのに要した時間ということでしょうか?
251 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 22:09:26.85 ID:i+VNk600.net] 読み込み2秒 全部で16秒 ほとんどが読み込み時間? 嘘つき
252 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 22:18:11.65 ID:SW13TXDW.net] >>243 これは >>242 のことですか? それぞれは下記のようですが、sys=読み込みのみの時間 となるんですかね。 real プログラムの呼び出しから終了までにかかった実時間(秒) user プログラム自体の処理時間(秒)(ユーザCPU時間) sys プログラムを処理するために、OSが処理をした時間(秒)(システム時間)