File: perf.html

package info (click to toggle)
es-module-loader-0.17.js 0.17.11%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 548 kB
  • sloc: javascript: 2,324; makefile: 13
file content (89 lines) | stat: -rw-r--r-- 2,305 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<!doctype html>
  <script>
    // delete window.Promise;
  </script>
  <script src="../dist/es6-module-loader.js"></script>
  <script>
    /* PARAMETERS */
    var TREE_DEPTH = 10;
    var NUM_MODULES = 1000;

    /*
      TREE LOOKS LIKE - 

                           MODULE NUM_MODULES
                                   |
                                   |
      -------------------------------------  ... -----
      |                            |                 |
    MODULE 0              MODULE TREE_DEPTH         ...
      |                            |
    MODULE 1              MODULE TREE_DEPTH + 1
     ...                         ...
 MODULE TREE_DEPTH - 1   MODULE TREE_DEPTH * 2 - 1

THAT IS -
  DEPTH   =  TREE_DEPTH
  BREADTH =  FLOOR(NUM_MODULES / TREE_DEPTH)

    */

    /*
      
      PERF RESULTS
      ------------

      WITH 1000 modules,

      TREE_DEPTH    FULL LOAD TIME PER MODULE (including evaluation and defining)
          1          0.25ms
          10         0.27ms
          50         0.30ms
         100         0.35ms
         500         0.90ms
        1000         1.90ms

    */


    System.set('module0', System.newModule({}));
    System.instantiate = function(load) {
      var num = parseInt(load.name.substr(6));

      var deps = [];

      // the last module depends on all of them
      if (num == NUM_MODULES) {
        for (var i = 0; i < NUM_MODULES; i += TREE_DEPTH)
          deps.push('module' + i);
      }
      else if (num % TREE_DEPTH != TREE_DEPTH - 1)
        deps = ['module' + (num + 1)];

      return {
        deps: deps,
        execute: function() {
          eval(load.source);
          return System.newModule({});
        }
      };
    }

    function start() {
      document.body.innerHTML = '';
      var startTime = +Date.now();

      for (var i = 1; i <= NUM_MODULES; i++)
        System.define('module' + i, "function q() {} var p = 5;\n // non-trivial code");
      
      System.import('module' + NUM_MODULES).then(function() {
        document.body.innerHTML = ((Date.now() - startTime) / NUM_MODULES) + 'ms per module';
      }).catch(function(e) {
        setTimeout(function() {
          throw e;
        })
      });
    }
  </script>
  <body onclick="start()" style="height:100%">
    <p>Click to start</p>