2016-08-25 2 views
1

Object-Array enthält 700 Objekte. Ich habe Unterstreich _ each für Berechnung verwendet, um den Durchschnitt zu erhalten. Der Code funktioniert gut, aber es ist eine große Zeitverzögerung für die Berechnung. Bitte beziehen Sie sich auf den folgenden Code und beraten Sie mich._.each Leistungsproblem - Underscore.js

typesOverall= 
Analytics:{[{ 
Analytics:{ 
area:"Digital" 
category:"Analytics" 
qId:"iBWmASYL6HQMtpzGH" 
type:"Reinvent" 
userId:"2PXk3uJqKrWeJW3RW" 
val:1.333333333333333 
}, 
{ 
Analytics:{ 
area:"Digital" 
category:"Analytics" 
qId:"iBWmASYL6HQMtpzGH" 
type:"Reinvent" 
userId:"2PXk3uJqKrWeJW3RW" 
val:1.333333333333333 
}...........]} 

_.each(typesOverall, function(val, key) { 
      result[key] = _.reduce(val, function(memo, v) { 
      return memo + v.val; 
      }, 0)/val.length * 10; 
     }); 
+0

Könnten Sie sind, was 'typesOverall' wie in Ihrer Frage aussieht? – Tholle

+0

@Tholle - Ich habe meine Frage noch einmal bearbeitet. Könnten Sie es bitte beziehen? –

Antwort

1

hier ist der Code, der Anwendungen unterstreichen die _.each Funktionalität,

// The cornerstone, an `each` implementation, aka `forEach`. 
// Handles raw objects in addition to array-likes. Treats all 
// sparse array-likes as if they were dense. 

_.each = _.forEach = function(obj, iteratee, context) { 
    iteratee = optimizeCb(iteratee, context); 
    var i, length; 
    if (isArrayLike(obj)) { 
    for (i = 0, length = obj.length; i < length; i++) { 
     iteratee(obj[i], i, obj); 
    } 
    } else { 
    var keys = _.keys(obj); 
    for (i = 0, length = keys.length; i < length; i++) { 
     iteratee(obj[keys[i]], keys[i], obj); 
    } 
    } 
    return obj; 
}; 

zu implementieren, wie es klar ist, dass sie für eine schnelle Verwendung Zwecke dieser Funktion ist erstellt. Es kann Gebrauch in einfacheren Daten sein oder in denen die Leistung nicht ein großes Problem.

Aber Experten ermutigen immer, wenn Sie Ihre eigene each Funktion implementieren können, um die Berechnung zu optimieren.

Eine andere wichtige Sache ist, dass, wenn Sie viel Sorge über Ihre code performance haben, dann überlegen Sie, Ihre data architecture zu ändern und optimierten Code so viel wie möglich zu implementieren.

Und wenn es zur optimierten Code-Implementierung kommt, müssen Sie vielleicht gute Kenntnisse der Big (O) -Notation haben, die das beste, schlechteste und durchschnittliche Szenario darstellt.