monomorphism vs polymorphism

JavaScript performance comparison

Test case created by Pablo

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  var f = function(obj, step){
      return obj.x + step;
  }
  

};

Benchmark.prototype.teardown = function() {
  var f = null;

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
calling monomorphic function
f({x:210, y:10}, 10);
f({x:211, y:11}, 11);
f({x:212, y:12}, 12);
f({x:213, y:13}, 13);
f({x:214, y:14}, 14);
f({x:215, y:15}, 15);
f({x:216, y:16}, 16);
f({x:217, y:17}, 17);
f({x:218, y:18}, 18);
f({x:219, y:19}, 19);
f({x:220, y:20}, 20);
f({x:221, y:21}, 21);
f({x:222, y:22}, 22);
f({x:223, y:23}, 23);
f({x:224, y:24}, 24);
f({x:225, y:25}, 25);
f({x:226, y:26}, 26);
f({x:227, y:27}, 27);
f({x:228, y:28}, 28);
f({x:229, y:29}, 29);
f({x:230, y:30}, 30);
f({x:231, y:31}, 31);
f({x:232, y:32}, 32);
f({x:233, y:33}, 33);
f({x:234, y:34}, 34);
f({x:235, y:35}, 35);
f({x:236, y:36}, 36);
f({x:237, y:37}, 37);
f({x:238, y:38}, 38);
f({x:239, y:39}, 39);
f({x:240, y:40}, 40);
f({x:241, y:41}, 41);
f({x:242, y:42}, 42);
f({x:243, y:43}, 43);
f({x:244, y:44}, 44);
f({x:245, y:45}, 45);
f({x:246, y:46}, 46);
f({x:247, y:47}, 47);
f({x:248, y:48}, 48);
f({x:249, y:49}, 49);
f({x:250, y:50}, 50);
f({x:251, y:51}, 51);
f({x:252, y:52}, 52);
f({x:253, y:53}, 53);
f({x:254, y:54}, 54);
f({x:255, y:55}, 55);
f({x:256, y:56}, 56);
f({x:257, y:57}, 57);
f({x:258, y:58}, 58);
f({x:259, y:59}, 59);
f({x:260, y:60}, 60);
f({x:261, y:61}, 61);
f({x:262, y:62}, 62);
f({x:263, y:63}, 63);
f({x:264, y:64}, 64);
f({x:265, y:65}, 65);
f({x:266, y:66}, 66);
f({x:267, y:67}, 67);
f({x:268, y:68}, 68);
f({x:269, y:69}, 68);
pending…
calling polymorphic
f({x:210, y:10}, 10);
f({x:211, z:11}, 11);
f({x:212, a:12}, 12);
f({x:213, y:13}, 13);
f({x:214, z:14}, 14);
f({x:215, a:15}, 15);
f({x:216, y:16}, 16);
f({x:217, z:17}, 17);
f({x:218, a:18}, 18);
f({x:219, y:19}, 19);
f({x:220, z:20}, 20);
f({x:221, a:21}, 21);
f({x:222, y:22}, 22);
f({x:223, z:23}, 23);
f({x:224, a:24}, 24);
f({x:225, y:25}, 25);
f({x:226, z:26}, 26);
f({x:227, a:27}, 27);
f({x:228, y:28}, 28);
f({x:229, z:29}, 29);
f({x:230, a:30}, 30);
f({x:231, y:31}, 31);
f({x:232, z:32}, 32);
f({x:233, a:33}, 33);
f({x:234, y:34}, 34);
f({x:235, z:35}, 35);
f({x:236, a:36}, 36);
f({x:237, y:37}, 37);
f({x:238, z:38}, 38);
f({x:239, a:39}, 39);
f({x:240, y:40}, 40);
f({x:241, z:41}, 41);
f({x:242, a:42}, 42);
f({x:243, y:43}, 43);
f({x:244, z:44}, 44);
f({x:245, a:45}, 45);
f({x:246, y:46}, 46);
f({x:247, z:47}, 47);
f({x:248, a:48}, 48);
f({x:249, y:49}, 49);
f({x:250, z:50}, 50);
f({x:251, a:51}, 51);
f({x:252, y:52}, 52);
f({x:253, z:53}, 53);
f({x:254, a:54}, 54);
f({x:255, y:55}, 55);
f({x:256, z:56}, 56);
f({x:257, a:57}, 57);
f({x:258, y:58}, 58);
f({x:259, z:59}, 59);
f({x:260, a:60}, 60);
f({x:261, y:61}, 61);
f({x:262, z:62}, 62);
f({x:263, a:63}, 63);
f({x:264, y:64}, 64);
f({x:265, z:65}, 65);
f({x:266, a:66}, 66);
f({x:267, y:67}, 67);
f({x:268, z:68}, 68);
f({x:269, a:69}, 69);
pending…
calling megamorphic
f({x:210, a:10}, 10);
f({x:211, b:11}, 11);
f({x:212, c:12}, 12);
f({x:213, d:13}, 13);
f({x:214, e:14}, 14);
f({x:215, f:15}, 15);
f({x:216, g:16}, 16);
f({x:217, h:17}, 17);
f({x:218, i:18}, 18);
f({x:219, j:19}, 19);
f({x:220, k:20}, 20);
f({x:221, l:21}, 21);
f({x:222, m:22}, 22);
f({x:223, m:23}, 23);
f({x:224, o:24}, 24);
f({x:225, p:25}, 25);
f({x:226, q:26}, 26);
f({x:227, r:27}, 27);
f({x:228, s:28}, 28);
f({x:229, t:29}, 29);
f({x:230, u:30}, 30);
f({x:231, v:31}, 31);
f({x:232, w:32}, 32);
f({x:233, x:33}, 33);
f({x:234, y:34}, 34);
f({x:235, z:35}, 35);
f({x:236, aa:36}, 36);
f({x:237, ab:37}, 37);
f({x:238, ac:38}, 38);
f({x:239, ad:39}, 39);
f({x:240, ae:40}, 40);
f({x:241, af:41}, 41);
f({x:242, ag:42}, 42);
f({x:243, ah:43}, 43);
f({x:244, ai:44}, 44);
f({x:245, aj:45}, 45);
f({x:246, ak:46}, 46);
f({x:247, al:47}, 47);
f({x:248, am:48}, 48);
f({x:249, am:49}, 49);
f({x:250, ao:50}, 50);
f({x:251, ap:51}, 51);
f({x:252, aq:52}, 52);
f({x:253, ar:53}, 53);
f({x:254, as:54}, 54);
f({x:255, at:55}, 55);
f({x:256, au:56}, 56);
f({x:257, av:57}, 57);
f({x:258, aw:58}, 58);
f({x:259, ax:59}, 59);
f({x:260, ay:60}, 60);
f({x:261, az:61}, 61);
f({x:262, ba:62}, 62);
f({x:263, bb:63}, 63);
f({x:264, bc:64}, 64);
f({x:265, bd:65}, 65);
f({x:266, be:66}, 66);
f({x:267, bf:67}, 67);
f({x:268, bg:68}, 68);
f({x:269, bh:69}, 69);
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL.

0 Comments