Changeset 12933


Ignore:
Timestamp:
Sep 28, 2011, 6:06:04 PM (11 years ago)
Author:
jordan
Message:

parsing uris is expensive, so cache the results.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/javascript/transmission.js

    r12883 r12933  
    3434                this._rows         = [];
    3535                this.dirtyTorrents = {};
     36                this.uriCache      = {};
    3637
    3738                // Initialize the clutch preferences
     
    15501551
    15511552                var torrents = this.getAllTorrents();
    1552                 for (var i=0, torrent; torrent=torrents[i]; ++i) {
     1553                for (var i=0, torrent; torrent=torrents[i]; ++i)
     1554                {
    15531555                        var names = [];
    15541556                        var trackers = torrent.getTrackers();
    1555                         for (var j=0, tracker; tracker=trackers[j]; ++j) {
    1556                                 var uri = parseUri(tracker.announce);
    1557                                 var domain = this.getDomainName(uri.host);
    1558                                 var name = this.getReadableDomain(domain);
    1559                                 if (!(name in ret))
    1560                                         ret[name] = { 'uri': uri,
    1561                                                       'domain': domain,
    1562                                                       'count': 0 };
    1563                                 if (names.indexOf(name) === -1)
    1564                                         names.push(name);
     1557                        for (var j=0, tracker; tracker=trackers[j]; ++j)
     1558                        {
     1559                                var uri, announce = tracker.announce;
     1560
     1561                                if (announce in this.uriCache)
     1562                                        uri = this.uriCache[announce];
     1563                                else {
     1564                                        uri = this.uriCache[announce] = parseUri (announce);
     1565                                        uri.domain = this.getDomainName (uri.host);
     1566                                        uri.name = this.getReadableDomain (uri.domain);
     1567                                }
     1568
     1569                                if (!(uri.name in ret))
     1570                                        ret[uri.name] = { 'uri': uri,
     1571                                                          'domain': uri.domain,
     1572                                                          'count': 0 };
     1573
     1574                                if (names.indexOf(uri.name) === -1)
     1575                                        names.push(uri.name);
    15651576                        }
    15661577                        for (var j=0, name; name=names[j]; ++j)
Note: See TracChangeset for help on using the changeset viewer.