ReloadData.. avec des rames

2»

Réponses

  • schlumschlum Membre
    16:46 modifié #32
    Tu remarqueras d'ailleurs que j'ai des résultats opposés aux tiens pour le " sortedArrayHint "
    Pour moi ça prend plus de temps avec que sans  :o

    (et l'insertion dichotomique est en moyenne 1000 fois plus rapide que les deux autres méthodes...)
  • Philippe49Philippe49 Membre
    avril 2008 modifié #33
    Désolé.
    Ok un bug pour moi. Il vient de la prise du temps par NSDate : j'ai mis [NSDate dateWithTimeIntervalSinceNow:1] au lieu de [NSDate dateWithTimeIntervalSinceNow:0], ce qui mettait tout en complément à  1 !
    La dichotomie prend maintenant 0,0001 secondes. (fonction compare au lieu de alphabeticSort)

    et la logique se remet en place.
  • schlumschlum Membre
    16:46 modifié #34
    Et a final, tu as aussi le " sortedArrayHint " moins performant que le tri sans hint ?  :o
  • Philippe49Philippe49 Membre
    16:46 modifié #35
    Pour moi avec hint est beaucoup plus rapide
    % pgm
    AAAA
    AAAB
    AAAC
    AAAD
    AAAE
    2008-04-11 18:48:41.786 pgm[2696:10b] with hint : 0.772719
    AAAA
    AAAB
    AAAC
    AAAC&
    AAAD
    2008-04-11 18:48:46.948 pgm[2696:10b] without hint : 5.162358
    %

    <br />#import &lt;Foundation/Foundation.h&gt;<br /><br />NSInteger alphabeticSort(id string1, id string2, void *reverse)<br />{<br />&nbsp; &nbsp; if ((NSInteger *)reverse == NO) {<br />&nbsp; &nbsp; &nbsp; &nbsp; return [string2 compare:string1];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; return [string1 compare:string2];<br />}<br /><br /><br />int main(int argc, char**argv){<br />	NSAutoreleasePool * pool=[[NSAutoreleasePool alloc] init];<br />	NSMutableArray *anArray =[[NSMutableArray alloc] initWithCapacity:1+32*32*32*32];<br />	char i,j,k,l;<br />	for(i=&#39;A&#39;;i&lt;&#39;A&#39;+32;i++) 	for(j=&#39;A&#39;;j&lt;&#39;A&#39;+32;j++)	for(k=&#39;A&#39;;k&lt;&#39;A&#39;+32;k++)	for(l=&#39;A&#39;;l&lt;&#39;A&#39;+32;l++) {<br />		[anArray addObject:[NSString stringWithFormat:@&quot;%c%c%c%c&quot;,i,j,k,l]];<br />	}<br />	for (i=0;i&lt;5;i++) fprintf(stderr,&quot;%s&#092;n&quot;,[[anArray objectAtIndex:i] UTF8String]);<br /><br />	struct timeval tv;<br />	gettimeofday(&amp;tv,0);<br />	unsigned long long t0 = tv.tv_sec*1000*1000+tv.tv_usec;<br /><br /><br />	NSData *sortedArrayHint = [anArray sortedArrayHint];<br />	[anArray addObject:[NSString stringWithString:@&quot;AAAC&amp;&quot;]];<br />	NSInteger reverse=NO;<br />	NSMutableArray * newArray=[NSMutableArray arrayWithArray:[anArray sortedArrayUsingFunction:alphabeticSort context:&amp;reverse hint:sortedArrayHint]];<br />//	[anArray release];<br /><br />	gettimeofday(&amp;tv,0);<br />	unsigned long long t1 = tv.tv_sec*1000*1000+tv.tv_usec;	<br /><br />	NSLog(@&quot;with hint : %f&quot;,(t1-t0)/(1000.*1000.));<br />	for (i=0;i&lt;5;i++) fprintf(stderr,&quot;%s&#092;n&quot;,[[newArray objectAtIndex:i] UTF8String]);<br />	<br />	newArray=[NSMutableArray arrayWithArray:[anArray sortedArrayUsingFunction:alphabeticSort context:&amp;reverse ]];<br /><br />	gettimeofday(&amp;tv,0);<br />	unsigned long long t2 = tv.tv_sec*1000*1000+tv.tv_usec;	<br />	NSLog(@&quot;without hint : %f&quot;,(t2-t1)/(1000.*1000.));	<br />	<br /><br />	[pool release];<br />	return 0;<br />}<br />
    



  • Philippe49Philippe49 Membre
    16:46 modifié #36
    Par contre avec hint:nil comme tu l'écris, j'arrive à  la même conclusion 0.52 secondes.
  • schlumschlum Membre
    16:46 modifié #37
    dans 1207932872:

    Par contre avec hint:nil comme tu l'écris, j'arrive à  la même conclusion 0.52 secondes.


    Y a des trucs bizarres des fois quand même  :P
    Ceci dit, effectivement, hint=nil n'est peut-être pas un cas prévu, et du coup il ferait n'importe quoi...
    Pourtant ça se trouve au bon endroit au final.
Connectez-vous ou Inscrivez-vous pour répondre.