iphone - "Streaming" data: Keep parser open or continually create a new one? -
i wanted know more efficient doing:
i'm bringing in (very small - 4kb or less each) .xml files contain gps coordinates of vehicle. parsing them (very light parsing involved) , sending them delegate.
currently, using a timer every 1 second calls following:
-(void)refreshgpsdata:(nstimer *)thetimer{ gpsparser *parser = [[gpsparser alloc] initwithname:@"route"]; [parser parserssfeed:@"http://thefeed.com/feed.xml" withdelegate:self]; [parser release]; }
my question is, more efficient in different way isn't continuously alloc , initing parser? should alloc+init 1 parser , call "parserssfeed" every 1 second. or should not use timer, instead call "parserssfeed" every time parser finishes , returns data delegate? best programming practice?
please let me know if have provided enough information. thank you!
this depends how want use parser. if parse data once minute there no need store parser in object.
if parse data 10 times second have allocate once , store parser.
as other poster (who deleted answer because not .net question) suggested made little performance test show alloc slow operation.
for (nstimeinterval = 0; < 1000; i++) { self.label1.text = [dateformatter stringfromdate:[nsdate datewithtimeintervalsincenow:i]]; }
vs
for (nstimeinterval = 0; < 1000; i++) { nsdateformatter *localdateformatter = [[nsdateformatter alloc] init]; self.label2.text = [localdateformatter stringfromdate:[nsdate datewithtimeintervalsincenow:i]]; [localdateformatter release]; }
gave result of 0.0017 seconds first version, , 0.28 seconds second version. you'll idea. yes, nsdateformatter might 1 of more complex examples of object.
if want use object parser or dateformatter store somewhere.
Comments
Post a Comment