C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■56056  Re[1]: VB2010でSelectAllのクリア方法
□投稿者/ 魔界の仮面弁士 -(2010/12/24(Fri) 16:09:28)
記事No.56051 のレス /過去ログ94より / 関連記事表示
削除チェック/

■83942  WebBrowserのスクリプトエラー
□投稿者/ JOY -(2017/04/26(Wed) 11:49:46)

    分類:[VB.NET/VB2005 以降] 

    VB2008で、WebBrowserコントロールを使ったWindowsアプリを作成しました。

    ただ、WebBrowserでjQueryを使用しているサイトを表示しようとすると、
    「jQueryが定義されていない」というようなスクリプトエラーが出ます。

    WebBrowserはIEのエンジンが使われていると聞いたことがありますが、
    自分のPC(Windows7)のIE(IE11)では問題なく表示されているので、
    WebBrowserのIEは古いものなのでしょうか?
親記事 /過去ログ143より / 関連記事表示
削除チェック/

■93174  自然ソートを高速で行う方法
□投稿者/ NNN -(2019/11/25(Mon) 21:42:23)

    分類:[.NET 全般] 

    自然ソートに関してですが、
    https://wiki.dobon.net/index.php?.NET%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%A6%B5%E6%2F111

    ここにコードが掲載されています。
    いくつか方法がありますが、
    StrCmpLogicalWを使用する方法 以外の方法だと
    Explorerのソート順と一致しないことがあるため、
    StrCmpLogicalWを使用する方法 を使っています。

    ただ、ファイル数が多いとかなり時間がかかってしまいます。

    この方法はForループで何度も二つのファイル間で比較を行うわけですが、
    何度もStrCmpLogicalW関数を呼び出すのは時間がかかるため
    最初に全ファイルをDoubleのような変数に変換して、
    後から、順番に比較するようなことをしたいのですが
    そのようなことは可能でしょうか?

    他にもっと高速な方法がありましたらお教えくださいませ。
親記事 /過去ログ161より / 関連記事表示
削除チェック/

■93180  Re[1]: 自然ソートを高速で行う方法
□投稿者/ furu -(2019/11/26(Tue) 09:40:07)
記事No.93174 のレス /過去ログ161より / 関連記事表示
削除チェック/

■93185  Re[2]: 自然ソートを高速で行う方法
□投稿者/ はまぐり -(2019/11/26(Tue) 20:41:58)
    No93174 (NNN さん) に返信
    シュワルツ変換を使ったソートならLINQのOrderByを使えば簡単にできます

    StrCmpLogicalWの実装に従ってソートキーを正規化するのは
    StrCmpLogicalWのソースコードが公開されてれば頑張りようもありますけど
    ブラックボックスなのでどうにもできないような・・・

    目的は高速化で手段としてシュワルツ変換をしようとしておられるわけですよねー
    StrCmpLogicalW関数はそんなに遅いのかなと思って試してみましたけど1億回呼んでも10秒でした、結構速いです
    シュワルツ変換は複数のフィールドでソートするときには効果的ですが今回はあまり効果なさそうな気がします

    気になるほどの時間がかかっているとするなら原因は違うところにあるんじゃないかなと
    ディスクのIOが遅いとか、furuさんの観点は鋭いと思いました

記事No.93174 のレス /過去ログ161より / 関連記事表示
削除チェック/

■93359  Re[3]: 自然ソートを高速で行う方法
□投稿者/ NNN -(2019/12/07(Sat) 12:11:42)
    ありがとうございます。
    返信遅れました
    furuさんの仰る通り、
    バブルソートを使っているのが原因でした

    ちなみに自分でクイックソートプログラムを作って比較してみたのですが、
    以下のように'Array.Sortの方が20%程度速かったのです。


    'バブルソート 7390ミリ秒
    'クイックソート 58ミリ秒
    'Array.Sort 49ミリ秒

    'Array.Sortはシュワルツ変換を使っているのでしょうか?
    あるいは、同じクイックソートだけれど、中はC++のような高速な言語で走っているので
    高速なのでしょうか?
記事No.93174 のレス /過去ログ161より / 関連記事表示
削除チェック/

