- 題名: 構造体配列のパフォーマンスについて
- 日時: 2006/11/01 13:56:12
- ID: 18068
- この記事の返信元:
- (なし)
- この記事への返信:
- [18071] Re[1]: 構造体配列のパフォーマンスについて2006/11/01 16:31:03
- ツリーを表示
ありがとうございます。 > 結果の記載が無いようです。 紛らわしい書き方ですいません。この部分が宣言と処理の組み合わせの結果の順位になります。上から速度が速かった順です。 > 1 宣言1-(1) > 2 宣言2-(1) > 3 宣言2-(2) > 4 宣言1-(2) >「構造体を使用する理由」が無いなら、 理由と言いますか、一般的に小さなデータを頻繁に扱う場合はStructureのほうが処理が早いと入門書で読んだ記憶があったためです。 (ボックス化にまで突っ込んだ記載はありませんでした。) > また、配列よりもコレクションを使った方がよいと思います。 これはCollectionBaseを継承した独自のコレクションを定義するということででしょうか? これからそちらの方のサンプルも作ってみます。
お世話になります。下記のように独自のコレクションクラスを作成してテストしてみまし たが、ArrayList使用時と変わらないようです。なんか.NETは同じ機能を実装するのに色々 な書き方ができるので、混乱ぎみです。すべてオブジェクト指向で書くのが本来なのでしょ うが、速度等との兼ね合いがあるので、今回は構造体(Structure) + 配列でいきたいと思 います。 Public Class MyCollection Inherits CollectionBase Public Shadows Function Add(ByVal Obj As Object) As Object MyBase.List.Add(Obj) Return Obj End Function Public Shadows Sub Remove(ByVal Obj As Object) MyBase.List.Remove(Obj) End Sub End Class Private Gakkyu As New MyCollection() #関係ありませんが、アイコンはこあらを選んでるのですが、これはねずみなような・・?
Hongliangさん、ご丁寧な説明ありがとうございます。 一旦解決済みにしたのですが、説明を読んで参照型と値型でちょっと気になったことがありましたので、外しました。 例えば構造体の定義がClassとStructureでは下記のように書いた場合、動作が違ってきます。 構造体がClassの場合、新しいインスタンスを作成しないと後の代入で値が全て置き換わってしまいます。 Seito.tensu = 50 Gakkyu.Add(Seito) Seito.tensu = 100 Gakkyu.Add(Seito) 参照型なので当たり前と言われればそれまでなのですが、構造体がClassなのかStructureなのか不明なケースや今まで のVB6のType型と同じように使おうとするケースなどないのかと思いまして・・・・ ユーザー定義の構造体をClassで定義する場合、普通どのようにこの辺りをクリアするのが普通でしょうか? (VB6とは考えを変えるとか、直接構造体を触らせないなど) 初歩的なことですいませんが、よろしくお願いします。
分類:[.NET]