[過去ログ]
C++相談室 part130 [無断転載禁止]©2ch.net (1002レス)
C++相談室 part130 [無断転載禁止]©2ch.net http://mevius.5ch.io/test/read.cgi/tech/1490917669/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
634: デフォルトの名無しさん (スッップ Sd62-TIEP) [sage] 2017/07/05(水) 16:39:36.49 ID:/9Xtn5yvd >>633 試してみるサンクス http://mevius.5ch.io/test/read.cgi/tech/1490917669/634
635: デフォルトの名無しさん (オッペケ Sr71-F+4p) [sage] 2017/07/05(水) 16:59:04.15 ID:UhWlQCq1r Visual Studio 2017のリリースビルドで試したが>>633 の方法は倍ほど遅いような http://mevius.5ch.io/test/read.cgi/tech/1490917669/635
636: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 17:16:22.28 ID:2aUA7xnEd fread, fgets, getchar http://mevius.5ch.io/test/read.cgi/tech/1490917669/636
637: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 17:22:18.00 ID:2aUA7xnEd int n = 0; if ('0' <= ch && ch <= '9') { n *= 10; n += ch - '0'; } else { put_int(n); n = 0; } http://mevius.5ch.io/test/read.cgi/tech/1490917669/637
638: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 17:31:38.49 ID:2aUA7xnEd GetStdHandle(STD_INPUT_HANDLE) http://mevius.5ch.io/test/read.cgi/tech/1490917669/638
639: デフォルトの名無しさん (ワッチョイ c2f0-wjSU) [sage] 2017/07/05(水) 18:03:51.31 ID:IVGCprss0 大量=一行10000個程度の数字が10000行ほど? http://mevius.5ch.io/test/read.cgi/tech/1490917669/639
640: デフォルトの名無しさん (オッペケ Sr71-F+4p) [sage] 2017/07/05(水) 18:09:07.25 ID:UhWlQCq1r 自前が最速なのだろうが汎用性を考えるとお勧めできない ある環境での適当な100万個の整数読み込み時間: istream_iterator : 470ms scanf : 230ms fgetc+自前スペース解析+atoi : 175ms 最初に全部char配列に読み込み+片山式パース: 32ms http://mevius.5ch.io/test/read.cgi/tech/1490917669/640
641: デフォルトの名無しさん (ワッチョイ 46e4-ejav) [sage] 2017/07/05(水) 19:23:43.26 ID:rZavNuQl0 何のチェックもしないscanf,printfのやり方が最速なのは自明 http://mevius.5ch.io/test/read.cgi/tech/1490917669/641
642: デフォルトの名無しさん (ワッチョイ 6111-wjSU) [sage] 2017/07/05(水) 20:06:49.25 ID:tZeoWZVY0 >>640 >最初に全部char配列に読み込み+片山式パース: これって随分早いけどパースより読み込みが効いてるんじゃないの 恐らくfgets使ってるんだよね http://mevius.5ch.io/test/read.cgi/tech/1490917669/642
643: デフォルトの名無しさん (オッペケ Sr71-F+4p) [sage] 2017/07/05(水) 20:09:41.12 ID:UhWlQCq1r >>642 fgetsでなくfreadで読んだ なおこの全読み込み方式で数値の切り出しをatoiにすると80msだったので やはりI/Oの効率化が支配的と理解した http://mevius.5ch.io/test/read.cgi/tech/1490917669/643
644: デフォルトの名無しさん (ワッチョイ 6111-wjSU) [sage] 2017/07/05(水) 21:04:30.49 ID:tZeoWZVY0 >>643 てことは fgetc+自前スペース解析+atoi :175ms fread++自前スペース解析+atoi :80ms 読み込みのオーバーヘッドで175-80=95msロスしてるわけか atoiは変換不能文字とか16進とかチェックしてるからその分遅くなるんだろう 自前で10進のみに特化させるのが一番なんだけどもな http://mevius.5ch.io/test/read.cgi/tech/1490917669/644
645: デフォルトの名無しさん (スップ Sdc2-Pf3w) [sage] 2017/07/05(水) 21:05:36.71 ID:O+22iBefd 複数スレッドに分けてアセンブラの自作関数で回す http://mevius.5ch.io/test/read.cgi/tech/1490917669/645
646: デフォルトの名無しさん (スップ Sdc2-Pf3w) [sage] 2017/07/05(水) 21:07:40.11 ID:O+22iBefd 各スレッドも、複数数値を並列で動かす http://mevius.5ch.io/test/read.cgi/tech/1490917669/646
647: デフォルトの名無しさん (スップ Sdc2-Pf3w) [sage] 2017/07/05(水) 21:08:36.26 ID:O+22iBefd C++スレだった すまんこ http://mevius.5ch.io/test/read.cgi/tech/1490917669/647
648: はつみつ餃子 ◆8X2XSCHEME (ワッチョイ 8215-CicO) [sage] 2017/07/05(水) 21:23:34.13 ID:YH3wEyty0 どういう風に並列化できる? http://mevius.5ch.io/test/read.cgi/tech/1490917669/648
649: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 21:26:33.09 ID:2aUA7xnEd 処理すべきブロックに対して、ちょうどいい区切りで、等分割に近い分割をやって、それぞれを別々のスレッドで処理する。 スレッドがすべて終わったら、処理結果を結合する。 http://mevius.5ch.io/test/read.cgi/tech/1490917669/649
650: デフォルトの名無しさん (ワッチョイ 6111-wjSU) [sage] 2017/07/05(水) 21:28:54.47 ID:tZeoWZVY0 スレッドもインラインアセンブラもC++の範疇だよ ただIOはロックされるから解放待ちの時間が出来てしまう ラインごとに随時読み込んでスレッド振り分けかな パースに時間がかかるならそれも悪くないんだろうけど簡易atoi程度じゃ差は出にくい http://mevius.5ch.io/test/read.cgi/tech/1490917669/650
651: デフォルトの名無しさん (ワッチョイ c21b-8PSv) [sage] 2017/07/05(水) 21:34:38.31 ID:slEXI2jh0 原理的にはブロッキングIOのファイル読み出しの待ち時間を有効に活用すれば それが最速だけど並列化のオーバーヘッドを最小にしようと思ったら OS毎あるいはファイルIOのライブラリ毎に特化しなきゃならない気がするので面倒くさい http://mevius.5ch.io/test/read.cgi/tech/1490917669/651
652: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT) [sage] 2017/07/05(水) 21:40:11.90 ID:2aUA7xnEd #ifdef _WIN32 // Windowsの場合 ... #elif ... http://mevius.5ch.io/test/read.cgi/tech/1490917669/652
653: デフォルトの名無しさん (ワッチョイ c99a-Pf3w) [sage] 2017/07/05(水) 23:16:04.44 ID:icFnMa9s0 各スレッドも、前から順番にやってたら遅い 各スレッドのなかでも複数を同時にやらないと 例えば>>637みたいなのだと、各ステップが終わらないと次のステップに進めない 演算の遅延があるので、各演算ポートはスカスカになる HTで少しはマシにはなるが、それでもスカスカ 整数演算は同時に3個〜4個出来るのだ これを活かさないと まあいずれにしろファイルなんか使ってたら読み込み時間がほとんどなので、ガリガリにアセンブラで組む価値も
ないけど http://mevius.5ch.io/test/read.cgi/tech/1490917669/653
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 349 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.025s