次スレを立てる時は本文の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
33デフォルトの名無しさん
2018/07/14(土) 22:11:40.89ID:1N2GRIlb まず知恵億れはなにと比較して遅いとか書かないからな
オレは知恵遅れが書いたコードより少なくとも10倍以上速い処理を書いてる
オレは知恵遅れが書いたコードより少なくとも10倍以上速い処理を書いてる
>>32
なんか error がいっぱい出ているようだが…
なんか error がいっぱい出ているようだが…
2018/07/14(土) 22:17:16.55ID:xV7EJA5w
15GBのテキストの解析で8.6秒
これを越えればいい
これを越えればいい
36デフォルトの名無しさん
2018/07/14(土) 22:17:46.97ID:1N2GRIlb なんのエラー書けよ
エラーとかいわれても分かるワケがないだろ
ヴォケ
エラーとかいわれても分かるワケがないだろ
ヴォケ
37デフォルトの名無しさん
2018/07/14(土) 22:18:22.90ID:1N2GRIlb で、そのコードはったのかオマエは
2018/07/14(土) 22:19:29.69ID:xV7EJA5w
40デフォルトの名無しさん
2018/07/14(土) 22:20:14.44ID:1N2GRIlb 8.6秒とかテキトーなことなら
なんとでもいえるからな
どんなファイル読んで
どんなソース作ったわけ?
ファイル形式ちゃんとわかってんの
なんとでもいえるからな
どんなファイル読んで
どんなソース作ったわけ?
ファイル形式ちゃんとわかってんの
41デフォルトの名無しさん
2018/07/14(土) 22:22:08.48ID:1N2GRIlb 適切なインクルードファイルを上に書けば
間違いなく通る
ココで教えを乞うているバカですら
それぐらいのことやってる
オマエはそれ未満だ
間違いなく通る
ココで教えを乞うているバカですら
それぐらいのことやってる
オマエはそれ未満だ
2018/07/14(土) 22:26:38.36ID:xV7EJA5w
テキストのほとんどが数値の行
10%の割合でx, yの行
セクションは全部で100個くらい
数値は乱数で作成した
実際の分布を考えて、
桁数によって出現率を変えてある
異常データでも不正アクセスしない
文字コードはS-JIS
改行はLFのみ
10%の割合でx, yの行
セクションは全部で100個くらい
数値は乱数で作成した
実際の分布を考えて、
桁数によって出現率を変えてある
異常データでも不正アクセスしない
文字コードはS-JIS
改行はLFのみ
2018/07/14(土) 22:29:41.45ID:xV7EJA5w
数値は符号付き32bitに収まる値で
printf("%d", n);
で出力される文字列と同じ書式
printf("%d", n);
で出力される文字列と同じ書式
45デフォルトの名無しさん
2018/07/14(土) 22:31:59.85ID:1N2GRIlb46デフォルトの名無しさん
2018/07/14(土) 22:33:55.81ID:1N2GRIlb なんか知恵遅れがバカみたいなレスをブツブツ書いてるし
ごちゃごちゃいってないでコードあげたらどうだ
ごちゃごちゃいってないでコードあげたらどうだ
2018/07/14(土) 22:35:19.66ID:xV7EJA5w
シングルスレッド、順番に全文字スキャンの処理で
処理時間は1文字平均約2クロック (Haswell)
最適化的にはこれが出発点
さらに高速化する価値がある処理であれば
マルチスレッド,GPU, AVX ...
まだまだ高速化の余地はある
処理時間は1文字平均約2クロック (Haswell)
最適化的にはこれが出発点
さらに高速化する価値がある処理であれば
マルチスレッド,GPU, AVX ...
まだまだ高速化の余地はある
48デフォルトの名無しさん
2018/07/14(土) 22:36:12.81ID:1N2GRIlb また知恵遅れがテキトーなこといってるしな
2018/07/14(土) 23:49:17.06ID:5xFWH4XP
残念ながらクソシンタックスが増えれば増えるほどアホでもテクニカルターム使って
アホと思われない活動が可能になって行くんだよ。
アホと思われない活動が可能になって行くんだよ。
2018/07/15(日) 00:49:14.70ID:p2p9fdhp
>>32,45
サンプルデータ作成コードありがとうございます。
実行してみましたが面白いですねこれ。
完成したら数十ギガのデータ作って遊んでみたい。
サンプルデータができて説明しやすくなったので色々補足させていただきます。
ちょっと細かい内容になるので、今あるサンプルデータ作成コードを
使用されても問題ありません。
文字コードはutf8 or euc-jpの両方を想定しています。
ファイルの1行目に下記行が一度だけ出てきます。
// タイトル、倍率(mag)。(この係数を使ってCの数値から割る、正の整数。unsigned int)
::fprintf(fp, "%s %d\x0a", "TITLE_NAME", 2000);
具体的には ttps://ideone.com/hi8bYd の64行目に上記が入ります。
Aのセクション集計値は個数が0のときがある。その時はテキスト行だけで終わり。
0 0 1 Jul〜
TEXT TEXT TEXT TEXT
Bのテキスト行は日本語(2byte)が来ることがある。
>つづく
サンプルデータ作成コードありがとうございます。
実行してみましたが面白いですねこれ。
完成したら数十ギガのデータ作って遊んでみたい。
サンプルデータができて説明しやすくなったので色々補足させていただきます。
ちょっと細かい内容になるので、今あるサンプルデータ作成コードを
使用されても問題ありません。
文字コードはutf8 or euc-jpの両方を想定しています。
ファイルの1行目に下記行が一度だけ出てきます。
// タイトル、倍率(mag)。(この係数を使ってCの数値から割る、正の整数。unsigned int)
::fprintf(fp, "%s %d\x0a", "TITLE_NAME", 2000);
具体的には ttps://ideone.com/hi8bYd の64行目に上記が入ります。
Aのセクション集計値は個数が0のときがある。その時はテキスト行だけで終わり。
0 0 1 Jul〜
TEXT TEXT TEXT TEXT
Bのテキスト行は日本語(2byte)が来ることがある。
>つづく
2018/07/15(日) 00:54:03.20ID:p2p9fdhp
QQ行の説明
QQ subname -1 0 0 1 -21000000 600000 2
→この行が無いファイルもある。
→7,8カラムは1行目の倍率数字で割る(数値行と同じ計算)
→3〜6カラムは -1, 0, 1, のいずれか。この4つの組み合わせであとで計算に使うことがある。
1 0 0 1 →TYPE_A
0 1 -1 0 →TYPE_B
-1 0 0 -1 →TYPE_C
0 -1 1 0 →TYPE_D
-1 0 0 1 →TYPE_E
0 -1 -1 0 →TYPE_F
1 0 0 -1 →TYPE_G
0 1 1 0 →TYPE_H
→9カラム目は正の整数。(unsigned int)
→下記6つのバリエーションがあります。
QQ subname
QQ subname c
QQ subname -1 0 0 1 -21000000 600000
QQ subname -1 0 0 1 -21000000 600000 2
QQ subname c -1 0 0 1 -21000000 600000
QQ subname c -1 0 0 1 -21000000 600000 2
※cはcという文字列固定
※1つのファイルに存在するのはいずれか1つのフォーマット
そして少し複雑なのが、上記QQ行は先頭のQQがなくなってx, y行に存在することがあります。
1つのファイル内でQQ行とx, yの後ろにくるパターンの両方は存在せず、片方が出てきたらもう片方は出てきません。
x, yと同じ行にくる場合のフォーマットもQQ行の規則と同じです。
x 1 234 subname -1 0 0 1 -21000000 600000 2
y 2 234 subname -1 0 0 1 -21000000 600000 2
>つづく
QQ subname -1 0 0 1 -21000000 600000 2
→この行が無いファイルもある。
→7,8カラムは1行目の倍率数字で割る(数値行と同じ計算)
→3〜6カラムは -1, 0, 1, のいずれか。この4つの組み合わせであとで計算に使うことがある。
1 0 0 1 →TYPE_A
0 1 -1 0 →TYPE_B
-1 0 0 -1 →TYPE_C
0 -1 1 0 →TYPE_D
-1 0 0 1 →TYPE_E
0 -1 -1 0 →TYPE_F
1 0 0 -1 →TYPE_G
0 1 1 0 →TYPE_H
→9カラム目は正の整数。(unsigned int)
→下記6つのバリエーションがあります。
QQ subname
QQ subname c
QQ subname -1 0 0 1 -21000000 600000
QQ subname -1 0 0 1 -21000000 600000 2
QQ subname c -1 0 0 1 -21000000 600000
QQ subname c -1 0 0 1 -21000000 600000 2
※cはcという文字列固定
※1つのファイルに存在するのはいずれか1つのフォーマット
そして少し複雑なのが、上記QQ行は先頭のQQがなくなってx, y行に存在することがあります。
1つのファイル内でQQ行とx, yの後ろにくるパターンの両方は存在せず、片方が出てきたらもう片方は出てきません。
x, yと同じ行にくる場合のフォーマットもQQ行の規則と同じです。
x 1 234 subname -1 0 0 1 -21000000 600000 2
y 2 234 subname -1 0 0 1 -21000000 600000 2
>つづく
2018/07/15(日) 00:58:25.78ID:p2p9fdhp
最後にRR行があります。
これもQQ同様x, yの次の行にあったりなかったりします。
QQとRRが一緒に出てくることは無いと思います。
フォーマットは「RR 正の整数」でQQのようにx,yの後ろに来ることはありません。
x 1 2
RR 3
11 11 11 11
11 11 11 11
↓QQ、RRが一緒に出てくることは無い。
x 1 2
QQ subname c -1 0 0 1 -21000000 600000
RR 3
↓これも無い
x 1 2 RR 3
>つづく
これもQQ同様x, yの次の行にあったりなかったりします。
QQとRRが一緒に出てくることは無いと思います。
フォーマットは「RR 正の整数」でQQのようにx,yの後ろに来ることはありません。
x 1 2
RR 3
11 11 11 11
11 11 11 11
↓QQ、RRが一緒に出てくることは無い。
x 1 2
QQ subname c -1 0 0 1 -21000000 600000
RR 3
↓これも無い
x 1 2 RR 3
>つづく
2018/07/15(日) 01:02:10.59ID:p2p9fdhp
参考として、ファイルを読み込んだら下記のt_all_dbのような構造体にすべて保管しようと考えています。
型や名前は最適なものに変更されて問題ありませんし、他に最適な
格納方法があればそれでも問題ありません。
typedef struct __tag_rr_db {
unsigned int rr_num;
} t_rr_db;
typedef struct __tag_qq_db {
char qq_name; //subname
bool is_c; //cがあるかないか
QQ_TYPE qq_type;
float numbers; // 2つの数字のリスト(vector?)
unsigned int count; //最後尾の数字
} t_qq_db;
typedef struct __tag_elem_db {
ELEM_TYPE elem_type; // x or y
unsigned int no; // x or yの番号
unsigned int num_line_count;
t_qq_db qq_db;
t_rr_db rr_db;
numbers; //数値行のリスト(vector?)
} t_elem_db;
typedef struct __tag_section_db {
unsigned char name;
unsigned int num_1;
unsigned int num_2;
unsigned int text_line_count;
texts; //テキスト行(vector?)
t_elem_db elem_dbs; //elem_dbのリスト
} t_section_db;
typedef struct __tag_all_db {
title_name; mag; section_dbs; //section_dbのリスト
} t_all_db;
型や名前は最適なものに変更されて問題ありませんし、他に最適な
格納方法があればそれでも問題ありません。
typedef struct __tag_rr_db {
unsigned int rr_num;
} t_rr_db;
typedef struct __tag_qq_db {
char qq_name; //subname
bool is_c; //cがあるかないか
QQ_TYPE qq_type;
float numbers; // 2つの数字のリスト(vector?)
unsigned int count; //最後尾の数字
} t_qq_db;
typedef struct __tag_elem_db {
ELEM_TYPE elem_type; // x or y
unsigned int no; // x or yの番号
unsigned int num_line_count;
t_qq_db qq_db;
t_rr_db rr_db;
numbers; //数値行のリスト(vector?)
} t_elem_db;
typedef struct __tag_section_db {
unsigned char name;
unsigned int num_1;
unsigned int num_2;
unsigned int text_line_count;
texts; //テキスト行(vector?)
t_elem_db elem_dbs; //elem_dbのリスト
} t_section_db;
typedef struct __tag_all_db {
title_name; mag; section_dbs; //section_dbのリスト
} t_all_db;
2018/07/15(日) 01:59:33.70ID:lbsq5rUe
そろそろ「ぼくちんのログ解析ソフトを名無しどもに作らせるスレ」でも立ててそっちでやってくれないか
2018/07/15(日) 02:07:19.29ID:eimWnm2X
いい加減にしろよお前
土方コーダに発注する気分でてめえのクソログの仕様ドヤ顔で書いてんじゃねえよ
ありったけスレ私物化して相談しまくったんだからそろそろ自分の手と頭を動かしたらどうだ
土方コーダに発注する気分でてめえのクソログの仕様ドヤ顔で書いてんじゃねえよ
ありったけスレ私物化して相談しまくったんだからそろそろ自分の手と頭を動かしたらどうだ
2018/07/15(日) 02:58:06.76ID:F1eG7opL
ID:p2p9fdhp さん、別のスレに移動を願います。
2018/07/15(日) 04:38:00.97ID:deogSIs/
ume進行だと思えば悪くない
続けて
ていうか徹底的にやれ
ていうかディスクキャッシュのサイズと読込サイズの理想的な関係は微妙なもんじゃわ;
HDD周りのキャッシュには次の3階層ある
(1) 1トラック内のランダムアクセスではHDDだと平均的に1/2回転分の時間待たされるから、
HDD側であらかじめ1トラック分はキャッシュする
(2) シークでは今日日のCPUの速度からみて地質年代レヴェルの遅延が生じるから、
OSにとって都合の良いサイズ(ページサイズとか)を単位とする単位でキャッシュされる
(3) で、その上に標準入出力のバッファがある(setvbuf()で調整できるのはこれ
SSDだと(1)が書き換え回数最適化絡みのキャッシュに置き換わるが、(2)や(3)は同じ
高速化には(3)のバッファリングやアプリ側の処理というものと、(2)と(1)のキャッシングをいかに並行動作させるかがキモすぐる
fgets()とfread()の速度差は、単一ファイルをシーケンシャルアクセスするときは言うほど開きはない(上のしくみから導ける
一方、複数ファイルを交互にアクセスしたりHDDのまちまちな場所をランダムアクセスしだすとたちまち顕在化する(これも上のしくみから導ける
単一ファイルの読込であっても、アプリがファイルの一部を読み込んで考え込む、の繰り返しなパターンならば
アプリ側のマルチスレッド化が有効な「こともある」 今回は該当しないと思うが、、
続けて
ていうか徹底的にやれ
ていうかディスクキャッシュのサイズと読込サイズの理想的な関係は微妙なもんじゃわ;
HDD周りのキャッシュには次の3階層ある
(1) 1トラック内のランダムアクセスではHDDだと平均的に1/2回転分の時間待たされるから、
HDD側であらかじめ1トラック分はキャッシュする
(2) シークでは今日日のCPUの速度からみて地質年代レヴェルの遅延が生じるから、
OSにとって都合の良いサイズ(ページサイズとか)を単位とする単位でキャッシュされる
(3) で、その上に標準入出力のバッファがある(setvbuf()で調整できるのはこれ
SSDだと(1)が書き換え回数最適化絡みのキャッシュに置き換わるが、(2)や(3)は同じ
高速化には(3)のバッファリングやアプリ側の処理というものと、(2)と(1)のキャッシングをいかに並行動作させるかがキモすぐる
fgets()とfread()の速度差は、単一ファイルをシーケンシャルアクセスするときは言うほど開きはない(上のしくみから導ける
一方、複数ファイルを交互にアクセスしたりHDDのまちまちな場所をランダムアクセスしだすとたちまち顕在化する(これも上のしくみから導ける
単一ファイルの読込であっても、アプリがファイルの一部を読み込んで考え込む、の繰り返しなパターンならば
アプリ側のマルチスレッド化が有効な「こともある」 今回は該当しないと思うが、、
2018/07/15(日) 05:01:06.13ID:EFpmUWpC
てな議論はベアメタルでやるならともかく
依存処理系では特定OSの話になるし
抽象化されたハードウエアじゃ特性を仮定すること自体ナンセンス
依存処理系では特定OSの話になるし
抽象化されたハードウエアじゃ特性を仮定すること自体ナンセンス
2018/07/15(日) 06:33:31.92ID:F1eG7opL
60デフォルトの名無しさん
2018/07/15(日) 11:31:30.36ID:Y0/Ay92k unsigned int l = -1;
cout << l << endl;
cout << (signed int)l << endl;
⇒
4294967295
-1
int m = 4294967295;
cout << m << endl;
unsigned int n = 4294967295;
cout << n << endl;
⇒
-1
4294967295
cout << l << endl;
cout << (signed int)l << endl;
⇒
4294967295
-1
int m = 4294967295;
cout << m << endl;
unsigned int n = 4294967295;
cout << n << endl;
⇒
-1
4294967295
61デフォルトの名無しさん
2018/07/15(日) 11:32:24.73ID:Y0/Ay92k62デフォルトの名無しさん
2018/07/15(日) 11:45:15.02ID:Y0/Ay92k http://codepad.org/4odTQaly
↑は、ロベールの本に載っているコードです。
friend class ValueFactory;
//friend Value* ValueFactory::New(int n) const;
↑これを
friend class ValueFactory;
//friend Value* ValueFactory::New(int n) const;
と変更するとなぜコンパイルエラーになってしまうのでしょうか?
ロベールの本には、「不完全型」というのを利用する必要があると書いてあります。
friend class ValueFactory;
↑これはなぜ「不完全型」を使わなくてもOKなのでしょうか?
↑は、ロベールの本に載っているコードです。
friend class ValueFactory;
//friend Value* ValueFactory::New(int n) const;
↑これを
friend class ValueFactory;
//friend Value* ValueFactory::New(int n) const;
と変更するとなぜコンパイルエラーになってしまうのでしょうか?
ロベールの本には、「不完全型」というのを利用する必要があると書いてあります。
friend class ValueFactory;
↑これはなぜ「不完全型」を使わなくてもOKなのでしょうか?
2018/07/15(日) 11:51:25.65ID:kDEFN2k+
解釈が間違ってる
ValueFactoryの実体を作って返すためにはすでに定義が分かってないといけない(完全型でないといけない
対してfriend宣言は名前だけ分かってればいい(定義がまだ無い(=不完全型)でいい
というだけの話
ValueFactoryの実体を作って返すためにはすでに定義が分かってないといけない(完全型でないといけない
対してfriend宣言は名前だけ分かってればいい(定義がまだ無い(=不完全型)でいい
というだけの話
64はちみつ餃子 ◆8X2XSCHEME
2018/07/15(日) 11:59:00.99ID:HERu1+Fl >>61
暗黙のキャストのせい。
整数リテラルに型を表す接尾辞がつかない場合は原則として int として解釈されるけど、
int の範囲より大きい場合はそれを表せる最低限の整数型として解釈されるんだったはず。
整数型の初期化 (代入) の右辺に現れた値が左辺の型で表せるときはそのままの値であることが保証されるが、
そうでないときは一定の規則に従って縮小される。
縮小の仕方は、
左辺が unsigned のときは、左辺の型が表せる最大値に 1 足した数で右辺の modulo を取った値が左辺に入る。
左辺が signed のときは未定義。
なので、 (int が 32 ビットの大きさをもつとき) unsigned int l = -1; が 4294967295 になるのは規格通りだが、
int m = 4294967295; が -1 になるのは保証されない。
規格を確認せずに記憶で書いてるので、
もし間違ってたら誰か指摘よろー。
暗黙のキャストのせい。
整数リテラルに型を表す接尾辞がつかない場合は原則として int として解釈されるけど、
int の範囲より大きい場合はそれを表せる最低限の整数型として解釈されるんだったはず。
整数型の初期化 (代入) の右辺に現れた値が左辺の型で表せるときはそのままの値であることが保証されるが、
そうでないときは一定の規則に従って縮小される。
縮小の仕方は、
左辺が unsigned のときは、左辺の型が表せる最大値に 1 足した数で右辺の modulo を取った値が左辺に入る。
左辺が signed のときは未定義。
なので、 (int が 32 ビットの大きさをもつとき) unsigned int l = -1; が 4294967295 になるのは規格通りだが、
int m = 4294967295; が -1 になるのは保証されない。
規格を確認せずに記憶で書いてるので、
もし間違ってたら誰か指摘よろー。
2018/07/15(日) 12:01:48.69ID:WB6myqsz
c++で文字列のバイナリ読み書きで質問があります
vector<string> moji = {"aaaaaa", "bbbbbb", "ccccccccc"};
ofstream ofs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
for (int i = 0; i <= 2; i++) {
ofs2.write(moji[i].c_str(), strlen(moji[i].c_str()));
}
書き込みは、エラー無くできるのですが
ifstream ifs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
for (int i = 0; i <= 2; i++) {
ifs2.read((char*)&moji[i], strlen(moji[i].c_str()));
cout << "(" << i << ")" << moji[i] << " ";
}
読み込みは、読み込んで表示も出ますが
何かエラーが出ます
どうしてでしょうか
vector<string> moji = {"aaaaaa", "bbbbbb", "ccccccccc"};
ofstream ofs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
for (int i = 0; i <= 2; i++) {
ofs2.write(moji[i].c_str(), strlen(moji[i].c_str()));
}
書き込みは、エラー無くできるのですが
ifstream ifs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
for (int i = 0; i <= 2; i++) {
ifs2.read((char*)&moji[i], strlen(moji[i].c_str()));
cout << "(" << i << ")" << moji[i] << " ";
}
読み込みは、読み込んで表示も出ますが
何かエラーが出ます
どうしてでしょうか
2018/07/15(日) 12:06:41.50ID:lbsq5rUe
書き込んだものに区切り入れてないけどそれでいいの?
67デフォルトの名無しさん
2018/07/15(日) 12:11:00.69ID:Y0/Ay92k2018/07/15(日) 12:12:20.49ID:Y0/Ay92k
69デフォルトの名無しさん
2018/07/15(日) 12:15:07.36ID:Y0/Ay92k コンパイラーについての知識がないと理解しにくい部分でしょうか?
2018/07/15(日) 12:15:22.56ID:WB6myqsz
2018/07/15(日) 12:50:13.08ID:WB6myqsz
とりあえず、区切り入れてgetlineで一行ずつ読み込めました
vector<string> moji = {"aaaaaa", "bbbbbb", "ccccccccc"};
ofstream ofs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
for (int i = 0; i <= 2; i++) {
moji[i] += "\n";
ofs2.write(moji[i].c_str(), strlen(moji[i].c_str()));
}
ifstream ifs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
string temp;
int i = 0;
while (getline(ifs2, temp, '\n')) {
cout << "(" << i << ")" << temp << " ";
i++;
}
これでまたvector<string>に入れたらいいか
c++はHSPとかと違って難しいですね
vector<string> moji = {"aaaaaa", "bbbbbb", "ccccccccc"};
ofstream ofs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
for (int i = 0; i <= 2; i++) {
moji[i] += "\n";
ofs2.write(moji[i].c_str(), strlen(moji[i].c_str()));
}
ifstream ifs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
string temp;
int i = 0;
while (getline(ifs2, temp, '\n')) {
cout << "(" << i << ")" << temp << " ";
i++;
}
これでまたvector<string>に入れたらいいか
c++はHSPとかと違って難しいですね
2018/07/15(日) 13:00:44.43ID:oGr67yTf
2018/07/15(日) 13:02:49.96ID:oGr67yTf
あとエラー出力は正確に書いてくれないと、コード全部読まないといけないからしんどいです…
2018/07/15(日) 13:18:02.66ID:lbsq5rUe
>>67
C++はそういうコンパイルの仕方しないから
cppごとにオブジェクトファイル(クラスのインスタンスとしてのオブジェクトとかとは別の意味)というのを作ってから
オブジェクトファイル同士のリンクという作業をして目的の実行バイナリを作る
オブジェクトファイルは自分自身で完結してないといけないので、
「ValueFactoryとかいうクラスのポインタ」「ValueFactoryとかいうクラスがfriendだという情報」は持つことが出来るけど
(別のファイルがValueFactoryの実体を持ってると期待して)
ValueFactoryの実体作れとか実体使ってなんかやれ(そういう実行コードを保持しろ)と言われたら困ってしまうってこと
C++はそういうコンパイルの仕方しないから
cppごとにオブジェクトファイル(クラスのインスタンスとしてのオブジェクトとかとは別の意味)というのを作ってから
オブジェクトファイル同士のリンクという作業をして目的の実行バイナリを作る
オブジェクトファイルは自分自身で完結してないといけないので、
「ValueFactoryとかいうクラスのポインタ」「ValueFactoryとかいうクラスがfriendだという情報」は持つことが出来るけど
(別のファイルがValueFactoryの実体を持ってると期待して)
ValueFactoryの実体作れとか実体使ってなんかやれ(そういう実行コードを保持しろ)と言われたら困ってしまうってこと
2018/07/15(日) 13:19:42.19ID:WB6myqsz
2018/07/15(日) 13:42:15.67ID:oGr67yTf
もちろんバイナリ形式でもいいのだけど、その場合は文字列を固定長にするとか、tlv形式で作ってみては?
https://en.m.wikipedia.org/wiki/Type-length-value
https://en.m.wikipedia.org/wiki/Type-length-value
2018/07/15(日) 14:56:48.40ID:p2p9fdhp
大規模ファイルの読み込みについて相談しているものです。
以下調査結果です。
ファイルは上記で13GBのファイル生成したものを使用
https://ideone.com/hi8bYd
@下記コードの結果
https://ideone.com/e9iA5m
512,15 →15秒
1024,7 →7秒
2048,5 →5秒
4096,3 →3秒
8192,2 →2秒
>つづく
以下調査結果です。
ファイルは上記で13GBのファイル生成したものを使用
https://ideone.com/hi8bYd
@下記コードの結果
https://ideone.com/e9iA5m
512,15 →15秒
1024,7 →7秒
2048,5 →5秒
4096,3 →3秒
8192,2 →2秒
>つづく
2018/07/15(日) 14:58:34.48ID:p2p9fdhp
A作成した下記コードでテスト。 →約2秒
https://ideone.com/1YhaLR
(整理できておらず、かなりぐちゃぐちゃなコードですが。。)
内容:freadのみ
B上記Aで、「#define READ_MODE 1」で実行 →約25秒
内容:改行単位にするため、前スレ962の下記Cを対応したつもりのもの
A. 1行全体が連続してバッファに存在しなくてもいい作りにする
B. リングバッファ
C. fseekでファイルポインタを戻してから読み込む
D. あまりをmemcpyでバッファの先頭にコピーしてから読み込む
E. ほか
C上記Aで、「#define READ_MODE 2」で実行 →約60秒
内容:上記B+解析
Dfgetsのみ →約15秒
if((fp=fopen(file_path, "r"))==NULL){
printf("ファイルを開けません。%s",file_path);
return 0;
}
char tdata[10000];
char* data = tdata;
while( fgets(data,10000,fp) != NULL ){
data;
}
上記Aが約2秒なのにBの改行単位のケアで25秒に増加しているので、
まずここの作りがおかしいんだろうなとは思いますが、
何がおかしいのかが、まだわかっていません。
https://ideone.com/1YhaLR
(整理できておらず、かなりぐちゃぐちゃなコードですが。。)
内容:freadのみ
B上記Aで、「#define READ_MODE 1」で実行 →約25秒
内容:改行単位にするため、前スレ962の下記Cを対応したつもりのもの
A. 1行全体が連続してバッファに存在しなくてもいい作りにする
B. リングバッファ
C. fseekでファイルポインタを戻してから読み込む
D. あまりをmemcpyでバッファの先頭にコピーしてから読み込む
E. ほか
C上記Aで、「#define READ_MODE 2」で実行 →約60秒
内容:上記B+解析
Dfgetsのみ →約15秒
if((fp=fopen(file_path, "r"))==NULL){
printf("ファイルを開けません。%s",file_path);
return 0;
}
char tdata[10000];
char* data = tdata;
while( fgets(data,10000,fp) != NULL ){
data;
}
上記Aが約2秒なのにBの改行単位のケアで25秒に増加しているので、
まずここの作りがおかしいんだろうなとは思いますが、
何がおかしいのかが、まだわかっていません。
79デフォルトの名無しさん
2018/07/15(日) 16:27:56.77ID:Y0/Ay92k80デフォルトの名無しさん
2018/07/15(日) 17:27:08.76ID:1ys/w/8R fseekをつかうのなんか絶対ダメだ
fseekされることで標準関数がFILEポインタでもってるバッファも
めんどいことになってるのが容易に想像がつく
そしてさらにlseekもシステムコールも呼ばれる
標準関数の実装のされかたにもよるが
大きな性能劣化は避けられない
Dの方法でひたすら シ リ ア ル に読まないと遅くなるのは当然
そんな標準関数でやってるようなことを、
こっち側でやるならそもそも標準関数使う意味がない
普通にopen、readでこっちが渡したメモリにそのまま読みこむほうがいい
まずFILEポインタ使ってfreadしか使わないなら、はっきりいってfread使うメリットは
まったくない
関係ないようで関係ある話だが
キャッシュがきいてない状態ではposix_fadviceを呼んでおくと
シ リ ア ル に大きなファイルを読み込むときには、計算機の状態によっては
劇的に改善することがある
fseekされることで標準関数がFILEポインタでもってるバッファも
めんどいことになってるのが容易に想像がつく
そしてさらにlseekもシステムコールも呼ばれる
標準関数の実装のされかたにもよるが
大きな性能劣化は避けられない
Dの方法でひたすら シ リ ア ル に読まないと遅くなるのは当然
そんな標準関数でやってるようなことを、
こっち側でやるならそもそも標準関数使う意味がない
普通にopen、readでこっちが渡したメモリにそのまま読みこむほうがいい
まずFILEポインタ使ってfreadしか使わないなら、はっきりいってfread使うメリットは
まったくない
関係ないようで関係ある話だが
キャッシュがきいてない状態ではposix_fadviceを呼んでおくと
シ リ ア ル に大きなファイルを読み込むときには、計算機の状態によっては
劇的に改善することがある
81デフォルトの名無しさん
2018/07/15(日) 17:36:56.10ID:1ys/w/8R ちなみにファイルはUNIXでは
ブロックデバイスだからな
そのブロックデバイスをセクタ単位で
効率的に読み込むためにはどうすればいいか
あとはもう分かるな
このスレにいるサル並の知能しかないようなヤツラ以外なら
わかるハズだからな
ブロックデバイスだからな
そのブロックデバイスをセクタ単位で
効率的に読み込むためにはどうすればいいか
あとはもう分かるな
このスレにいるサル並の知能しかないようなヤツラ以外なら
わかるハズだからな
82デフォルトの名無しさん
2018/07/15(日) 18:02:19.58ID:1ys/w/8R まずストレージというハードウェアが
OSでどうやって抽象化されてるか
わかってないからな
こんな頭悪いヤツラが抽象化とかなんとかいってるワケ
きっとな前スレのソースの注釈で書いたwindowsで、キャッシュなしでReadFile呼ぶ時は
セクタの倍数単位でないと使えないという意味も分かってない
ともかくこのスレに居ついてるヤツラは頭悪い
基本的なことが分かってないからな
まずなバカはこのスレで相談することが
バカな行為であることに気付かないといけない
バカななに聞いてもムダ
的外れなコタエしか返ってこない
OSでどうやって抽象化されてるか
わかってないからな
こんな頭悪いヤツラが抽象化とかなんとかいってるワケ
きっとな前スレのソースの注釈で書いたwindowsで、キャッシュなしでReadFile呼ぶ時は
セクタの倍数単位でないと使えないという意味も分かってない
ともかくこのスレに居ついてるヤツラは頭悪い
基本的なことが分かってないからな
まずなバカはこのスレで相談することが
バカな行為であることに気付かないといけない
バカななに聞いてもムダ
的外れなコタエしか返ってこない
2018/07/15(日) 18:16:38.79ID:F1eG7opL
>>80
> FILEポインタ使ってfreadしか使わないなら、はっきりいってfread使うメリットはまったくない
メリットはあるでしょ。システムコールのreadやReadFile()と違い、
FILE*を使ったfread()はアラインメントを無視した小さいバッファサイズで読み込んでも全体としての速度低下が起きにくい恩恵がある。
> FILEポインタ使ってfreadしか使わないなら、はっきりいってfread使うメリットはまったくない
メリットはあるでしょ。システムコールのreadやReadFile()と違い、
FILE*を使ったfread()はアラインメントを無視した小さいバッファサイズで読み込んでも全体としての速度低下が起きにくい恩恵がある。
2018/07/15(日) 19:07:48.62ID:lbsq5rUe
13Gログ解析野郎と半角野郎が毎度毎度必ずコンビで出てくるのは何なんだろうなー
おっかしいなー
「ぼくちんのログ解析ソフトをぼくちんが考えた最強の名無しが作るスレ」でやってどうぞ
おっかしいなー
「ぼくちんのログ解析ソフトをぼくちんが考えた最強の名無しが作るスレ」でやってどうぞ
85デフォルトの名無しさん
2018/07/15(日) 20:22:05.00ID:1ys/w/8R 低学歴で知能低いのが答えられる質問の範囲なんかたかがしれてる
知恵遅れでも回答できる質問に限定される
こういうヤツラはYahoo知恵遅れがお似合い
もうね2ちゃんねるのクオリティーも著しく低下したもんだわ
著しくレベルの低い質問なら回答できるワケだからな
情報として保存される価値すらない
ゴミ質問とゴミ回答
知恵遅れでも回答できる質問に限定される
こういうヤツラはYahoo知恵遅れがお似合い
もうね2ちゃんねるのクオリティーも著しく低下したもんだわ
著しくレベルの低い質問なら回答できるワケだからな
情報として保存される価値すらない
ゴミ質問とゴミ回答
86デフォルトの名無しさん
2018/07/15(日) 20:27:33.82ID:1ys/w/8R 昔ならググレカスでおわるような質問を
どやがおで低学歴知恵遅れが回答するスレがココだからな
低学歴知恵遅れが活躍できる場所はココしかない
オレのナワバリを荒らすなと低学歴知恵遅れが
主張している
どやがおで低学歴知恵遅れが回答するスレがココだからな
低学歴知恵遅れが活躍できる場所はココしかない
オレのナワバリを荒らすなと低学歴知恵遅れが
主張している
2018/07/15(日) 20:39:19.46ID:oGr67yTf
あぼーん設定推奨
[ヲ-゚]
[ヲ-゚]
88デフォルトの名無しさん
2018/07/15(日) 22:46:04.59ID:GtfCPRC1 POSIXの制限に起因するパフォーマンス低下を回避するためのドライバをさっき見たばかりだな。
ハイパフォーマンスの世界にはそういうのもあるんだな。
ハイパフォーマンスの世界にはそういうのもあるんだな。
2018/07/15(日) 23:08:51.14ID:ugn7dRUi
90デフォルトの名無しさん
2018/07/16(月) 01:21:00.28ID:6luw5g3K とりあえずファイルすべての字句解析と
最低限のデータ取得できるとこまではできた
※ あとはデータを格納するだけ
テストデータのジェネレータを修正した
https://ideone.com/NWdMmL
で、とりあえず作ってみた解析のコードが↓コレ
https://ideone.com/E6QH2r
プリプロセッサにDEBUG_WRITEの定義を追加してやれば
データ取得できてることがダンプして確認できる
※ ダンプする場合は、ファイルにリダイレクトするにしても
※ 物凄い時間かかるし、物凄いディスク容量をとるから小さいテストデータでやるほうが
※ とりあえず無難
ものすごい単純なコードプロトタイプになってるから
バカでもチョンでも簡単に整理や作りかえができるようにはなってる
※ 処理内容はコードみたまんまのハズだ
※ 同じような処理がひたすら書かれてる
※ QQがなくなればめっちゃコード減るハズ
※ コードのほとんどはQQのムダ処理
最低限のデータ取得できるとこまではできた
※ あとはデータを格納するだけ
テストデータのジェネレータを修正した
https://ideone.com/NWdMmL
で、とりあえず作ってみた解析のコードが↓コレ
https://ideone.com/E6QH2r
プリプロセッサにDEBUG_WRITEの定義を追加してやれば
データ取得できてることがダンプして確認できる
※ ダンプする場合は、ファイルにリダイレクトするにしても
※ 物凄い時間かかるし、物凄いディスク容量をとるから小さいテストデータでやるほうが
※ とりあえず無難
ものすごい単純なコードプロトタイプになってるから
バカでもチョンでも簡単に整理や作りかえができるようにはなってる
※ 処理内容はコードみたまんまのハズだ
※ 同じような処理がひたすら書かれてる
※ QQがなくなればめっちゃコード減るハズ
※ コードのほとんどはQQのムダ処理
2018/07/16(月) 01:37:37.27ID:RYaEyvne
うわっ
汚いコード
汚いコード
2018/07/16(月) 10:44:37.38ID:526Z5Rhh
15GBのテキスト解析8.6秒のマシンで
>>90の時間を計ったら54秒でした。
ファイルアクセスの時間は除いた純粋な解析処理です。
これがプロとアマチュアの差ですか。
まあ54秒でも使えるレベルではあると思うんで
これで良いんじゃないですかね?
>>90の時間を計ったら54秒でした。
ファイルアクセスの時間は除いた純粋な解析処理です。
これがプロとアマチュアの差ですか。
まあ54秒でも使えるレベルではあると思うんで
これで良いんじゃないですかね?
2018/07/16(月) 11:29:13.12ID:80hpbb9v
OS のAPI を、直接呼んではいけない。
例えば、1バイト読み込みを千回やれば、千回API が呼ばれる。
ユーザーモードからカーネルモードへの、コンテキストスイッチが千回
一方、バッファリングしている、C のライブラリを使えば、
千バイト1回の読み込みで済む
ライブラリが抽象化している。
buffering stream
ユーザー → (ライブラリ) → API
例えば、1バイト読み込みを千回やれば、千回API が呼ばれる。
ユーザーモードからカーネルモードへの、コンテキストスイッチが千回
一方、バッファリングしている、C のライブラリを使えば、
千バイト1回の読み込みで済む
ライブラリが抽象化している。
buffering stream
ユーザー → (ライブラリ) → API
2018/07/16(月) 11:39:40.02ID:774eW9FT
>>90
今回相談しているものです。
ありがとうございます。
まず >>78 でAが2秒、Bが25秒の違いを調べました。
>>78 のBで実行するため昨日アップした https://ideone.com/1YhaLR に
「#define READ_MODE 1」を設定し25秒かかることを確認。
ここから後ろの処理からコメントアウトしていくと、下記行の前後で
25秒から2秒に変わりました。
88行目: data = real_data;
real_data(char型)のポインタをdata(char型のポインタ)に代入したつもりだったのですが、
もしかして実体がコピーされているのでしょうか?
>つづく
今回相談しているものです。
ありがとうございます。
まず >>78 でAが2秒、Bが25秒の違いを調べました。
>>78 のBで実行するため昨日アップした https://ideone.com/1YhaLR に
「#define READ_MODE 1」を設定し25秒かかることを確認。
ここから後ろの処理からコメントアウトしていくと、下記行の前後で
25秒から2秒に変わりました。
88行目: data = real_data;
real_data(char型)のポインタをdata(char型のポインタ)に代入したつもりだったのですが、
もしかして実体がコピーされているのでしょうか?
>つづく
2018/07/16(月) 11:41:24.00ID:774eW9FT
続けて >>90 のコードを実行してみました。
データ生成の方は、>>51 の最後に説明している、
「1つのファイル内でQQ行とx, yの後ろにくるパターンの両方は存在せず、片方が出てきたらもう片方は出てきません。」
というところで、1つのファイルに両方のフォーマットが生成されていましたが、
両方が読めれていれば特に問題はないと思います。
読み込み用のコードは自分の環境では %"PRIu64" → %" PRIu64 " とスペースを開けないとなぜかエラーになりました。
あとargv[2]がよくわかりませんでしたが実行できたのでとりあえずそのままにしています。
以下結果
## 1GB
time ./a.out aaa_1gb
strat... ./a.out aaa_1gb (null)
done... ./a.out aaa_1gb (null)
4./a.out aaa_1gb 3.69s user 0.14s system 99% cpu 3.839 total
## 5GB
time ./a.out aaa_5gb
strat... ./a.out aaa_5gb (null)
done... ./a.out aaa_5gb (null)
18./a.out aaa_5gb 17.40s user 0.78s system 99% cpu 18.216 total
## 13GB
time ./a.out aaa_13gb
strat... ./a.out aaa_13gb (null)
done... ./a.out aaa_13gb (null)
47./a.out aaa_13gb 44.99s user 1.73s system 99% cpu 46.781 total
みなさんキャッシュの話をされていて、その辺がまだあまり理解できていないのですが、
文字列解析時にはキャッシュから取り出して参照するため時間は増えるということですかね。
データ生成の方は、>>51 の最後に説明している、
「1つのファイル内でQQ行とx, yの後ろにくるパターンの両方は存在せず、片方が出てきたらもう片方は出てきません。」
というところで、1つのファイルに両方のフォーマットが生成されていましたが、
両方が読めれていれば特に問題はないと思います。
読み込み用のコードは自分の環境では %"PRIu64" → %" PRIu64 " とスペースを開けないとなぜかエラーになりました。
あとargv[2]がよくわかりませんでしたが実行できたのでとりあえずそのままにしています。
以下結果
## 1GB
time ./a.out aaa_1gb
strat... ./a.out aaa_1gb (null)
done... ./a.out aaa_1gb (null)
4./a.out aaa_1gb 3.69s user 0.14s system 99% cpu 3.839 total
## 5GB
time ./a.out aaa_5gb
strat... ./a.out aaa_5gb (null)
done... ./a.out aaa_5gb (null)
18./a.out aaa_5gb 17.40s user 0.78s system 99% cpu 18.216 total
## 13GB
time ./a.out aaa_13gb
strat... ./a.out aaa_13gb (null)
done... ./a.out aaa_13gb (null)
47./a.out aaa_13gb 44.99s user 1.73s system 99% cpu 46.781 total
みなさんキャッシュの話をされていて、その辺がまだあまり理解できていないのですが、
文字列解析時にはキャッシュから取り出して参照するため時間は増えるということですかね。
2018/07/16(月) 11:50:33.56ID:774eW9FT
あと、freadだけで2秒のものに、freadの後にからなず fseek(fp, -10000, SEEK_CUR) を実行してみましたが、
処理時間は2秒で変わりはありませんでした。
これらのことから >>94 で書いている
88行目: data = real_data;
のせいで2秒から25秒に増加しているようです。
処理時間は2秒で変わりはありませんでした。
これらのことから >>94 で書いている
88行目: data = real_data;
のせいで2秒から25秒に増加しているようです。
2018/07/16(月) 15:13:00.28ID:774eW9FT
今 >>90 のコードを >>95 と同じ環境で、readをfreadに変えて実行してみたところ下記になりました。
readとfreadで速度に変わりはなさそうです。
## 1GB(fread版)
./a.out aaa_1gb
strat... ./a.out aaa_1gb (null)
done... ./a.out aaa_1gb (null)
4
## 5GB(fread版)
./a.out aaa_5gb
strat... ./a.out aaa_5gb (null)
done... ./a.out aaa_5gb (null)
18
## 13GB(fread版)
./a.out aaa_13gb
strat... ./a.out aaa_13gb (null)
done... ./a.out aaa_13gb (null)
48
readとfreadで速度に変わりはなさそうです。
## 1GB(fread版)
./a.out aaa_1gb
strat... ./a.out aaa_1gb (null)
done... ./a.out aaa_1gb (null)
4
## 5GB(fread版)
./a.out aaa_5gb
strat... ./a.out aaa_5gb (null)
done... ./a.out aaa_5gb (null)
18
## 13GB(fread版)
./a.out aaa_13gb
strat... ./a.out aaa_13gb (null)
done... ./a.out aaa_13gb (null)
48
98デフォルトの名無しさん
2018/07/16(月) 15:37:46.05ID:6luw5g3K かわりがないとか
んなわけがないからな
先にいっておくが
ちなみにオレのコードより
おなじところまで解析できる処理を
速い速度で作れるヤツはまずいないからな
作れるもんなら作ってみればいいわ
んなわけがないからな
先にいっておくが
ちなみにオレのコードより
おなじところまで解析できる処理を
速い速度で作れるヤツはまずいないからな
作れるもんなら作ってみればいいわ
99デフォルトの名無しさん
2018/07/16(月) 15:40:29.53ID:6luw5g3K ちなみにDEBUG_WRITEを定義に追加したら死ぬほど遅いからな
ちゃんとDEBUG_WRITEをとって計測してるのかすら怪しい
バカが書いたコードより間違いないなく速いハズだからな
ちゃんとDEBUG_WRITEをとって計測してるのかすら怪しい
バカが書いたコードより間違いないなく速いハズだからな
100デフォルトの名無しさん
2018/07/16(月) 15:48:01.58ID:80hpbb9v 同じデータで、2回テストしても、
1回目は、HDD からメモリへ読み込むけど、
2回目は、既にメモリ上にデータが存在するから、HDDから読み込まない。
メモリキャッシュから読むから、HDDの読み込み速度とは違う
だから、2回目のテストの前に、
メモリキャッシュをすべて破棄しておいてから、テストをしないといけない
1回目は、HDD からメモリへ読み込むけど、
2回目は、既にメモリ上にデータが存在するから、HDDから読み込まない。
メモリキャッシュから読むから、HDDの読み込み速度とは違う
だから、2回目のテストの前に、
メモリキャッシュをすべて破棄しておいてから、テストをしないといけない
101デフォルトの名無しさん
2018/07/16(月) 15:49:56.51ID:6luw5g3K コレで他のより遅いというなら
オレはもうバカの相談には二度とのらないし
コレ以上のコードは書かない
ほぼ限界まで速度が出るようにチューニングしてるハズだからな
評価のしかたが分かってない
オレはもうバカの相談には二度とのらないし
コレ以上のコードは書かない
ほぼ限界まで速度が出るようにチューニングしてるハズだからな
評価のしかたが分かってない
102デフォルトの名無しさん
2018/07/16(月) 15:51:18.48ID:fNWu8+xr103デフォルトの名無しさん
2018/07/16(月) 15:51:33.68ID:6luw5g3K だからコードあげろよ
104デフォルトの名無しさん
2018/07/16(月) 15:52:15.83ID:fNWu8+xr ザコ
105デフォルトの名無しさん
2018/07/16(月) 15:52:15.93ID:6luw5g3K シロウトは口だけだからな
クソニートのシロウトが口をはさむ余地なんかない
クソニートのシロウトが口をはさむ余地なんかない
106デフォルトの名無しさん
2018/07/16(月) 15:53:09.83ID:6luw5g3K ザコはオマエだろ
クソニートのザコはコードあげずに
何秒とかいってるだけだからな
クソニートのザコはコードあげずに
何秒とかいってるだけだからな
107デフォルトの名無しさん
2018/07/16(月) 15:55:20.94ID:fNWu8+xr 数値への変換、何で標準ライブラリ使うのやめたの?
速いんでしょ?
www
速いんでしょ?
www
108デフォルトの名無しさん
2018/07/16(月) 15:55:41.81ID:fNWu8+xr fgetsも何で使うのやめたの?
速いんでしょ?
速いんでしょ?
109デフォルトの名無しさん
2018/07/16(月) 15:57:13.10ID:6luw5g3K 読み込み速度で問題
そしてポインタをひたすらインクリメントだけして
ひたすら最小限の参照するだけの処理より速い処理なんか
逆立ちしてもかけるワケがないからな
そしてポインタをひたすらインクリメントだけして
ひたすら最小限の参照するだけの処理より速い処理なんか
逆立ちしてもかけるワケがないからな
110デフォルトの名無しさん
2018/07/16(月) 15:58:16.80ID:6luw5g3K fgetsはシロウトが使っても概ね良好な結果が約束されてる
111デフォルトの名無しさん
2018/07/16(月) 16:01:19.01ID:fNWu8+xr >>109
だからお前はザコ
だからお前はザコ
112デフォルトの名無しさん
2018/07/16(月) 16:03:00.33ID:6luw5g3K クソニートがいきがってるしな
オレが書いたコードを超える速度がでるコードを
まずあげてみろよ
話はそこからだからな
オレが書いたコードを超える速度がでるコードを
まずあげてみろよ
話はそこからだからな
113デフォルトの名無しさん
2018/07/16(月) 16:03:52.50ID:6luw5g3K クソニートはテキトーなことばっかりいって
口だけだからな
口だけだからな
114デフォルトの名無しさん
2018/07/16(月) 16:03:56.64ID:fNWu8+xr 糞コードがなぜ糞か
どこで時間がかかるのか
それくらい自分で調べよう
どこで時間がかかるのか
それくらい自分で調べよう
115デフォルトの名無しさん
2018/07/16(月) 16:04:43.29ID:6luw5g3K だからクソニートはコードあげろよ
オレのコードにムダは一切ない
オレのコードにムダは一切ない
116デフォルトの名無しさん
2018/07/16(月) 16:05:18.19ID:fNWu8+xr 8.6秒のコードも
まだまだ改善の余地があるから
まだまだ改善の余地があるから
117デフォルトの名無しさん
2018/07/16(月) 16:05:51.54ID:6luw5g3K だからクソニートは口だけ8.6秒のコードをあげろよ
118デフォルトの名無しさん
2018/07/16(月) 16:06:30.96ID:fNWu8+xr まあせいぜい頑張ってね
ザコ
ザコ
119デフォルトの名無しさん
2018/07/16(月) 16:07:20.43ID:6luw5g3K オマエはクソニートだからな
クソニートはコードの速度の心配をするまえに
自分の心配をしたほうがいい
クソニートはコードの速度の心配をするまえに
自分の心配をしたほうがいい
120デフォルトの名無しさん
2018/07/16(月) 16:22:48.03ID:6luw5g3K https://ideone.com/e9iA5m
g++ -o baka_test $file_name
echo 512,`./baka_test $input 512` > baka_result.txt
echo 1024,`./baka_test $input 1024` >> baka_result.txt
〜
上記を13GBのファイルで試したら下記結果が出ました。
512,13
1024,7
2048,5
4096,3
8192,2
16384,2
32768,2
65536,2
131072,1
262144,3
524288,2
1048576,2
2097152,2
4194304,2
8388608,2
16777216,3
33554432,2
67108864,3
134217728,3
268435456,3
536870912,3
1073741824,3
バカが試験してシステムコール呼びだしのオーバヘッドの評価なんかすでに評価済
(システムコール呼びだしのオーバヘッドの評価なんか、バッファサイズを変更による推移をみれば簡単に評価できる)
g++ -o baka_test $file_name
echo 512,`./baka_test $input 512` > baka_result.txt
echo 1024,`./baka_test $input 1024` >> baka_result.txt
〜
上記を13GBのファイルで試したら下記結果が出ました。
512,13
1024,7
2048,5
4096,3
8192,2
16384,2
32768,2
65536,2
131072,1
262144,3
524288,2
1048576,2
2097152,2
4194304,2
8388608,2
16777216,3
33554432,2
67108864,3
134217728,3
268435456,3
536870912,3
1073741824,3
バカが試験してシステムコール呼びだしのオーバヘッドの評価なんかすでに評価済
(システムコール呼びだしのオーバヘッドの評価なんか、バッファサイズを変更による推移をみれば簡単に評価できる)
121デフォルトの名無しさん
2018/07/16(月) 16:28:07.89ID:fNWu8+xr まだキャッシュに入ってる前提でテストしてるの?
アホなの?
アホなの?
122デフォルトの名無しさん
2018/07/16(月) 16:30:26.25ID:6luw5g3K また低学歴知恵遅れのクソニートがテキトーなこといってるからな
キャッシュにのってるなら
オレのエレガントなコードを除いたすべてのクソコードも同じキャッシュがのった条件で
試験されてるわ
キャッシュにのってるなら
オレのエレガントなコードを除いたすべてのクソコードも同じキャッシュがのった条件で
試験されてるわ
123デフォルトの名無しさん
2018/07/16(月) 16:31:48.69ID:6luw5g3K 低学歴知恵遅れのクソニートってテキトーなこといって
なんかいった気になる
社会参加しないクソニートが2ちゃんねるで政治の話をするのと似てる
なんかいった気になる
社会参加しないクソニートが2ちゃんねるで政治の話をするのと似てる
124デフォルトの名無しさん
2018/07/16(月) 16:31:59.31ID:fNWu8+xr まず54秒をどうにかしろよ
125デフォルトの名無しさん
2018/07/16(月) 16:33:40.35ID:fNWu8+xr 1秒〜2秒なんてどうでもいい
キャッシュに無い時の読み込み時間
解析時間
これをどうにかしろよ
意味の無い所に時間をかける典型的なアホ
キャッシュに無い時の読み込み時間
解析時間
これをどうにかしろよ
意味の無い所に時間をかける典型的なアホ
126デフォルトの名無しさん
2018/07/16(月) 16:34:35.04ID:fNWu8+xr 木を見て森を見ず
127デフォルトの名無しさん
2018/07/16(月) 16:44:07.58ID:774eW9FT 今 >>90 の解析コード見てますがseekを使わずreadで連続して読み込むところがとても参考になります。
こうやって読み込むんですね。
こうやって読み込むんですね。
128デフォルトの名無しさん
2018/07/16(月) 16:54:07.55ID:fNWu8+xr いろいろとパクってるね
129デフォルトの名無しさん
2018/07/16(月) 18:00:25.42ID:6luw5g3K オマエはまずオレのエレガントなコードを参考するまえにな
この愚かなコードをどうにかしたほうがいい
unsigned char real_data[BUF_SIZE+1];
size = fread( &real_data, sizeof(real_data[0]), BUF_SIZE, fp);
data = real_data;
遅いどころかそもそもちゃんと動作すらするワケがない
マジでな、オマエは今までなにをやってたわけ?
小一時間問い詰めたいわ
はっきりいうわ
オマエ、才能ない
この愚かなコードをどうにかしたほうがいい
unsigned char real_data[BUF_SIZE+1];
size = fread( &real_data, sizeof(real_data[0]), BUF_SIZE, fp);
data = real_data;
遅いどころかそもそもちゃんと動作すらするワケがない
マジでな、オマエは今までなにをやってたわけ?
小一時間問い詰めたいわ
はっきりいうわ
オマエ、才能ない
130デフォルトの名無しさん
2018/07/16(月) 18:05:36.68ID:6luw5g3K オレが引用したオマエのコードが
なんでお話にならないくらいダメなのか
理由が分からないならオマエはCをさわらないほうがいい
コレはいいきれる
速く動作させたいとか以前の問題だからな
なんでお話にならないくらいダメなのか
理由が分からないならオマエはCをさわらないほうがいい
コレはいいきれる
速く動作させたいとか以前の問題だからな
131デフォルトの名無しさん
2018/07/16(月) 18:29:34.88ID:fNWu8+xr エレガントなコードwww
糞汚くて激遅なコード
お前は偉そうに語れるレベルじゃない
糞汚くて激遅なコード
お前は偉そうに語れるレベルじゃない
132デフォルトの名無しさん
2018/07/16(月) 18:30:40.10ID:fNWu8+xr ザコはザコらしくしてろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★2 [BFU★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★4 [Hitzeschleier★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 [Hitzeschleier★]
- ホリエモン、「持ち家=幸せという価値観は過去のもの」と断言「快適な住まいが欲しいなら、賃貸住宅を次々に替えていく」 [muffin★]
- 高市早苗総理「金利上昇よりも日本の成長が大事」 ★3 [Hitzeschleier★]
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ2🧪
- 今さっき西谷駅でゲロ吐いてしれっと逃げたやつ
- 自民党のヒゲ「日本側の無線でcopyとは言ったが了解という意味ではない」 [834922174]
- 【新番組】轟はじめ🐧⚡のぶんぶんぶーん🚗💨!【🏡】
- だから野球回がないアニメはクソアニメだって俺最初から言ってたじゃん
- もちもち食感って言葉があるけど、私も餅ってもちもちしてないよな
