[過去ログ]
【初心者歓迎】C/C++室 Ver.106【環境依存OK】 (1002レス)
【初心者歓迎】C/C++室 Ver.106【環境依存OK】 http://mevius.5ch.io/test/read.cgi/tech/1594615908/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
634: デフォルトの名無しさん [sage] 2021/04/24(土) 14:56:57 ID:LUJ0Utr0 >>633 libなのでクライアントはC++です http://mevius.5ch.io/test/read.cgi/tech/1594615908/634
635: デフォルトの名無しさん [sage] 2021/04/24(土) 15:16:56 ID:K4uxnQki そりゃ無理。その仲立ちをするためにC++/CLIがあるのに。 一応nativeのC++からでも自分でCLRを立ち上げたりしてマネージドクラスにアクセスする方法は あるらしいが、リンクしてそのまま呼ぶという形にはならない。 http://mevius.5ch.io/test/read.cgi/tech/1594615908/635
636: デフォルトの名無しさん [] 2021/04/24(土) 15:41:46 ID:at4cvaWV 自作のプログラム、起動時の読み込み処理の前に以下を入れると for(int i = 0; i < 100; ++i){ OutputDebugString("dummy!!!!\n"); } 起動時に行っている外部データの読み込みが凄く速くて これを無くすと凄く遅くなるんですが怖い… 3分くらい違いが出るので明らかにおかしい どっかでメモリでもぶっ壊れてますかね? どういう理由が考えられるでしょうか? http://mevius.5ch.io/test/read.cgi/tech/1594615908/636
637: 636 [sage] 2021/04/24(土) 15:43:36 ID:at4cvaWV さっきのダミーを入れなくても 普通にコードを追加したりしてても遅くなったり速くなったりする 別に読み込み処理の部分とは関係ないところでも。 なんでだろう? http://mevius.5ch.io/test/read.cgi/tech/1594615908/637
638: デフォルトの名無しさん [sage] 2021/04/24(土) 15:54:20 ID:hc4SaSPr >>637 それは、本当に native の C++? もしかして、C#のC++/CLI とか? http://mevius.5ch.io/test/read.cgi/tech/1594615908/638
639: デフォルトの名無しさん [sage] 2021/04/24(土) 16:03:17 ID:lkpB631F コンパイラはほんと何してるのか分からんから、問題の部分だけ切り出したのを.sへ吐かせて読みなさい 10行程度のcコードなら、edxとか変な名前のは取り敢えず変数だなって思って追えば、アセンブリ知らずとも大体分かるよ http://mevius.5ch.io/test/read.cgi/tech/1594615908/639
640: デフォルトの名無しさん [sage] 2021/04/24(土) 20:39:49 ID:LUJ0Utr0 >>635 いや、 C++ライブラリ内にマネージクラスを作って マネージのC++プロジェクトから 呼び出したいだけ DLLだったら、C#のDLLからマネージクラスを呼び出すのと 理屈上同じだからできそうな気がするのだけれど 以前実装した時はInterfaceだけ公開して 呼び出されるとそのインスタンスを返す、みたいなことをしたんだけれど http://mevius.5ch.io/test/read.cgi/tech/1594615908/640
641: デフォルトの名無しさん [sage] 2021/04/24(土) 21:31:19 ID:+v1plSJo >>640 .NETはstatic libraryをサポートしていない 出来上がった.libにはそのマネージドクラスのメタデータとか入ってないんじゃない? http://mevius.5ch.io/test/read.cgi/tech/1594615908/641
642: デフォルトの名無しさん [sage] 2021/04/25(日) 00:05:51 ID:Oojm0ZzH >>641 結局そういうことだよね なんか普通にlibのクラスを呼び出せますみたいなのをサンプル付きで出してた記事があってさ…。 まあstaticメソッドしかないクラスばかりだから、アンマネージクラスで公開するか、namespaceでまとめます。 ありがとうございました。 http://mevius.5ch.io/test/read.cgi/tech/1594615908/642
643: 636 [] 2021/04/25(日) 00:07:18 ID:sRfn5IZk >>638 C++とWin32APIのプログラムです >>639 これは自分へのレスですか? 特に遅くなる以外は止まったりする事もないので 困ることはないですがなんか気持ち悪い… http://mevius.5ch.io/test/read.cgi/tech/1594615908/643
644: デフォルトの名無しさん [sage] 2021/04/25(日) 03:40:15 ID:vJWG11Gh >>643 外部データの読み込みは、fopen, _open, CreateFile、CFile のどの系統を使 ってる? http://mevius.5ch.io/test/read.cgi/tech/1594615908/644
645: デフォルトの名無しさん [sage] 2021/04/25(日) 03:43:25 ID:vJWG11Gh >>643 関係ないかもしれないが、HDDが寿命で故障寸前の時にHDDの読み込みが 時々極端に遅くなったりする現象を経験したことがある。 その場合は、そのプログラム以外でも同様の現象が起きるが。 http://mevius.5ch.io/test/read.cgi/tech/1594615908/645
646: デフォルトの名無しさん [sage] 2021/04/25(日) 03:49:56 ID:vJWG11Gh >>645 もし、他のアプリやファイルマネージャーも遅くなることがあるなら、 CrystalDiskInfoなどで診断してみて欲しい。 そのアプリだけ遅くなるが、アプリの動作は正常、というなら、 メモリーやスレッドやOSリソースの使いすぎなども考えられなくは無いが。 何か極端に変わったことしてたりしない? http://mevius.5ch.io/test/read.cgi/tech/1594615908/646
647: デフォルトの名無しさん [sage] 2021/04/25(日) 09:07:00 ID:x26Nnfhp OutPutDegugなんちゃらの関数がファイル出力してるなら、単純にそのドライブのアクセス準備が整ってないとか。 以前、SSDに同じファイル名で一時ファイルの作成と削除を繰り返したら、SSDの仕組み上めっちゃ遅くなったことがある。 http://mevius.5ch.io/test/read.cgi/tech/1594615908/647
648: デフォルトの名無しさん [sage] 2021/04/25(日) 09:59:46 ID:j6IXZwA/ >>642 どこの記事? ちょっと気になった http://mevius.5ch.io/test/read.cgi/tech/1594615908/648
649: 636 [sage] 2021/04/25(日) 10:38:16 ID:sRfn5IZk >>645-647 遅くなる原因の個所が分かった! 画像を読み込む時にメモリを操作して 16bitで読み込む部分があるんだけど これを32bitで読み込むようにすると どんなコードでもまったく遅くならない。 メモリの操作の部分がおかしかったみたい。 自分で書いたコードじゃないのでよくわからない。 32bitのやつと16bitのやつを載せるのでおかしい所あったら教えて。 http://mevius.5ch.io/test/read.cgi/tech/1594615908/649
650: 636 [sage] 2021/04/25(日) 10:39:18 ID:sRfn5IZk これは遅くならないコード int X = 0; for(int y = ImageHeight - 1; y >= 0; --y){ X = 0; for(int x = 0; x < ImageWidth; ++x){ pPx[X] = ((DWORD*)pSrcBuf)[x + (y * ImageWidth)]; ++X; } pPx += Pitch; } http://mevius.5ch.io/test/read.cgi/tech/1594615908/650
651: 636 [sage] 2021/04/25(日) 10:42:37 ID:sRfn5IZk これが遅くなる場合があるコード WORD px, tmp; BYTE b; int X = 0; for(int y = ImageHeight - 1; y >= 0; --y){ X = 0; for(int x = 0; x < ImageWidth; ++x){ px = 0x00000000; pPx[X] = px; b = (BYTE)((((DWORD*)pSrcBuf)[x + (y * ImageWidth)] & 0xff000000) >> 24); //A tmp = 15 * (b / 255.f); px |= tmp << 12; b = (BYTE)((((DWORD*)pSrcBuf)[x + (y * ImageWidth)] & 0x00ff0000) >> 16); //R tmp = 15 * (b / 255.f); px |= tmp << 8;
b = (BYTE)((((DWORD*)pSrcBuf)[x + (y * ImageWidth)] & 0x0000ff00) >> 8); //G tmp = 15 * (b / 255.f); px |= tmp << 4; b = (BYTE)((((DWORD*)pSrcBuf)[x + (y * ImageWidth)] & 0x000000ff)); //B tmp = 15 * (b / 255.f); px |= tmp; pPx[X] = px; ++X; } pPx += Pitch; } http://mevius.5ch.io/test/read.cgi/tech/1594615908/651
652: 636 [sage] 2021/04/25(日) 10:46:22 ID:sRfn5IZk pPxは、32bitの時はDWORD*で、16bitの時はWORD*になってた。 全て載せると長くなるので変更すると速度が変わる部分だけ載せたよ。 16bitの方でも>>636のダミーを入れれば遅くならないんだよね。 やっぱメモリが壊れてるのかな? http://mevius.5ch.io/test/read.cgi/tech/1594615908/652
653: デフォルトの名無しさん [sage] 2021/04/25(日) 11:02:40 ID:vJWG11Gh >>651 pSrcBuf, pPx, Pitch の型、及び、それらを初期化しているコードが重要。 そこに問題があるとバッファオーバーランしている可能性が捨てきれない。 http://mevius.5ch.io/test/read.cgi/tech/1594615908/653
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 349 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.017s