次スレを立てる時は本文の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
2018/07/14(土) 17:55:20.65ID:FOAGvAbs
スレ作ってみましたが、これ設定間違ってますか?
ワッチョイほにゃららが出てきてない。
ワッチョイほにゃららが出てきてない。
2018/07/14(土) 18:42:45.47ID:p9pW3bxe
2018/07/14(土) 18:59:13.88ID:tzAF1ivs
ヘタクソかよ
2018/07/14(土) 20:33:07.04
スレ立て苦手か?
2018/07/14(土) 20:48:45.99ID:6fifTYMf
>>1乙
ume
ume
2018/07/14(土) 21:34:02.24ID:xV7EJA5w
前スレの 1N2GRIlb0
ディスクキャッシュに入ってるってずいぶん前からわかってたのに
何でムダな作業をやらせたの?
ディスクキャッシュに入ってるってずいぶん前からわかってたのに
何でムダな作業をやらせたの?
8デフォルトの名無しさん
2018/07/14(土) 21:38:31.07ID:1N2GRIlb このスレの知恵遅れたちが
どんだけ頭悪いのかよおく分かっただろ
同じ計算機で2秒で終わるような読みこみ処理で
数十秒かかるとかいってたワケだからな
相当オツムが弱い
このスレは知恵遅れしかいない
どんだけ頭悪いのかよおく分かっただろ
同じ計算機で2秒で終わるような読みこみ処理で
数十秒かかるとかいってたワケだからな
相当オツムが弱い
このスレは知恵遅れしかいない
9デフォルトの名無しさん
2018/07/14(土) 21:41:09.27ID:1N2GRIlb いまになって
分かってたとかいいだしてるしな
ディスク読む時間に知ったかぶって調子こいてた知恵遅れは
どこいったの?
分かってたとかいいだしてるしな
ディスク読む時間に知ったかぶって調子こいてた知恵遅れは
どこいったの?
2018/07/14(土) 21:42:37.85ID:xV7EJA5w
ん?
何度も指摘してたけど
何度も指摘してたけど
11デフォルトの名無しさん
2018/07/14(土) 21:43:13.23ID:1N2GRIlb 嘘コケ
ハゲ
知恵遅れは前のスレ読んで出直してこいや
ハゲ
知恵遅れは前のスレ読んで出直してこいや
12デフォルトの名無しさん
2018/07/14(土) 21:45:09.81ID:1N2GRIlb ハードディスクの内側読みこんで読みこみ時間がどうとかいってた
バカいる?
バカいる?
2018/07/14(土) 21:45:30.57ID:xV7EJA5w
測らせるならキャッシュに無い状態にしないとアホだろ
2018/07/14(土) 21:46:18.02ID:xV7EJA5w
はじめはキャッシュに入って無いんだから
15デフォルトの名無しさん
2018/07/14(土) 21:46:29.73ID:1N2GRIlb むしろなバカが指南した方法やコードでは
キャッシュのっかても数十秒かかってたってことだぞ
キャッシュのっかても数十秒かかってたってことだぞ
16デフォルトの名無しさん
2018/07/14(土) 21:48:09.38ID:1N2GRIlb このスレで教えを乞うてるヤツは
何度もデバッグで走らせてるハズのに
知恵遅れの方法やコード数十秒かかるってことだ
オレのは2秒かからない
知恵遅れは息してる?
何度もデバッグで走らせてるハズのに
知恵遅れの方法やコード数十秒かかるってことだ
オレのは2秒かからない
知恵遅れは息してる?
2018/07/14(土) 21:48:37.29ID:xV7EJA5w
測定した結果は
fgetsの17秒とreadの1〜2秒しか無い
普通に読むだけで数十秒なんて測定結果は無い
fgetsの17秒とreadの1〜2秒しか無い
普通に読むだけで数十秒なんて測定結果は無い
18デフォルトの名無しさん
2018/07/14(土) 21:49:17.53ID:1N2GRIlb 読み方次第で差は歴然と出る
オレの方法は最適な方法だからな
オレの方法は最適な方法だからな
2018/07/14(土) 21:50:16.06ID:xV7EJA5w
fgetsは速いとか言ってなかった?
今遅いことが証明されてるのはfgetsだけ
今遅いことが証明されてるのはfgetsだけ
20デフォルトの名無しさん
2018/07/14(土) 21:50:39.19ID:1N2GRIlb やっぱり知恵遅れはなにも分かってないわ
まず自分が呼んでる関数がどんな動作してるか分かってないからな
まず自分が呼んでる関数がどんな動作してるか分かってないからな
2018/07/14(土) 21:51:14.96ID:xV7EJA5w
何の工夫もないただのreadで2秒なら、
他の方法も読むだけなら2秒
他の方法も読むだけなら2秒
22デフォルトの名無しさん
2018/07/14(土) 21:51:37.65ID:1N2GRIlb やっぱりこのスレは
相当な知恵遅れしかいない
CもC++も何も分かってない
それ以前の問題
相当な知恵遅れしかいない
CもC++も何も分かってない
それ以前の問題
23デフォルトの名無しさん
2018/07/14(土) 21:53:57.67ID:1N2GRIlb 測定結果ででてるからな
相当な速度で速く読みこみたいのに標準関数のファイルポインタ使う知恵遅れなんか
まずいない
ファイルポインタ使う標準関数は
このスレにいる知恵遅れにでも簡単に使えるように
openやread使って使いやすく作ってあるだけだからな
相当な速度で速く読みこみたいのに標準関数のファイルポインタ使う知恵遅れなんか
まずいない
ファイルポインタ使う標準関数は
このスレにいる知恵遅れにでも簡単に使えるように
openやread使って使いやすく作ってあるだけだからな
2018/07/14(土) 21:54:36.27ID:xV7EJA5w
fgetsが速いとか言ってたアホが
readとfreadの差を強調する
オーバーヘッドのオーダーは1
読み込みバッファが常識的なサイズであれば無視できる
fgetsのオーバーヘッドのオーダーはn
バッファサイズによらずオーバーヘッドは無視できない
readとfreadの差を強調する
オーバーヘッドのオーダーは1
読み込みバッファが常識的なサイズであれば無視できる
fgetsのオーバーヘッドのオーダーはn
バッファサイズによらずオーバーヘッドは無視できない
25デフォルトの名無しさん
2018/07/14(土) 21:55:42.62ID:1N2GRIlb まずfreadもバッファもってるのすら分かってないからな
2018/07/14(土) 21:56:36.36ID:xV7EJA5w
freadで測定させれば証明出来るが
で、
もともと測りたかったディスクアクセスの時間は?
まさかキャッシュに入った状態が普通と考えてるわけではあるまい
で、
もともと測りたかったディスクアクセスの時間は?
まさかキャッシュに入った状態が普通と考えてるわけではあるまい
27デフォルトの名無しさん
2018/07/14(土) 21:56:51.40ID:1N2GRIlb ファイルポインタがもってるバッファから
いちいちこっちのバッファにコピーしてんのに
まずその程度のことすら分かってない
いちいちこっちのバッファにコピーしてんのに
まずその程度のことすら分かってない
28デフォルトの名無しさん
2018/07/14(土) 21:57:27.49ID:1N2GRIlb 相当頭が悪いのが
知ったかぶってるのは分かる
知ったかぶってるのは分かる
2018/07/14(土) 21:58:58.41ID:xV7EJA5w
測って見ればわかるって
で肝心の解析コードはどうした?
糞遅いコードを自信満々にあげてたけど
で肝心の解析コードはどうした?
糞遅いコードを自信満々にあげてたけど
30デフォルトの名無しさん
2018/07/14(土) 22:00:01.80ID:1N2GRIlb クソ遅い?
オレのコードを動かして速度測定したの?
オレより10倍以上低速に作る才能がある知恵遅れのくせに
オレのコードを動かして速度測定したの?
オレより10倍以上低速に作る才能がある知恵遅れのくせに
2018/07/14(土) 22:03:31.04ID:xV7EJA5w
糞遅い
間違い無い
お前の環境で15GBのテキストを作って解析時間を測ってみな
間違い無い
お前の環境で15GBのテキストを作って解析時間を測ってみな
32デフォルトの名無しさん
2018/07/14(土) 22:10:21.76ID:1N2GRIlb とりあえず
知恵遅れはほっといて
テストデータをジェネレートするコードを
前スレの内容読んでテキトーに作った
https://ideone.com/cPZvWL
baka_genでコンパイルすれば大量のテストデータを作ってくれる優れものだ
※ 指定ギガバイト数越えたら、1つのセクション書ききったら停止する
使い方
Usage:baka_gen <fileparh> <GB size>
出力されてる形式に問題がないかみといてくれ
形式が分からないと解析処理を作りようがない
明日からこのテストデータを解析する処理を作る
知恵遅れはほっといて
テストデータをジェネレートするコードを
前スレの内容読んでテキトーに作った
https://ideone.com/cPZvWL
baka_genでコンパイルすれば大量のテストデータを作ってくれる優れものだ
※ 指定ギガバイト数越えたら、1つのセクション書ききったら停止する
使い方
Usage:baka_gen <fileparh> <GB size>
出力されてる形式に問題がないかみといてくれ
形式が分からないと解析処理を作りようがない
明日からこのテストデータを解析する処理を作る
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
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★3 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」★2 [冬月記者★]
- かつや、明日からカツ丼(竹)790円→590円、ロースカツ定食830円→630円、カツカレー(竹)990円→790円 画像あり [お断り★]
- タイがカンボジアを空爆、トランプ氏仲介の和平合意は“事実上崩壊”軍事衝突へ タイ首相「もはや対話の余地ない」 [お断り★]
- 空自機レーダー照射、音声データ公開 中国 ★5 [蚤の市★]
- 【速報】 米国政府、中国が日本の自衛隊にレーダー照射を批判、同事案で中国を批判するのは初めて ★2 [お断り★]
- 防衛省「了解は言っていない」 [966095474]
- 防衛省「日本は正当な対応をした。危険行為をしたのは中国。中国は再発防止を徹底せよ」 [834922174]
- 中国、日本人tiktokの収益剥奪開始wmwmwmwmwmwm [834922174]
- 【悲報】高市「円安進むから無駄な予備費積むな?逆に円高リスクに備えるためにも予備費必要なの!😡」😨 [359965264]
- 【画像】「無料男フェラ」にハマるノンケ男性が増加「金かからない」「女より気持ちいい」 [732289945]
- 元空自「日本側は火気管制レーダーともロックオンとも言っていない。中国の探索用レーダーの主張と矛盾しない」高市 [931948549]
