性能の良いエディットコントロールはそれだけで売り物になるってことでFA
自前で描画しないとなー
マジで軽くて大容量も使えるエディタとなるとC#の仕事じゃないだろ。
VS2010のテキストエディタはWPFだよ
軽くはないけどそんなに遅くもない
糞重いせいでリリースを延期しているのだが
別にWPFじゃなくても根本的に描画を書き直したりしたらそりゃチューニングに時間かかるだろ
どう屁理屈こねようと糞重いことには変わらない現実
ロースペック自慢は他でやってくれ
熟成10年
何かの処理結果を ArrayList に保持する場合
処理するたびに new して代入するのと
最初に一回だけ new しておいて Clear() してから結果を代入するのと
どちらが望ましいんでしょうか?
結果の件数は数十万件になることもあります
clearして代入したらArrayListには同じものしか
入らないジャン
どんなの作ろうとしてるんだ
なんかの処理っていうのは別メソッドで実装してるんだよな?
Clearする必要あるの?戻り値を保持じゃなくてメソッド中で大量データを処理したいの?
つーか何を望んでるの?パフォーマンス?
964 :
961:2010/02/09(火) 10:06:02
>>962-963 済みません 説明が不十分でした
処理メソッドは処理の度に new した ArrayList に結果を設定して返し
主メソッドはいくつかの処理メソッドが返却したリストをマージ・ソートして保持します
例えば今20万件保持しているとして、次の処理で30万件返却されたとしますと
主メソッドで都度 new する場合、前の20万件のデータは GC されるまで
メモリを圧迫するのではと気になります。
Clear() すればメモリの無駄は少なくなると考えましたが、よく考えたらこれも
結局は GC 頼みになって同じなのかも・・・ Clear() の処理もコストが掛かることですし
毎回 new で問題ないですかね?
>>964の文章を理解する気力もなくなってしまった。
これが老いるというやつなのか・・・とほほ
>>965 俺も(ヽ´ω`)
五回読見返したけど、ギブアップ。
親のListをnew?子のListをnew?
親子とも最初の一度だけでいいと思うが…
ArrayListなんだし追加していくだけでいいんじゃない?
親←NULL
子←NULL
子呼び出し
子←南下1
子終了
親←親+子
(親←南下1)
子呼び出し
子←南下2
子終了
親←親+子
(親==南下1南下2)
素でボケてるか
親←NULL
子呼び出し
子←NULL
子←南下1
子終了
親←親+子
(親==南下1)
子呼び出し
子←NULL
子←南下2
子終了
親←親+子
(親==南下1南下2)
Clearしても.Capacityは変わらないだろうし、
.Capacityを減らしても内部のバッファを小さいのに切り替えるだけで
メモリの回収は結局GCなんじゃないかと思う。
親ArrayList:子で処理したArrayListをまとめる
子ArrayList:100k超のデータ数を処理する?
子のほうは保持し続ける処理がない限り処理が終わったら勝手に消える
親をnewするのは意味不明
よって何もするな
できるかできないかは別にして、数十万のオブジェクトを作成してArrayListにいれるっていうのは、このクラスの守備範囲を離れている。
数十万件を一気にメモリに載せる必要があんのか、と問いたい。
DB物故抜きしたいんじゃないの?
アホみたいに時間かかると思うけど
気になりますじゃなくて、調べれば良いじゃないか。
両方試して。
俺らには何万件のデータがどんな容量か分からんのだよ。
>例えば今20万件保持しているとして、次の処理で30万件返却されたとしますと
>主メソッドで都度 new する場合、前の20万件のデータは GC されるまで
>メモリを圧迫するのではと気になります
この部分が怖いんだが
親で保持してたListを毎回破棄するのか
何の意味があるんだかわからん
自分でArrayListとかマージするとかって書いてるのに…
保持と一旦受けでしょ。
tempなんて必要か?
しらんがなw
>>964 >今20万件保持している
親の保持List
>次の処理で30万件返却
子の返却値(=親の一時List?)
>主メソッドで都度 new する
親の一時List
>前の20万件のデータは GC されるまで
>メモリを圧迫するのではと気になります。
親の保持Listに突っ込んだ後の親の一時List
子の返却時点で上書きされないか?
add使って追加してるだけってオチ…
データベースを使うべき課題だな。
一つ言えることは、このスレはパフォーマンスに関しては結構あてにならないから
実測してみた方が良いと思うよ。
982 :
961:2010/02/09(火) 11:56:54
私の説明と能力の不足のせいで、皆様に御迷惑をお掛けしました。
申し訳ありませんでした。
真意をお伝えできなかったので混乱してしまったと思いますが
要点は
>>969,971,974であると理解しました。
もうちょっといろいろやってみます。
>>981 今回に限らず「自分で測定しろよ」ってスタンスのレスがほとんどだったと思うが…
ふらっとは立て直されてるし乗っ取りにもならないな
>>1-5の内容を張ってくるか。次は実質57でいいんだよね?
流石に1が違うのは混乱しないか
いや〜、みんな1見ないでC++の質問してくるくらいだから気がつかないよ。
javaでFileWriterクラスのwrite(int)メソッドで書き込んだファイルをC#でそのまま開けるようなメソッドはあるでしょうか?
javaで作ったファイルをバイナリエディタで見てみると、int型で値4232を書き込んだ所がE1 82 88 E1となっていて、
C#でBinaryReaderのReadInt32()メソッドで読み込むと-511147295になってしまう、といった次第で困ってます
public void write(int c)
単一の文字を書き込みます。
文字として書き込んでるらしいけど本当にそれでいいの?
>>992 javaの方で正しく書き込めたらまたおいで
995 :
992:2010/02/09(火) 21:10:46
>994
今調べたら少し勘違いしていたようですが、javaの方では入出力は問題なく行えてます。
int型の下位16ビットだけを記録しているようで、上位16ビットを使用していなかったので。
同じ変換を行うメソッドはC#には無いんでしょうか?
Javaはしらんけど
int型で値4232を書き込んだ所がE1 82 88 E1
あまりまじめに調べる気もないけど16bitだけ書いてるにしても連想ができない
8288だけを数字に直しても4232とは程遠いし
997 :
992:2010/02/09(火) 21:20:38
やっぱり一般的な変換が行われてるわけではないんですね
Javaの方のファイル作成部分を見直します
失礼しました
だから引数の型はintだけど意味的にはcharだってば>write(int)
999 :
デフォルトの名無しさん:2010/02/09(火) 21:24:54
Java屋じゃないのでJavaが独自にやってるフォーマットの読み書きできますか
といわれてもわかるわけないし
第一その16進数のエンディアンは何とか細かい情報わからねーし
ちゃんと計算してないけど、おそらくU+1088(4232)はUTF-8でE1 82 88
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。