Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Abonnements

Quizz 7

Dans mon Quizz précédent, je propose la solution suivante :

values.Aggregate((v1, v2) => v1.TakeWhile((v, index) => v2.Count() > index && v == v2.ElementAt(index)));

Simon n'a pas dût encore lire mon commentaire sinon il m'aurait déjà dit qu'en perf ce n'était pas bon. Stick out tongue

Une des raisons qui fait que ce n'est pas bon c'est le fait que pour chaque élément de v1, je recalcule v2.Count() ce qui n'est pas utile. L'idée serait de ne le calculer qu'une seule fois avant d'itérer v1.

Comment faire cela ?

Enjoy Smile

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Publié mercredi 13 août 2008 08:05 par Matthieu MEZIL

Classé sous : , , ,

Commentaires

# re: Quizz 7 @ mercredi 13 août 2008 10:29

Ca y est j'ai pas pu m'empêcher :)

Le mieux c'est même de ne pas calculer le count des sous-enumerables, car si même un seul des sous-enumerables est grand, tu auras toujours un problème, tu devras attendre d'aller au bout avant de renvoyer le premier élément. Si derrière, c'est une base de données avec des millions d'enregistrements, c'est embêtant. C'est pour cela que j'utilise les énumerateurs dans ma proposition, pour conserver le "streaming objet", à la base de Linq/yield et compagnie. A mon avis, tu dois pouvoir faire pareil.

smo

# re: Quizz 7 @ mercredi 13 août 2008 10:42

Ok Simon, commence à chercher, ça sera le Quizz 8 Wink

Soit dit en passant ça sera super facile avec la réponse de celui-là.

Finalement, ça ne sera pas si facile que ça car je ne donnerai pas la solution à laquelle je pensais (voir plus bas).

Matthieu MEZIL

# re: Quizz 7 @ mercredi 13 août 2008 11:40

Et en plus, la solution à laquelle je pense pour le Quizz 8 est 1,5 fois plus rapide que ta solution !!!

En gros, une solution contre laquelle tu ne pourras même pas raler. Stick out tongue

Matthieu MEZIL

# re: Quizz 7 @ mercredi 13 août 2008 11:57

return values.Aggregate((v1, v2) => v1.Take(v2.Count()).TakeWhile((v, index) => v == v2.ElementAt(index) ));

Ca améliore un peu, mais c'est toujours moins rapide que la solution de Simon :-((

Sacha

# re: Quizz 7 @ mercredi 13 août 2008 12:05

Bien joué ! Wink

Ce n'est pas la solution à laquelle je pensais mais j'aime beaucoup.

Du coup je ne donne pas ma solution pour vous faire chercher pour le Quizz 8. Stick out tongue

Matthieu MEZIL

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- VMMap en mode instrumentation sur système 64bit : attention à la plateforme cible du build .NET par CoqBlog le il y a 2 heures et 12 minutes

- Etendre le Team Web Access de TFS 2012 – Step 0 par Philippe Didiergeorges Aka Philess le 05-23-2013, 23:48

- Simuler facilement l’envoi de mail par Blog de Jérémy Jeanson le 05-22-2013, 12:52

- ProcDump 6.0 : support du filtrage sur messages d'exceptions .NET, des filtres multiples et du ciblage par nom de service par CoqBlog le 05-20-2013, 14:50

- Votez pour le TOP 10 des influenceurs SharePoint francophones ! par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 12:59

- [Conf’SharePoint] Dernier rappel ! :-) par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:09

- [ #SharePoint 2013 ] les modèles de sites standards… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:03

- 10 erreurs de compréhension concernant SharePoint… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 08:27

- Conf’SharePoint : 10 bonnes raisons pour ne pas la rater par Le petit blog de Pierre / Pierre's little blog le 05-14-2013, 02:24

- [Event] Soirée de lancement Agile .NET France à Lyon par Blog Agile/ALM de Vincent THAVONEKHAM le 05-13-2013, 01:29