C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
ログ内検索
キーワードを複数指定する場合は 半角スペース で区切ってください。
検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
[返信]をクリックすると返信ページへ移動します。
キーワード
/
検索条件
/
(AND)
(OR)
検索範囲
/
(現在のログ)
(全過去ログ)
(過去ログ1)
(過去ログ2)
(過去ログ3)
(過去ログ4)
(過去ログ5)
(過去ログ6)
(過去ログ7)
(過去ログ8)
(過去ログ9)
(過去ログ10)
(過去ログ11)
(過去ログ12)
(過去ログ13)
(過去ログ14)
(過去ログ15)
(過去ログ16)
(過去ログ17)
(過去ログ18)
(過去ログ19)
(過去ログ20)
(過去ログ21)
(過去ログ22)
(過去ログ23)
(過去ログ24)
(過去ログ25)
(過去ログ26)
(過去ログ27)
(過去ログ28)
(過去ログ29)
(過去ログ30)
(過去ログ31)
(過去ログ32)
(過去ログ33)
(過去ログ34)
(過去ログ35)
(過去ログ36)
(過去ログ37)
(過去ログ38)
(過去ログ39)
(過去ログ40)
(過去ログ41)
(過去ログ42)
(過去ログ43)
(過去ログ44)
(過去ログ45)
(過去ログ46)
(過去ログ47)
(過去ログ48)
(過去ログ49)
(過去ログ50)
(過去ログ51)
(過去ログ52)
(過去ログ53)
(過去ログ54)
(過去ログ55)
(過去ログ56)
(過去ログ57)
(過去ログ58)
(過去ログ59)
(過去ログ60)
(過去ログ61)
(過去ログ62)
(過去ログ63)
(過去ログ64)
(過去ログ65)
(過去ログ66)
(過去ログ67)
(過去ログ68)
(過去ログ69)
(過去ログ70)
(過去ログ71)
(過去ログ72)
(過去ログ73)
(過去ログ74)
(過去ログ75)
(過去ログ76)
(過去ログ77)
(過去ログ78)
(過去ログ79)
(過去ログ80)
(過去ログ81)
(過去ログ82)
(過去ログ83)
(過去ログ84)
(過去ログ85)
(過去ログ86)
(過去ログ87)
(過去ログ88)
(過去ログ89)
(過去ログ90)
(過去ログ91)
(過去ログ92)
(過去ログ93)
(過去ログ94)
(過去ログ95)
(過去ログ96)
(過去ログ97)
(過去ログ98)
(過去ログ99)
(過去ログ100)
(過去ログ101)
(過去ログ102)
(過去ログ103)
(過去ログ104)
(過去ログ105)
(過去ログ106)
(過去ログ107)
(過去ログ108)
(過去ログ109)
(過去ログ110)
(過去ログ111)
(過去ログ112)
(過去ログ113)
(過去ログ114)
(過去ログ115)
(過去ログ116)
(過去ログ117)
(過去ログ118)
(過去ログ119)
(過去ログ120)
(過去ログ121)
(過去ログ122)
(過去ログ123)
(過去ログ124)
(過去ログ125)
(過去ログ126)
(過去ログ127)
(過去ログ128)
(過去ログ129)
(過去ログ130)
(過去ログ131)
(過去ログ132)
(過去ログ133)
(過去ログ134)
(過去ログ135)
(過去ログ136)
(過去ログ137)
(過去ログ138)
(過去ログ139)
(過去ログ140)
(過去ログ141)
(過去ログ142)
(過去ログ143)
(過去ログ144)
(過去ログ145)
(過去ログ146)
(過去ログ147)
(過去ログ148)
(過去ログ149)
(過去ログ150)
(過去ログ151)
(過去ログ152)
(過去ログ153)
(過去ログ154)
(過去ログ155)
(過去ログ156)
(過去ログ157)
(過去ログ158)
(過去ログ159)
(過去ログ160)
(過去ログ161)
(過去ログ162)
(過去ログ163)
(過去ログ164)
(過去ログ165)
(過去ログ166)
(過去ログ167)
(過去ログ168)
(過去ログ169)
(過去ログ170)
(過去ログ171)
(過去ログ172)
(過去ログ173)
(過去ログ174)
(過去ログ175)
(過去ログ176)
(過去ログ177)
(過去ログ178)
(過去ログ179)
強調表示
/
ON
(自動リンクOFF)
結果表示件数
/
20件
30件
40件
50件
100件
記事No検索
/
ON
大文字と小文字を区別する
全過去ログを検索
ヒット / 6件
(1-6 を表示)
<<
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
-