Cibler des navigateurs spécifiques pose toujours un peu problème. Bien qu'il y ait certainement des moyens de le faire, ce n'est pas une méthode particulièrement maintenable car il existe de nombreux navigateurs différents et des versions de chaque navigateur, et ces navigateurs changent avec le temps, donc lesquels sont optimisés par quel code peuvent changer tout le temps. Cela crée un véritable casse-tête en matière de maintenance. Par exemple, Mobile Safari sur un iPod Touch a des caractéristiques de performance très différentes de Mobile Safari sur chaque génération différente d'iPhone ou d'iPad.
Donc ... au lieu d'essayer de détecter le type de navigateur, il est beaucoup mieux de faire une détection de fonctionnalités ou de performances et d'ajuster dynamiquement en fonction de la réaction de chaque navigateur. Bien fait, cela peut fonctionner aussi bien pour tous les navigateurs, même pour ceux que vous n'avez jamais vus ou qui ne sont pas encore sortis.
Dans votre cas, vous pourriez concevoir un test rapide de performance qui teste la performance de chacune de vos deux méthodes. S'il y a vraiment une grande différence de performance entre les deux méthodes, alors vous pourriez probablement distinguer la différence en quelques centaines de millisecondes, définir un cookie sur le navigateur local indiquant la méthode qui fonctionne le mieux, puis utiliser simplement la méthode préférée dans ce navigateur à partir de ce moment-là. Si vous le souhaitez, vous pourriez laisser le cookie expirer tous les quelques mois (pour le retester de temps en temps) ou vous pourriez mettre le numéro exact de la version du navigateur dans le cookie également et relancer les tests et définir un nouveau cookie si la version du navigateur a changé (mises à jour logicielles).
De cette manière, votre code utiliserait toujours la version la plus rapide de votre code dans tous les navigateurs, maintenant et pour toujours, sans que vous ayez jamais à maintenir/tester des milliards de navigateurs pour savoir lequel devrait être utilisé pour chacun.