C++相談室 part136

レス数が1000を超えています。これ以上書き込みはできません。
2018/06/07(木) 23:40:12.36ID:GNQuDMaA0
次スレを立てる時は本文の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
2018/07/14(土) 02:09:53.78ID:Eblv1Llg0
>>977
ゼロが返ってきたぞ。

ただし、 C/C++ におけるオブジェクトはメモリの一部を占有するものでありポインタで示せるものという要求があるので、
それと矛盾なく使うには色々と気を付けないといけないかもしれない。

ちなみに、クラスのメンバにストレージを割り当てないこと (要するにサイズゼロのオブジェクト) を許す [[no_unique_address]] という属性が C++20 で追加されてる。
2018/07/14(土) 09:04:29.47ID:5xFWH4XP0
そんなクソみたいな使い方しかされない機能入れるなよ。。
2018/07/14(土) 09:13:37.39ID:J4NDnBASM
複数回allocateを抑制するための機能(関数)はc++にもたくさんあるじゃない
2018/07/14(土) 10:41:27.91ID:uSYNDUAh0
>>979
非staticなメンバを一つも持たない上、そのクラスのポインタを扱わない(=多態性を必要としない)のに
継承したりメンバとして持ったときに1バイト追加されるのがうざいからだろ
2018/07/14(土) 11:49:09.59ID:6fifTYMf0
>>978
ええー!!!
struct c {
};
のsizeof(c)は1だった(と思った!)が!!
2018/07/14(土) 12:04:14.50ID:xT/OvOUN0
最適なプログラムを書く必要のない立場の雑魚は黙ってろよw
2018/07/14(土) 12:33:16.17ID:2h2LuDt30
>>981
static なメンバしかない、しかもポリモルフィズムしない(interfaceな使い方でもない)
ってそもそも継承するのが設計として間違いじゃねーの?
2018/07/14(土) 12:41:29.77ID:l5rGqYSnM
c++つかってるとロジックやアルゴリズムなどの本来の目的より
こういう横道にそれた話題ばかりになることが多い
手段が目的化するので困る
2018/07/14(土) 12:42:59.00ID:l5rGqYSnM
関心の集中の先はプログラムで実現できることになるべきだけど
c++はそっちより言語自信や仕様や実装に目が向く
時間が無駄に費やされやすい
2018/07/14(土) 12:50:50.32ID:xT/OvOUN0
最適なプログラムを書くのもC++の目的だ
ロジック以外のことに目をそらしたいなら他の言語を使え
2018/07/14(土) 12:53:19.80ID:l5rGqYSnM
c++は幅広い書き方ができてしまうのが一番困ったところ
10年前のコードが完全に動いてるにも拘わらずゴミに見えてしまう
2018/07/14(土) 12:54:52.71ID:uSYNDUAh0
>>984
非staticなメンバが無い、ってのはメンバ変数ね(非staticなメンバ関数はあっても関係ない、つまりインターフェースも含む
2018/07/14(土) 12:55:49.99ID:FOAGvAbs0
次スレ作成のルールってどうなってますか?
2018/07/14(土) 13:40:31.81ID:xV7EJA5wd
>>985
5chが異常なだけ
992デフォルトの名無しさん (ワッチョイ a580-lT5f)
垢版 |
2018/07/14(土) 13:55:09.44ID:1N2GRIlb0
linuxと聞いてた(>>743)のになんでMSのコンパイラの話がでてんねんと

まず実機でコレ走らせて試験をしなさい

@ 下のソースをコンパイルしてbaka_testという名前の実行オブジェクトをつくりなさい

 linuxなら↓こっち
 https://ideone.com/e9iA5m

 windowsなら↓こっち
 https://ideone.com/D4T1zh

A で、こんな試験をする
 https://ideone.com/82BnFZ

ちなみにwindowsはバッファサイズを
セクタバイト数の倍数でないとちゃんと動作しない
それはwindowsの仕様だからな(メモリアドレスはmallocで返ってくる先頭のポインタオフセットで問題ないことは分かってる)

バッファサイズを何バイトにするのが読みこみで効果的か
決めたほうがいい
試験結果をちゃんと報告するようにな

 あとOSは64bitでいいんだな
 それによっても話がかわってくる
993デフォルトの名無しさん (ワッチョイ a580-lT5f)
垢版 |
2018/07/14(土) 14:04:41.54ID:1N2GRIlb0
ちなみにwindowsでopenとかread使うのはクルクルパーだからな
msのランタイムがウンコなのは有名だからな

msウンコランタイムのopenでCreateFile呼び出してる
msウンコランタイムのfopenでopen呼び出してる

msウンコランタイムのreadでReadFile呼び出してる
msウンコランタイムのfgetsやfreadでread呼び出してる

わかった?
2018/07/14(土) 15:10:33.64ID:FOAGvAbs0
>>993
ありがとうございます。

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
2018/07/14(土) 15:11:30.95ID:FOAGvAbs0
これは一度に読み込むサイズは4KBを超えると速度に影響はなく、
>>962 のC,Dパターンの場合だと、最低1行分のバッファが必要なので、
その場合、一行のバイト数のMAX値で決めれば良い。
ということでしょうか?
996デフォルトの名無しさん (ワッチョイ a580-lT5f)
垢版 |
2018/07/14(土) 15:28:09.27ID:1N2GRIlb0
どんだけ速いHDDやねん。。。
すでにキャッシュされてんのか

その13とか7とか5とかいう数字は
ディスク読みこみ(ディスクの内容をバッファにコピー)にかかった時間は秒だぞ
ちゃんとコード書いてmsecにして計測したほうがよかったのかもな

暇だったら、シェルで精度の高い計測値だせるように工夫しなさい
数十秒はかかると思ってたからmsecなんか考えてもなかったわ

で、実機のOSは64ビットでいいのか
ここ結構重要だからな
997デフォルトの名無しさん (ワッチョイ a580-lT5f)
垢版 |
2018/07/14(土) 15:31:55.15ID:1N2GRIlb0
めんどいから128Kで2秒かからない
でいいや
2018/07/14(土) 15:43:51.17ID:FOAGvAbs0
すみません忘れてましたlinux 64bitです。

> 128Kで2秒かからない
これのことですね。 →131072,1

昨日の夜(今日の朝5時)までやって >>962 のCパターンでようやく一通りファイルを
読み込めるようになりましたが、やはり速度が出ていません。

13GBファイルで確認

fgetsのみ解析なし →17秒
freadで各文字列解析、数値行の演算を行ったもの →1分超え

コード書いてて気になる箇所がいくつかあるので質問しようと思ったけどもう1000になりますね。
次スレで質問させてもらいます。
999デフォルトの名無しさん (ワッチョイ a580-lT5f)
垢版 |
2018/07/14(土) 15:45:39.42ID:1N2GRIlb0
なんかよく分かってもらえてないようだが
この値はブロックで読みこむ固定のバッファリングサイズ
1行分とか関係ない

プログラムではきっと
バッファリングされたメモリを解析することになる

とりあえず今回は、必ず128K単位で読みこむ
128K単位のメモリを
正直もっと増やしてもいいとは思う

あととりあえず行の最大バイト数は256バイトで十分でいいや
2018/07/14(土) 15:50:15.57ID:okg02gBw0
ぬるぽ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 36日 16時間 10分 3秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況