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

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

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

全過去ログを検索

<< 0 >>
■7959  Re[7]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン -(2007/09/20(Thu) 16:36:37)
    2007/09/20(Thu) 16:38:29 編集(投稿者)

    >>外積
    > AB×AC -0.34 0.34 0.00
    > AC×AD -0.34 0.34 0.00
    >
    > 面積は、外積ベクトルの長さの総計の半分だから、0.48ですね。
    > ※面倒くさいから、計算式は、省略

    Tom Yamaさん ありがとうございます。
    外積ベクトルの長さを計算してみました。

    ベクトルの長さ
    sqrt((x)*(x)+(y)*(y)+(z)*(z))

    AB×AC = 0.480832611
    AC×AD = 0.480832611

    これの総計の半分ってことは0.48
    同じ答えになりました。ありがとう^^

    法線ベクトルの途中の計算も、教えていただけると幸いです。
記事No.7927 のレス /過去ログ20より / 関連記事表示
削除チェック/

■30513  Re[6]: ボタンクリックの描写
□投稿者/ ぽぴ王子 -(2008/12/25(Thu) 14:34:21)
>
    No30512 (panda さん) に返信
    > お返事ありがとうございます。
    >
    > 申し訳ありません。
    > 日本語がうまく伝わりませんでした。
    >
    > ボタンをクリックした際にボタンが凹みますよね?
    > ボタン上のラベルをクリックした際にも同様の動作を行いたいと言う意味でした。
    >
    > たびたび申し訳ありません。
    > このような動作は可能でしょうか?

    無限ループになっている気がします。

    (1) スレ主:ボタンの上にラベルを表示している。ラベルをクリックしたら凹む感じを出したい。
    (2) はつね:なんでボタンの上にラベル置いてるの?
    (3) スレ主:ボタンの表示を二行で書きたかったからなんだ!
    (4) はつね:だったらラベルを使うんじゃなくて、ボタンに自分で描画すればいいんじゃないかな?かな?
    (5) スレ主:うまく伝わらなかったみたいだね!ボタンの上にラベルを置い(ry
    以下(2)に戻る

    ボタンの上にラベルを置く、というところから離れてはどうでしょうか。
    そもそもがラベルを置いているのは、上記 (3) の理由によるわけで、だとすればボタンコントロールを継承
    するなりなんなりして、自分で二行分の文字列を書いてやればクリックしたときの処理も簡単になるんじゃ
    ないかな?(へこんだはへこんだ描写が必要かもしれないけど)という話で。
    それが「ボタンの上にラベルを置く」という、手段と目的が入れ替わった状態になっているので話が通じない
    感じになっているんだと思います。

    もうちょい、もうちょいと頭をやわらかくしてみてはどうでしょうか。
記事No.30505 のレス /過去ログ54より / 関連記事表示
削除チェック/

■36485  Re[3]: セットアップファイルの付加
□投稿者/ おへそ七 -(2009/05/29(Fri) 16:47:41)
    たくボンさん、なちゃさん、お返事ありがとうございました。

    > 2008では確認してないけど、セットアッププロジェクトを
    > 右クリック→[表示]→[ファイルシステム]でファイルシステムペインを表示。
    > アプリケーションのフォルダに追加したいファイルを追加でできないでしょうか?

    教えていただいた方法ですと、追加したファイルがインストールのターゲット
    ([ProgramFilesFolder][Manufacturer][Productname])へ出力されるようです。
    今回出力したかった先は、プロジェクトフォルダ下の「Debug」や「Release」
    なのです。
    私の質問の仕方が不十分だったようで申し訳ありません。

    > ビルド後イベントとか登録できませんでしたっけ?

    この方法で解決しました。
    PostBildEventプロパティに「$(ProjectDir)MyEvent.bat」を登録し
    MyEvent.batの中にファイルをコピーする処理を記述することで
    希望通りの動作をするようになりました。

    ご指導ありがとうございました。
    お世話になりました。
記事No.36473 のレス / END /過去ログ63より / 関連記事表示
削除チェック/

■83261  Re[3]: 大量のテキストファイルをマルチスレッドで高速に読み込む方法
□投稿者/ 金尾 -(2017/03/15(Wed) 22:22:09)
    すいません、上記のコードは分かりやすく書き換えたものです
    もちろん配列の定義はForの外で行っています
    また、Forの外と中でも比較を行いましたが
    それ以外に律速する要素が大きいため計算時間はほとんど差異が見られませんでした。

    ところで、
    マルチスレッド読み込みを行うプログラムを使って
    SSDとHDDで計算時間の比較を行いましたが
    全く同じ結果が得られました
    やはりストレージ速度がボトルネックにはなっていないようです

    メモリがボトルネックになっているかどうかは
    どのようにすれば調べられますでしょうか?
     
記事No.83253 のレス /過去ログ142より / 関連記事表示
削除チェック/

■83262  Re[3]: 大量のテキストファイル
□投稿者/ Azulean -(2017/03/15(Wed) 22:52:00)
    2017/03/15(Wed) 22:54:07 編集(投稿者)

    No83261 (金尾 さん) に返信
    > メモリがボトルネックになっているかどうかは
    > どのようにすれば調べられますでしょうか?

    ストレージの影響ではないと仮定しても、メモリのスピードの影響だと言い切るのは弱いと思いますね。
    (仮にメモリのスピードの影響だとしても、それはマルチスレッドにしたところで改善しないので、打つ手なしなので建設的ではありません…)
    というより、たいていはストレージよりもメモリの方が速いはずなので、「メモリ(のアクセススピード)がボトルネックである」という仮定をしたり、調べたりすることがありません。

    巨大な配列の確保・解放を繰り返した場合、スワップが発生する、ページフォールトが起きるといった意味ではメモリ・ストレージ間のデータ転送待ちになることはよくあります。
    それが起きている場合、タスクマネージャーの詳細タブでページフォールトの数が勢いよく上がるはずなので、それで観測できるかもしれません。
    それが要因の場合は、メモリの確保・解放を繰り返さない、それでも発生するならメモリ確保量・処理量を見直すってことになると思います。


    No83259 (金尾 さん) に返信
    > しかし、VB.NETで
    > Dim str() As String = Encoding.UTF8.GetString(bs).Split(CChar(vbCrLf))
    >
    > の部分をコメントアウトし、
    > バイト配列→ストリング配列の処理を行わなければ
    > 1分くらいで処理が完了するのですが
    > これはなぜでしょうか?

    「バイト列を UTF-8 と解釈して String にする処理」と「改行ごとに区切った String 配列を生み出す処理」が時間かかるってことでは。
    前者が遅いのか、後者が遅いのかは、Split なくしたコードを実験すれば切り分けられるかと。


    ところで、Split は配列を生み出すので、そういう意味だとループの中で確保・解放を助長していることになります。
    10MB のテキストというと、かなりの分量でしょうから、それを 1 万ファイルとなると、メモリの確保・解放による処理のロスは大きいかもしれませんね。
記事No.83253 のレス /過去ログ142より / 関連記事表示
削除チェック/

■83268  Re[3]: 大量のテキストファイルをマルチスレッドで高速に読み込む方法
□投稿者/ 魔界の仮面弁士 -(2017/03/16(Thu) 04:43:55)
    No83259 (金尾 さん) に返信
    > CChar(vbCrLf)
    これは ControlChars.Cr と同義ですが、本当にそれで良いのでしょうか。
    CR + LF ではなく、CR で分割していることになりますが…。


    > Dim str() As String = Encoding.UTF8.GetString(bs).Split(CChar(vbCrLf))

    パフォーマンスの検証とするならば、このようにまとめて書くのではなく、
    ・GetString メソッドの実行時間
    ・Split メソッドの実行時間
    のように、各メソッドごとに調べるべきかと思います。

    処理的には Split の方が時間がかかりそうですね。
    以下、当方環境での実験結果。


    '検証用の 10MB のダミー配列
    Dim bin10MB(10 * 1024 * 1024 - 1) As Byte
    For n = 0 To bin10MB.GetUpperBound(0)
    bin10MB(n) = &H2A
    Next
    For n = 10 To bin10MB.GetUpperBound(0) Step 255
    bin10MB(n) = 13
    Next

    'GetString および Split の速度調査
    Dim a = Now
    Dim str10MB = System.Text.Encoding.UTF8.GetString(bin10MB)
    Dim b = Now
    Dim aryLines = str10MB.Split(ControlChars.Cr)
    Dim c = Now

    Console.WriteLine((b - a).TotalSeconds) '0.0110029 〜 0.0139725
    Console.WriteLine((c - b).TotalSeconds) '0.0369978 〜 0.0409782

    上記は単一回の実行ですが、ループ処理で複数回連続で呼び出す場合は、
    前回のループ処理で使われていた String 配列(≠Byte 配列)が破棄される分のコストも
    もしかしたら足かせになってくるかもしれません。



    No83261 (金尾 さん) に返信
    > すいません、上記のコードは分かりやすく書き換えたものです
    処理は単純化してもらった方が良いですが、実際のコードとあまりに異なっていると、
    第三者が試したときに結果がブレてしまい、むしろ分かりにくくなる恐れがありそうです。


    ところで、最初の質問にあった ReadLine だったものを並列化したいという話だけなら、
    パフォーマンスはさておき、ReadLine のままで並列化できるようにも思うのですが、
    何故 ReadLine を使わない方法に変更されたのでしょうか?

    全バイナリの一括読み取りなら File.ReadAllBytes の方がスマートに書けそうですし、
    テキストファイルから「内容をまとめたデータ」を作成するための処理というのが、
    行単位の順次読み取りで済むのであれば、わざわざ自前で Split して配列化せずとも、
    File.ReadLines メソッドで十分であるような気もするのですが。

    もしかして、FileAccess 等の制御をしたいが故に FileStream を使っているということなのでしょうか。
    それとも、System.IO.File の静的メソッドだと、エラーになったとか、極端に遅くなるなどの
    何かしらの弊害があって現状のコードになったのでしょうか。
記事No.83253 のレス /過去ログ142より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -