[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/20 01:48 / Filesize : 287 KB / Number-of Response : 1032
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part137



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が処理をした時間(秒)(システム時間)






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<287KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef