Je fais face à une grande quantité de données et je m'inquiète de l'efficacité de mes opérations à l'échelle. Après l'analyse comparative, le délai moyen d'exécution de cette chaîne de code est d'environ 0,004 seconde. Le but de cette ligne de code est de trouver la différence entre les deux valeurs dans chaque emplacement de tableau. Dans une opération précédente, 111.111 a été chargé dans les tableaux dans des emplacements contenant des données non valides. En raison de problèmes de domaine temporel étranges, je devais le faire parce que je ne pouvais pas simplement supprimer les valeurs et j'avais besoin d'un espace réservé distinct. Je pourrais probablement utiliser «nul» ici à la place. Quoi qu'il en soit, revenons à l'explication. Cette ligne de code vérifie que ni le tableau n'a cet espace réservé 111.111 dans l'emplacement actuel. Si les valeurs sont valides, alors j'effectue l'opération mathématique, sinon je veux supprimer les valeurs (ou au moins les exclure du nouveau tableau dans lequel j'écris). J'ai accompli ceci en plaçant un «néant» à cet endroit et en compactant ensuite la rangée après.Ruby: Augmenter l'efficacité
Le temps de 0.004sec pour 4000 points de données dans chaque tableau n'est pas terrible mais cette ligne de code est exécutée 25M fois. J'espère que quelqu'un pourrait être en mesure d'offrir un aperçu de la façon dont je pourrais optimiser cette ligne de code.
temp_row = row_1.zip(row_2).map do |x, y|
x == 111.111 || y == 111.111 ? nil : (x - y).abs
end.compact
'zip' n'est absolument pas nécessaire ici. –
Et oui, 4000% d'amélioration de la création de 5000 threads - c'est de la fantaisie :) –
Sans zip: http://pastie.org/10881223 –