[iPhone SDK] NSDictionary or Class
NSDictionaryを使用する方法とオリジナルのクラスを設計する方法の二つをデータのシリアライズと保持に使える.
2chのsubject.txtデータとすると,
NSDictionaryを使ってやると,こんな感じ.
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: title, @"title", path, @"path", [NSNumber numberWithInt:dat], @"dat", [NSNumber numberWithInt:res], @"res", nil];
クラスの方は,こんな感じか.
@interface SubjectData : NSObject { NSString *title_; NSString *path_; int dat_; int res_; } @property (nonatomic, retain) NSString* title; @property (nonatomic, retain) NSString* path; @property (nonatomic, assign) int dat; @property (nonatomic, assign) int res; @end
後,SubjectDataには,シリアライズ向けのinitWithCoderを実装.
そして,この二つでそれぞれ,700個のデータの書き出し,読み出し,作成にかかる時間を計ってみた.
[nscoderTestViewController] writeWithArchiver
0.412072
[nscoderTestViewController] loadWithArchiver
0.258862
[nscoderTestViewController] writeWithDictionary
0.534621
[nscoderTestViewController] loadWithDictionary
0.224575
[nscoderTestViewController] makeDataWithClass
0.118851
[nscoderTestViewController] makeDataWithDictionary
0.223689
読み出しと書き出しはあんまり変わらないっぽい.
ただデータの作成はクラスの方が速いっぽい.
これからは普通のデータは,Dictionaryは使わないようにして,NSCoderを使ってシリアライズするようにするか.
クラスが速いのは当たり前か.NSNumberを余計にallocするもんね・・・.