■93361  Re[4]: 自然ソートを高速で行う方法
□投稿者/ キングダム -(2019/12/07(Sat) 20:42:59)
    No93359 (NNN さん) に返信

    Array.SortはkeySelectorを引数にとらないので
    シュワルツ変換は行われていないはずです

    コンパレータを渡さなければネイティブコードが呼ばれるみたいです
    コンパレータを渡したらマネージコードでソートしてますね(GitHubのソースコード見ました)

    クイックソートの実装が違えば20%くらいの
    差はあるんじゃないかなと思います

    ・ピボットの選び方を工夫する
    ・交換の仕方を工夫する
    ・再帰をループに置き換える
    ・件数が少なかったら挿入ソートに切り替える
    ・再帰が深くなったらヒープソートに切り替える

    クイックソートの実装ではこのような方法があるんでそのあたりの実装の違いで
    20%くらいは差が出るんじゃないかなと思います

    速いソートを実装するならそういった最適化をしつつ
    マルチスレッドで処理するようにするとArray.Sortを超えられると思います
記事No.93174 のレス /過去ログ161より / 関連記事表示
削除チェック/

■95642  Re[2]: クラス変数へのポインタアクセス
□投稿者/ 774RR -(2020/08/28(Fri) 14:39:34)
    もっとコメントするなら C++ では . の結合のほうが単項 * より強いので、
    *image.cols は *(image.cols) と解釈されるので . の左側はクラス型でないエラー
    image->cols と書くか (*image).cols ならたぶん質問者の意図通りっス
記事No.95637 のレス /過去ログ165より / 関連記事表示
削除チェック/

■97202  Re[1]: dataGridViewにて改行コードがある場合のみ改行
□投稿者/ 魔界の仮面弁士 -(2021/04/13(Tue) 14:52:54)
    No97200 (馬渕誠一 さん) に返信
    > どう書けばいいでしょうか?

    過去ログ No78277 に、似たような話題がありましたね。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=78277&KLOG=133


    > // dataGridView1
    (抜粋)
    > AutoSizeColumnsMode = DisplayedCells
    > AutoSizeRowsMode = DisplayedCells

    この設定は「セル内容を書き換えた時」や「ソート時」などには処理されますが、
    スクロール時には考慮されないことに注意が必要です。


    たとえば DisplayedCells モードにおいて、
    先頭行の任意の列に「ABCDEFGHIJKLMNOPQRSTUVWXYZ」と記入して自動リサイズされた後、
    垂直スクロールして、その先頭行を領域外に押し出したとします。

    その後、同列の任意行に「12345」という短文を書くと、列幅が自動縮小されます。

    この状態で、スクロールして先頭行に戻った場合、列幅は狭いままです。
    そのため、長文がセル内に収まりきらない状態になってしまいます。



    > 文字が収まるようにしたい

    パフォーマンスとのトレードオフにはなりますが、DisplayedCells モードのまま
    スクロールにも追従しようとするなら、こういう手もあります。

    dataGridView1.Scroll += delegate
    {
     dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);
     dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.DisplayedCells);
    };

    このケースは、スクロールする度にセルサイズが変わることになるのが欠点です。
    水平・垂直スクロールの両方が必要なケースでは使い勝手が悪いかもしれません。


    スクロールに影響を与えないよう、最大のセルサイズを優先する形にする場合は
    AllCells や AllCellsExceptHeaders モードを使うようにしてみてください。
    このモードは全セルが計測対象になるため、行数・列数が増えると
    DisplayedCells モードよりも負荷が上がります。

    AllCells の欠点は、殆どのセルが短文で、一つのセルだけが長文だった場合、
    長文セルにつられて、他のセルが余白ばかりになってしまうという点ですね。

    どちらが良いかはケースバイケース。


    また、予期せぬ位置で改行されてしまうワードラップの問題については、
    下記のような対処方法があります。下記は AllCells モードの例です。

    private void Form1_Load(object sender, EventArgs e)
    {
      dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
      dataGridView1.ReadOnly = false;

      dataGridView1.DataSource = null;
      dataGridView1.AutoGenerateColumns = false;
      dataGridView1.RowCount = 100;
      dataGridView1.ColumnCount = 5;

      dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
      dataGridView1.AlternatingRowsDefaultCellStyle.WrapMode = DataGridViewTriState.True;
      dataGridView1.AllowUserToResizeColumns = false;
      dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
      dataGridView1.AllowUserToResizeRows = false;
      dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
      dataGridView1.CellEndEdit += (target, arg) =>
      { // 最大幅を設定してからリサイズしなおす
        dataGridView1.Columns[arg.ColumnIndex].Width = 0x10000;
        dataGridView1.AutoResizeRow(arg.RowIndex, DataGridViewAutoSizeRowMode.AllCells);
        dataGridView1.AutoResizeColumn(arg.ColumnIndex, DataGridViewAutoSizeColumnMode.AllCells);
      };
      dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
      dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
    }
記事No.97200 のレス /過去ログ168より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -