Version 3 of SetOps, Union, Timing Script II

Updated 2006-04-21 17:47:31

# - * - TCL - * - # testA réglé de proc d'essai = de syndicats maximum 50 { args } { commutateur llength $$args { 0 { retour { } } 1 { retour lindex $$args 0 } défaut { le foreach a placé $$args { foreach e $$set { placez tmp($e). } } renvoyez la rangée appelle le tmp } } } le testB de proc { args } { commutateur llength $$args { 0 { retour { } } 1 { retour lindex $$args 0 } défaut { placez le foreach de tmp { } réglé $$args { foreach e $$set { tmp de lappend $$e } } # enlèvent des reproductions -- # sorte et balayent le raccourci en cas de vide ou # résultat d'simple-élément. si { llength $$tmp < 2 } { retour $$tmp } placez le tmp le lsort $$tmp a placé pour la dernière fois lindex $$tmp 0 a placé le tmp extrémité $$tmp de lrange 1 a placé le foreach $$last e de recherche $$tmp { si { la corde comparent $$e $$last! = { bout réglé de recherche $$e de lappend } $$e } testC de proc $$res du retour 0} } } } { args } { commutateur llength $$args { 0 { retour { } } 1 { défaut de retour $$args lindex 0 } { placez le foreach de tmp { } réglé $$args { foreach e $$set { tmp de lappend $$e } } # - le W enlèvent des reproductions -- # informations parasites hors de raccourci en cas de vide ou # résultat d'simple-élément. si { llength $$tmp < 2 } foreach { $$tmp de retour } e $$tmp { placez tmpa($e). } renvoyez la rangée appelle le tmpa } } } le testD de proc { args } { commutateur llength $$args { 0 { retour { } } 1 { défaut de retour $$args lindex 0 } { foreach réglé $$args { si { llength $$set > 0} { foreach $$set {. } { coupure } } } suppriment des locals d'information réglés par args } } } # UN_ne - > a, b aléatoire, non trié, intersection presque toujours vide # UN_eq - > a = b, l'ensemble aléatoire fa1 ouvrez-vous "|le /2nep UN_a_ne Ar.dat X.dat "W a placé fa2 ouvrez-vous"|le /2nep UN_a_eq Ae0.dat X.dat "W a placé fb1 ouvrez-vous"|le /2nep UN_b_ne Br.dat X.dat "W a placé fb2 ouvrez-vous"|le /2nep UN_b_eq Be0.dat X.dat "W a placé fc1 ouvrez-vous"|le /2nep UN_b_ne Cr.dat X.dat "W a placé fc2 ouvrez-vous"|le /2nep UN_b_eq Ce0.dat X.dat "W a placé fd1 ouvrez-vous"|le /2nep UN_b_ne Dr.dat X.dat "W a placé fd2 ouvrez-vous"|le /2nep UN_b_eq De0.dat X.dat "W a placé le fx ouvrez-vous"|______________________________________"met stdout du /2nep UN_x X.dat" W a placé a0 { } a placé b0 { } "; le stdout affleurant UNION met stdout "|...... A...... B...... C...... D "; stdout affleurant pour { placez I 0 } { $$i < = $$max } { augmentez I } { placez IX format %03d $$i met le stderr "* $$ix (a0) = $$a0"; le stderr affleurant met le stderr "* $$ix (b0) = $$b0"; le stderr affleurant ra1 que réglé lindex [ temps { testA $$a0 $$b0 } 1000 0 ] a placé ra2 lindex [ temps { testA $$a0 $$a0 } 1000 0 ] a placé rb1 lindex [ temps { testB $$a0 $$b0 } 1000 0 ] a placé rb2 lindex [ temps { testB $$a0 $$a0 } 1000 0 ] a placé rc1 lindex [ temps { testC $$a0 $$b0 } 1000 0 ] a placé rc2 lindex [ temps { testC $$a0 $$a0 } 1000 0 ] a placé rd1 lindex [ temps { testD $$a0 $$b0 } 1000 0 ] a placé rd2 lindex [ temps { testD $$a0 $$a0 } 1000 0 ] ______________________________________"met stdout"; le stdout affleurant met le stdout "$$ix Ne le format %7d $$ra1 format %7d $$rb1 le format %7d $$rc1 format %7d $$rd1" met le stdout "$$ix EQ le format %7d $$ra2 format %7d $$rb2 le format %7d $$rc2 format %7d $$rd2" met $$fa1 $$ra1 met $$fa2 $$ra2 met $$fb1 $$rb1 met $$fb2 $$rb2 met $$fc1 $$rc1 met $$fc2 $$rc2 met $$fd1 $$rd1 met $$fd2 $$rd2 met $$fx $$i le lappend a0 gamme de corde [ lindex [ dédoublez [ expr { le rand() }. ] 1] 0 4] lappend b0 gamme de corde [ lindex [ dédoublez [ expr { rand() }. ] 1] 0 4] } met le "----"de stderr; le stderr affleurant ______________________________________"met stdout"; fin affleurante de fin $$fa1 de fin $$fa2 de fin $$fb1 de fin $$fb2 de fin $$fc1 de fin $$fc2 de fin $$fd1 de fin $$fd2 de stdout $$fx voyez également des setops. Exécution De Catégorie