くだすれC++Builder( ..
336:デフォルトの名無しさん
10/05/14 18:11:42
>>334
std::string str;
str.reserve(64*1024);
...
Memo1->Text = str.c_str();
でどうかね。
337:デフォルトの名無しさん
10/05/14 18:18:44
ああそうか
C++BuilderにはStringBuilderがないからか
338:デフォルトの名無しさん
10/05/14 18:28:43
>数が多くなると処理が遅くなっています。
どれくらいの量の文字列を扱っていますか?
文字列処理が遅いのか、描画が遅いのか。をまず分けたほうがよいですね。
Memo1->Text=str;
をコメントアウトして
あと、速度の話をするときは、ちゃんと時間を計りましょう。
LARGE_INTEGER _start, _end;
QueryPerformanceCounter(&_start);
QueryPerformanceCounter(&_end);
__int64 lap = _end.QuadPart - _start.QuadPart;
こんなんで、CPU のクロック単位の経過時間が計れます。
339:デフォルトの名無しさん
10/05/14 21:32:23
334です。
レスありがとうございます。
std::string str; を検討してみたいと思います。(BCBではつかえない?)
時間に関しては、文字蓄積時はあちこちなので、
時間がはかりづらいですが、
コンポーネントへの表示処理とそれまでの計算時間を
指標にして表示処理を時間的に評価してみたいと思います。
計算結果をテキストに表示する手法の常套手段が
知りたいのもありました。
なお計算は動的計画法なるもので、計算量はピンからキリまでありますので、
組み合わせが多い状態の高速化を図る予定です。
340:デフォルトの名無しさん
10/05/15 03:19:55
一般論として。
「速度をあげたい」と思ったら、まずそれを測定することを考えましょう。
測定するために対象を調査していく過程で、問題点そのものが分かってしまう場合があります。
定期的に速度を計測、比較することで、少なくとも、改造の結果かえって遅くなった。ということは
避けられるでしょう。
テストするときは単一データではなく、複数のデータを使うこと。テストデータの量を変えること。
10, 20, 50, 100, 200, 500.... といった (1, 2, 5) パターンがおすすめ。
時間がかかるので端折るときでも、桁が異なる複数のデータ量での計測を忘れずに。
ある程度、対象データ構造、アルゴリズムの癖が分かったら、本質的にどこまで速くなるのか。
を考えてみること。データが(毎回)ディスクから読み取られるなら、ディスクアクセス速度より
速くはできない。(キャッシュとか考えないと)
CPU のキャッシュを超える量のデータを扱うなら、メインメモリのアクセススピードを超えることはできない。
まぁ、ここら辺は厳密に計算する必要はなく、桁合わせ程度の概算で十分ですが、
原理上不可能な速度を追求して時間を浪費するのは避けたいですし、
逆に「もう一桁速くできるはずだ」となるかもしれません。
341:デフォルトの名無しさん
10/05/15 12:27:07
>>334
TStringStreamを使ってみてはどうだろうか?
342:デフォルトの名無しさん
10/05/17 22:05:25
TStringStream
ありがとうございます。
検討中なので結果報告できないですが、ご容赦ください
343:デフォルトの名無しさん
10/05/26 11:40:30
早く>>325を教えろつってんだ!!
344:デフォルトの名無しさん
10/05/26 21:21:46
調査中ですので、あと10年ほどお待ちください。
345:デフォルトの名無しさん
10/05/27 11:04:13
うるせー!
346:デフォルトの名無しさん
10/06/02 14:01:19
HDCをTBitmapにする方法教えて
347:デフォルトの名無しさん
10/06/02 17:25:05
SQLConnectionでmdbファイルをアクセスする方法とかを教えてくださいよ
348:デフォルトの名無しさん
10/06/02 22:59:11
>346
TImagePicture.Bitmap.HandleもHDCなので、ここに向かってBitBltすればいいんじゃない?
349:デフォルトの名無しさん
10/06/03 09:41:54
>>348
できました
350:デフォルトの名無しさん
10/06/04 15:55:05
2007でデスクトップのサイズ(横幅)を超えるフォームを作っても
実行するとデスクトップの横幅と同じサイズになってしまうのですが
これちゃんと指定したサイズになる方法を教えてください
351:デフォルトの名無しさん
10/06/04 18:06:02
さっさと教えやがれ
352:350
10/06/04 19:11:01
はよ、教えろや
役にたたん奴らばぁじゃのぉ
ウンコでも食うとれや
353:デフォルトの名無しさん
10/06/04 22:27:33
ウィンドウはデスクトップサイズを越えることができなかったはず。Windowsの制限。
クレームはゲイツかカトラーにどうぞ。
354:350
10/06/05 05:35:49
>>352
で?
355:デフォルトの名無しさん
10/06/07 10:03:47
VMなんかでホスト側の解像度を超えられないのは馬鹿じゃねとかおもう
356:デフォルトの名無しさん
10/06/11 19:36:52
C++Builderでバージョン情報の自動更新などもない状態で全く同じファイルを
コンパイルするとその都度違うファイルが出来ますがこれは何故なんでしょうか?
357:デフォルトの名無しさん
10/06/12 00:01:15
インクリメンタルリンクしてるからじゃね?
フルビルドすると同じになるはず
358:デフォルトの名無しさん
10/06/12 00:26:02
ビルドの日付が埋め込まれるから異なるとかそんな話か?
359:356
10/06/12 00:56:43
ありがとうございます
インクリメンタルリンクは切ってあります
ステートファイルの作成をしないにチェックが入っていて/Gnオプションがオプションソースに書かれています
でも毎回違うファイルになってしまいます
>>358
そういうことなのでしょうか?
どこかにオプションはありますか?
360:デフォルトの名無しさん
10/06/12 12:26:33
>>359
プロジェクト→オプション→バージョン情報とかじゃね?
ビルドの日付を埋め込むオプションは見つからんなあ
361:デフォルトの名無しさん
10/06/12 13:54:38
>>360
そうですか
バージョン情報のチェックは入ってない状態です
何で微妙に違うファイルが毎回出力されるんだろう
というかこれってうちだけの現象なんでしょうか
362:デフォルトの名無しさん
10/06/12 14:00:13
diffってみたら?
363:デフォルトの名無しさん
10/06/12 16:18:13
WindowsはPEヘッダにタイムスタンプ入るから同じEXEはできない
オプションはない
それでも2バイト前後だから10バイト以上異なるならデバッグ情報ジャマイカ?
364:デフォルトの名無しさん
10/06/12 20:30:52
成る程そういうことでしたか
大体10バイト程度ですが近くにPE\0の文字も確認できるのでそれで間違いなさそうです
勉強になりました
どうもありがとうございます
365:デフォルトの名無しさん
10/06/13 16:08:55
ようやく64bitに対応したね
366:デフォルトの名無しさん
10/06/13 16:12:43
あとはデバッガが動けばねぇ
367:デフォルトの名無しさん
10/06/13 17:11:23
すみませんが、BCB6でfastmmのフルデバッグモードを使うには
どのような設定が必要かご教示お願いします。
FastMM4.pasやFastMM4BCB.cppをプロジェクトに組み込んだのですが、
終了時にメモリリークのダイアログしかでてこないので、どこでリークしているのか
良く分かりません。
368:デフォルトの名無しさん
10/06/13 21:19:22
C++Builder使いじゃないからよくわからんけど、プロジェクトオプションでFullDebugModeを
定義済の状態にしてFastMM関係のソースをコンパイルすればいいはず(*.objか*.dcuを
一旦削除することで)。FastMM_FullDebugMode.dllを配置するのも忘れずに。
369:デフォルトの名無しさん
10/07/02 20:18:11
わかりました。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4408日前に更新/84 KB
担当:undef